完善资料让更多小伙伴认识你,还能领取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最后编译出来的汇编代码是不一样的
|
|
|
|
只有小组成员才能发言,加入小组>>
3102 浏览 9 评论
2795 浏览 16 评论
3306 浏览 1 评论
8658 浏览 16 评论
3901 浏览 18 评论
9519浏览 3评论
825浏览 3评论
416浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
417浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2149浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-4 07:18 , Processed in 2.090331 second(s), Total 83, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191