【Proteus仿真】多路非阻塞延时流水灯演示
【Proteus仿真】多路非阻塞延时流水灯演示
【Proteus仿真】多路非阻塞延时流水灯演示
- 🌻Proteus仿真演示

🌼功能说明
📜51单片机利用定时器轮询设置2路不同长度的延时时间,跑流水灯。
📓实现方法
📑利用定时器中断,创建一个以1毫秒为时基的定时器中断函数。在需要不同时间的定时长度时,就设置一个定时的标量,当使能这个被定义的标量后,定时器每隔1毫秒就进入中断服务函数里面查询并累加计数,当累计计数达到标量值时就将对应的标量标志位置1,然后只要在主循环中查询该标量标志位是否值1从而实现非阻塞定时的功能。
- ✅定时器中断服务函数
1 | void time0\_isr() interrupt 1 using 0 |
✨当然也可以直接在定时器中断服务函数里面直接进行标志位查询,以减少定义的变量多,但是这样的运算会降低精度。
1 | void time0\_isr() interrupt 1 using 0 |
📝主函数代码
1 | #include "time.h" |
📚程序源码和仿真资源
1 | 链接:https://pan.baidu.com/s/19mcG9hdqiuo3FciJAMgnCg |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 秋意寒!
评论