//51 单片机用红外接收程序,晶振 12MHZ,P0 口输出(自己更改)将流水灯接至 P0 口,//从 P0.7 读至 P0.0,共阳灯亮为 0,灭为 1,共阴灯,亮为 1,灭为 0,读取的 8 位码即为//遥控器对应键值的编码已经过测试萌兔商城:http://www.mengtu37.com #include #include #define uchar unsigned char#define uint unsigned int//#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};void delay(uchar x); //x*0.14MSvoid delay1(int ms);sbit IRIN = P3^2; uchar IRCOM[7];main(){ uchar m; IRIN=1; delay1(10); m = 0; IE = 0x81; TCON = 0x01; while(1){ P0=IRCOM[2];//程序输出口};}void IR_IN() interrupt 0 using 0{ unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN==1) { EX0 =1; return; } while (!IRIN) {delay(1);} for (j=0;j<4;j++) { for (k=0;k<8;k++) { while (IRIN) {delay(1);} while (!IRIN) {delay(1);} while (IRIN) { delay(1); N++; if (N>=30) { EX0=1; return;} } IRCOM[j]=IRCOM[j] >> 1; if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} N=0; } } /* if (IRCOM[2]!=~IRCOM[3]) { EX0=1; return; } */ EX0=1;} void delay(unsigned char x) //x*0.14MS{ unsigned char i; while(x--) { for (i = 0; i<13; i++) {} }}void delay1(int ms){ unsigned char y; while(ms--) { for(y = 0; y<250; y++) { _nop_(); _nop_(); _nop_(); _nop_(); } }} 萌兔商城:http://www.mengtu37.com