完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
/**************************************
定时器中断初始化 ***************************************/ void timer_Init(void) { TMOD = 0x01; // 采用T0方式 TH0 = (65536-45872)/256; TL0 = (65536-45872)%256; // 定时的时间 ET0 = 1; //定时器T0中断允许位 TR0 = 1; //启动定时器 EA = 1; //CPU中断允许(总允许)位 } /**************************************** 定时器0溢出中断 ****************************************/ void Timer0(void) interrupt 1 using 1 { TH0 = (65536-45872)/256; TL0 = (65536-45872)%256; num++; if(num == 20) { TR0 = 0; //初始化定时器 if(key0 == 1) { #ifdef _DEVICEFLAG_ Delay_ms(20); if(key0 == 0) //按键2 { ControlFlag = 2; } else if(key0 == 1) { ControlFlag = 1; } #else if(key0 == 1) { ControlFlag = 1; } #endif } num = 0; TR0 = 1; //启动定时器 } } 单片机为at89c51,要实现的功能是短按(小于2s),长按(大于3s),这个程序怎么只能执行长按啊?还有那个num=20不是执行的循环?求教 |
|
相关推荐
3个回答
|
|
|
好的,thanks!
|
|
|
|
|
|
这不是条件编译,要不要都可以的吧
|
|
|
|
|
|
这里是条件编译,我试了,有#ifdef _DEVICEFLAG和没有#ifdef _DEVICEFLAG最后编译出来的汇编代码是不一样的
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1599 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4738 浏览 0 评论
4229 浏览 9 评论
3822 浏览 16 评论
4398 浏览 1 评论
4208浏览 3评论
2379浏览 0评论
3393浏览 0评论
1158浏览 0评论
2843浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 17:48 , Processed in 0.639907 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
11041