完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人正在做一个RGB调光程序,用按键来选择模式,当按键在按下之后的0.8s内没有再次按下(count=120),如果有按键按下则再次ID++,直到在按键没有在0.8s内按下,就进入相应的模式,但我始终调不出那个按键,因为当我第一次按的时候能够正常显示,而后面就不能了,而且调光也不行,反复试验之后发现第一次之后定时器关闭,当我在其他的调光程序中没有TR0=0,或者ea=0啊,它自己关的实在奇怪
void KeyScan() { if (key == 0) { do{ delay(10); if (key == 0) ID++; while(key == 0); }while(count<120) ; SBUF=ID; while(!ti); TI=0; switch(ID%3) { case 0: zhinengmode(); break; case 1: gameover(); break; case 2: whitelight(); break; } } } void Timer0Interrupt() interrupt 1 { TH0 = 0xcb; //0b //9b TL0 = 0xea; N1++; N2++; N3++; if(N1==255)N1=0; if(N2==255)N2=0; if(N3==255)N3=0; count++; if(key==0) count=0; } |
|
相关推荐
5个回答
|
|
帮顶。。。。
|
|
|
|
|
|
以下是主程序,一开机就进入智能模式,然后根据按键次数来进入相应的模式
void main() { InitTimer(); E2Write(color , 0x20, sizeof(color)); while(1) { if(ID%3==0) zhinengmode(); KeyScan(); //按键扫描 } } |
|
|
|
新人求指点求帮助,各位大神。。谢谢
|
|
|
|
跟我的情况一样!我最近也在做这个,用的是51核的2530,定时器如果用自由模式可以正常运行,其他三种都会自动关定时器。我最后是在定时器中断里重新开启定时器,可以保证顺利运行,但是开定时器的操作一定得放在中断的第一句执行。
|
|
|
|
只有小组成员才能发言,加入小组>>
3126 浏览 9 评论
2826 浏览 16 评论
3337 浏览 1 评论
8708 浏览 16 评论
3930 浏览 18 评论
9545浏览 3评论
882浏览 3评论
453浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
453浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2174浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-18 19:03 , Processed in 0.641451 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号