当前位置:网站首页 > 编程语言 > 正文

单片机程序编写流水灯代码(单片机流水灯程序汇编有解释)



实现功能:

1、自动流水灯:在LED1~LED4上实现自动流水灯,流水间隔时间为200ms/bit,然后通过按键KEY1改变流水灯的速度,每次按键间隔时间增加200ms:当间隔时间增加到1s后(蜂鸣器报警),再次按键间隔时间恢复为初始值200ms。//注:按键同通过中断实现

2、手动流水灯功能:通过按键KEY1控制流水灯一位,每次按键流水灯移动一位,可循环实现。//(1)、在新的程序中实现,不涵盖上题功能。(2)按键通过中断实现

3、综合流水灯:1)通过按键KEY2实现自动流水灯和手动流水灯两种模式的切换。初始模式为自动流水灯模式。当处于自动流水灯模式时,KEY1用于改变流水灯速度,如1题所述。当处于手动流水灯模式时,KEY1用于控制流水灯移位,如2提所述。//注:所有按键用中断实现,延时采用定时器中断实现,操作稳定,可循环实现,对按键抖动和按键时间具有鲁棒性。

对于功能1的实现,我书写的中断内容为:

然后功能实现程序如下图所示:

注意:time_flag是全局变量,并且在h文件中用“extern”修饰,便可在外部调用了

然后实现函数如下:

然后在主函数中调用LED_Base_200ms即可

对于功能二实现,还是上面的那个中断程序,但是考虑到,由于用按键触发中断,因此还是会存在一定的抖动,我们就使用非滴答时钟写的延时程序消抖,就普通用循环来消抖,注意最好不用滴答时钟写的延时程序,具体原因由于学的不精,不能解释,如果有大佬可以解释一下,感激不尽。

然后还是通过标志位来调用灯的亮灭,具体函数如下所示

然后在主函数中调用flag_Cont();即可实现

对于功能3的实现,就更容易了,首先定义一个模式选择器,全局外部变量哦;然后中断函数是这样写的

然后模式选择器函数是这样写的

后面就可在主程序中调用flag_Control();

到此这篇单片机程序编写流水灯代码(单片机流水灯程序汇编有解释)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 多级列表怎么自动编号(如何多级列表自动编号)2025-05-27 14:27:07
  • 本机删除的信息在哪里能找回(删除的手机信息在哪找)2025-05-27 14:27:07
  • 上一页 书页/目录 下一章(上一章 目录 设置)2025-05-27 14:27:07
  • ovns电子烟是谁家的(ovnle电子烟)2025-05-27 14:27:07
  • bfs广度优先搜索(广度优先搜索策略流程)2025-05-27 14:27:07
  • 卡巴斯基自动更新(卡巴斯基安卓中文版怎么更新)2025-05-27 14:27:07
  • -bash:unzip:未找到命令(bash ll 未找到命令)2025-05-27 14:27:07
  • gitee镜像仓库(gitbook镜像)2025-05-27 14:27:07
  • github 国内访问(github国内访问网址)2025-05-27 14:27:07
  • 免费代码网站推荐(免费代码网站推荐下载)2025-05-27 14:27:07
  • 全屏图片