完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
循环等待定时器中断后,累加次数只要一多,时间就不准,这是为什么?
HI,ALL 本来是红外发射码,但是发现只要定时器用得多了,就有问题,只能将代码一点一点删除,现在就剩下发38K脉冲持续500次,延时一段时间,再循环。实测38K持续时间忽长忽短,不知所以,请大侠解释一下。。 #include //#include ***it P1_1=P1^1; // LED static bit OP; //the turn on or off of the IR led ***it P1_3=P1^3; // IR pin static unsigned char flag; //the flag of IR emission static unsigned int lead_high; static unsigned int lead_low; static unsigned int count; //delay count static unsigned int endcount; //terminate count void SendIRdata(void); void timer0_int(void); void IR_transfer_test(void); void delay_100ms(int); void main(void) { IE=0x0; P1_1=0; //AUXR |= 0x80; //SET TIMER0 1T MODE P1M1 &= 0xF7; P1M0 |= 0x08; //SET P1_3 PUSH-PULL MODE timer0_int(); IR_transfer_test(); } void IR_transfer_test() { //int i; // int j; count=0; flag=0; OP=0; P1_3=0; lead_high=500; lead_low=500; do{ EA=1; SendIRdata(); EA=0; P1_3=0; delay_100ms(1); } while(1); } void SendIRdata() { endcount=lead_high; flag=1; count=0; //ET0=1;TR0 = 1; do{}while(count //TR0 = 0;ET0=0; //endcount=lead_low; //flag=0; // count=0; //ET0=1;TR0 = 1; //do{}while(count // TR0 = 0;ET0=0; } void timer0_int() { EA=1; AUXR |= 0x80; //定时器时钟1T模式 TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x02; //设置定时器模式 TL0 = 0x64; //设置定时初值 TH0 = 0x64; //设置定时重载值 TF0 = 0; //清除TF0标志 ET0=1; TR0 = 1; //定时器0开始计时 } void timeint(void) interrupt 1 { count++; if (flag==1) { OP=~OP; } else { OP = 0; } P1_3 = OP; } void delay_100ms(int k) { int i,j; for(k;k>0;k--) { for(i=0;i<150;i++) { for(j=0;j<100;j++); } } } |
|
相关推荐
2个回答
|
|
你在主循环中有一段程序关闭中断,(EA=0)。如果定时器触发中断时刚好中断被关闭,就会导致计时不准。。。。。
|
|
|
|
顶一下吧!
|
|
|
|
只有小组成员才能发言,加入小组>>
690 浏览 0 评论
1105 浏览 1 评论
2473 浏览 5 评论
2807 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2644 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
652浏览 9评论
648浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
779浏览 6评论
627浏览 5评论
667浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 19:40 , Processed in 1.025796 second(s), Total 81, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号