完善资料让更多小伙伴认识你,还能领取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
|
|
|
|
只有小组成员才能发言,加入小组>>
934 浏览 0 评论
1237 浏览 1 评论
2600 浏览 5 评论
2937 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2801 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1343浏览 3评论
247浏览 2评论
520浏览 2评论
429浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
505浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-23 17:20 , Processed in 1.108571 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191