完善资料让更多小伙伴认识你,还能领取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
|
|
|
|
只有小组成员才能发言,加入小组>>
1286 浏览 0 评论
1400 浏览 1 评论
2848 浏览 5 评论
3137 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
3063 浏览 6 评论
1329浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
917浏览 1评论
901浏览 0评论
这个BSP包有基础的例程的,不懂的话,3284494788@qq.com我发给您吧
837浏览 0评论
1289浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-7-19 16:59 , Processed in 1.269373 second(s), Total 57, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191