完善资料让更多小伙伴认识你,还能领取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 } 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个回答
|
|
因为定时器的初始值有误差,造成累加越多,误差越大,所以就不准了
|
|
|
|
看不懂.。。。。。。。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
271 浏览 0 评论
298 浏览 0 评论
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
1942 浏览 3 评论
848 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
1009 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10879 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 01:21 , Processed in 0.618253 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191