• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

使用上位机发送命令打断单片机当前正在执行的命令该怎么做?

前功尽弃 2021-01-04 浏览量:668
使用一个按键控制两个灯,按键按第一次,红灯亮一段时间熄灭,按键按第二次,黄灯亮一段时间熄灭,两个灯亮的时间长短由上位机通过串口向单片机发送数据来决定,上位机输入有两个命令,001  1000为设置延时时间,010为紧急停止,想实现在灯亮的时候,发送010,就可以熄灭灯,而不是等到延时完再熄灭,但是在我的程序中,当按键按下,灯持续亮的过程中,发送010并不能让等立即熄灭,而是等延时时间完成才会熄灭灯,请问各位前辈,该怎么做,才能实现紧急停止呢?请各位前辈指点一二,以下是我的while循环中的程序。 mg id="aimg_178113" aid="178113" src="http://www.openedv.com/data/attachment/forum/202101/03/163328hz0f802r4g488jjw.jpg" data-ke-src="http://www.openedv.com/data/attachment/forum/202101/03/163328hz0f802r4g488jjw.jpg" zoomfile="data/attachment/forum/202101/03/163328hz0f802r4g488jjw.jpg" file="data/attachment/forum/202101/03/163328hz0f802r4g488jjw.jpg" class="zoom" data-ke-onclick="zoom(this this.src 0 0 0)" width="467"> mg id="aimg_178114" aid="178114" src="http://www.openedv.com/data/attachment/forum/202101/03/163328l6gjn39jl9ljdnj6.jpg" data-ke-src="http://www.openedv.com/data/attachment/forum/202101/03/163328l6gjn39jl9ljdnj6.jpg" zoomfile="data/attachment/forum/202101/03/163328l6gjn39jl9ljdnj6.jpg" file="data/attachment/forum/202101/03/163328l6gjn39jl9ljdnj6.jpg" class="zoom" data-ke-onclick="zoom(this this.src 0 0 0)" width="311">
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个问题是代码思路的问题,可以考虑使用状态机思维来设计流程。

    LED亮不同的灯定义为不同的状态,状态之间的切换可以是按键触发,也可以是定时器触发,也可以是串口指令来触发,避免使用基于循环空指令实现的delay函数。

    • 发布于 2021-01-04
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 在单片机中使用串口中断,串口中断里判断调用哪个程序的标志,在主函数中通过标志判断哪个任务运行
    • 发布于2021-01-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 按键那里通过中断实现,而不是判断电平,中断触发之后将一个标志变量置1,然后主循环每次执行点灯时判断磁标志变量
    • 发布于2021-01-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

使用上位机发送命令打断单片机当前正在执行的命令该怎么做?