接收程序 #include<AT89X51.h> #define uchar unsigned char #define uint unsigned int uchar data IRcode[4]; //定義一個(gè)4字節(jié)的數(shù)組用來(lái)存儲(chǔ)代碼 uchar CodeTemp; //編碼字節(jié)緩存變量 uchar i,j,k; //延時(shí)用的循環(huán)變量 uchar dat=0; uchar num; uint time; sbit led1=P1^0; sbit led2=P1^1; sbit led3=P1^2; sbit led4=P1^3; sbit led5=P1^4; sbit led6=P1^5; sbit led7=P1^6; sbit led8=P1^7 sbit IRsignal=P3^2; //HS0038接收頭OUT端直接連P3.2(INT0) void delay(uint z); void delay(uint z) { uint a,b; for(a=z;a>0;a--) for(b=120;b>0;b--); } /**************************延時(shí)0.9ms子程序**********************/ void Delay0_9ms(void) {uchar j,k; for(j=18;j>0;j--) for(k=20;k>0;k--) ; } /***************************延時(shí)1ms子程序**********************/ void Delay1ms(void) {uchar i,j; for(i=2;i>0;i--) for(j=230;j>0;j--) ; } /***************************延時(shí)4.5ms子程序**********************/ void Delay4_5ms(void) {uchar i,j; for(i=10;i>0;i--) for(j=225;j>0;j--) ; } /**************************** 延時(shí)子程序 ************************/ /************************中斷0解碼服務(wù)子程序**********************/ void int0(void) interrupt 0 using 2 { EX0=0; P3_0=!P3_0; num=0; for(k=0;k<4;k++) { Delay0_9ms(); if (IRsignal==1) //如果0.9ms后IRsignal=1,說(shuō)明不是引導(dǎo)碼 { k=4; break; //P0=0XFF; } else if(k==2) //如果持續(xù)了3×0.9ms=9ms的低電平,說(shuō)明是引導(dǎo)碼 { //P0=0; time=0; num=0; while(IRsignal==0); //if(IRsignal==0) // num+=1; // P1=num; // while(IRsignal==0); while(time<100) { time++; Delay0_9ms(); //跳過(guò)持續(xù)1ms的高電平 Delay0_9ms(); //跳過(guò)持續(xù)1ms的高電平 if(IRsignal==0) { P0=num; num+=1; //P1=num; } while(IRsignal==0); }
if(num==1) led1=!led1; if(num==2) led2=!led2; if(num==3) led3=!led3; if(num==4) led4=!led4; if(num==5) led5=!led5; if(num==6) led6=!led6; if(num==7) led7=!led7; if(num==8) led8=!led8; break; // delay(2); } } EX0=1; } void init()// 定時(shí)器初始化 { TMOD=0x11; EA=1; IT0=1; //INT0為負(fù)邊沿觸發(fā), (1:負(fù)邊沿觸發(fā),0:低電平觸發(fā)) EX0=1; //外部中斷INT0開(kāi), (1:開(kāi), 0:關(guān) ) CodeTemp=0; //初始化紅外編碼字節(jié)緩存變量 } main() { init(); while(1) { } } 求求各位大佬看看我這個(gè)為什么接收端沒(méi)有顯示
|