完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
# include
#define uchar unsigned char # define led P1 //led接在P1口 # define Ton 40 //基准脉宽0.04ms uchar LEDflag = 0; //全局变量,最大255,保存T0中断次数 void init(); void led_on(); void main() { init(); while(1) { led_on(); } } void init() //定时器初始化 { TMOD = 0x02; //T0 方式2,8位自动载入 TH0 = 256 - Ton; //T0初始值 TL0 = 256 - Ton; //重载值 TR0 = 1; //启动T0 ET0 = 1; //开T0,T1中断 EA = 1; //全局中断允许 } void time0_int() interrupt 1 using 3 //T0中断函数,中断1,使用工作组3 { LEDflag++; //修改LEDflag } void led_on() { if(LEDflag == 0) // 点亮8个灯 { led = 0x00; } if(LEDflag == 12) // 熄灭1,3,5,7灯 { led = 0x55; } } 最后的程序不懂 ,为什么他可以不断的循环点亮熄灭,LEDflag什么时候被清零了? |
|
相关推荐
5个回答
|
|
云汉达人 因为是自动重装载的定时器呀,也就是隔一段时间进入中断函数给LEDFlag加1,但是你要注意到LEDFlag是uchar类型的哦~也就是说最大能够储存到255,再加的话就变成0啦~
|
|
|
|
云汉达人 楼上正解,中断里面一直在计数 超过255就自动清零了
|
|
|
|
!!!!!!!!!!!!!!!
|
|
|
|
|
|
|
|
LEDFlag使用了一个计数器,计数器满了就自动重新写入0
|
|
|
|
只有小组成员才能发言,加入小组>>
722 浏览 0 评论
1123 浏览 1 评论
2504 浏览 5 评论
2840 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2684 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
664浏览 9评论
679浏览 7评论
682浏览 5评论
665浏览 5评论
imx6dl芯片与imx6q芯片互换启动无反应请问是什么问题呢
280浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 13:26 , Processed in 1.101477 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号