单片机红外遥控程序
问题在程序的注释部分。 用中断底电平触发怎么没写IT0=1呢?请帮忙看看。 还有能不能说说在接收红外解码过程中,中断是怎么工作的?如接收头接收到数据给P3^2时就产生中断,说说这一系列的中断过程吧?拜托了! void interrupt_ISR() interrupt 0 { EX0=0; //D is able INT 0 TR0=0; //D is able Timer0 IRint=1; //为什么要把IRint置1(IRint接MCU单片机 P3^2) interval=TH0; TH0=0xb0; //怎么算得TH0的值? TL0=0; TR0=1; //Enable Timer0 EX0=1; //Enable INT0 } bit IRdecode() { static Idata BYTE INTcount=0; //这里可以用uchar INTcount;INTcount=0;代替吗? static ulong idata IRdata=0; BYTE IRdata1,IRdata2,IRdata3,IRdata4; if(IRint) { if((interval>0xde)&&(interval<0xe1)) //0xdfe2=13.5ms { IRdata=0; INTcount=0; } else if((interval>0xb6)&&(interval<0xb9)) //0xb7fb=2.25ms(data=1) { IRdata=(IRdata<<1)+1; INTcount++; } else if((interval>0xb2)&&(interval<0xb5)) //0xb3fd=1.125ms(data=0) { IRdata=IRdata<<1; INTcount++; } else if((interval>0xd6)&&(interval<0xd9)) //0xd7e7=11.25ms { IRint=0; IRdata=0; IRcommanddata=0xff; //repeat重复 code flag有什么意义吗? return 1; 返回1值到哪去? } else { INTcount=33; IRdata=0; } IRint=0; if(INTcount==32) { IRdata1=(BYTE)(IRdata>>24); //这部分是什么意思,有什么作用? IRdata2=(BYTE)(IRdata>>16); IRdata3=(BYTE)(IRdata>>8); IRdata4=(BYTE)(IRdata); IRdata=0; if(IRdata4==~IRdata3) { IRcommanddata=IRdata3; //还原命令成功 return 1; } else return 0; } else return 0; } return 0; 返回值0给谁?? } #include<reg52.h> void main() { TH0=0XB0; EA=0; ET0=1; //Enable Timer0 interrupt TMOD=0x21;//定时器0,工作模式1;定时器1,工作模式2(8位自动重装) 为什么要启用两个定时器?? TCON=0x50; //TR0=TR1=1,start timers EA=1; while(1) { } }
红外遥控,世纪上是串口程序 你写段串口的接收程序看看吧!!!
答:建立了一个统计表,自动汇总。 请看附件。详情>>
答:这是很正常的开机上电自检!没必要紧张!详情>>
问:我的惠普打印机安装WINDOWS打印机软件时搜索了HP Deskjet D240...
答:HP官方驱动下载,只要填上你打印机的型号就能找到合适的驱动。详情>>