LJMP MAIN1
ORG 003H
LJMP INT0
ORG 030H
MIAN1:MOV P1,#0FFH
NOP
NOP
MOV P1,#00H
MOV P0,#0FFH
NOP
NOP
MOV P0,#00H
CLR 00H
CLR P1.0
CLR P2.1
CLR P2.3
CLR P2.2
SETB EA
SETB EX0
SETB EX1
SETB PX0
SJMP $
INTO:CPL OOH
JNB 00H ,KK
LJMP YAO
KK:LJMP XUNJI
RETI
YAO:MOV A,P1 遥控判断
ANL A,#0FH
MOV P1,A
CJNE A,#01H,NC1
LCALL ST
NC1:CJNE A,#02H,NC2
LCALL LEF2
NC2:CJNE A,#04H,NC3
LCALL RIG2
NC3:LJMP YAO
XUNJI:JNB P1.3,N1
LCALL ST
N1:JNB P1.2, N2
LCALL LEF1
N2:JNB P1.4,N3
LCALL RIG1
N3:JNB P1.0,N4
LCALL LEF2
N4:JNB P1.5,N5
LCALL RIG2
N5:LJMP XUNJI
ST:SETB P2.1
SETB P2.3
MOV R2,#可变驱动时虚凯间
LCALL DEL1
CLR P2.1
CLR P2.3
RET
LEF1:SETB P2.3
MOV R2,#
LCALL DEL1
CLR P2.3
RET
RIG1:SETB P2.1
MOV R2,#
LCALL DEL1
CLR P2.1
RET
LEF2:SETB P2.3
MOV R2,# 二级判断
LCALL DEL1
CLR P2.3
RET
RIG2:SETB P2.1
MOV R2,#
LCALL DEL1
CLR P2.1
RET
DEL1:MOV R3,#90 定州仿时约100ms,可精调
DD2:差迹唤MOV R4,#50
DD3,MOV R5,#10
DJNZ R5,$
DJNZ R4,DD3
DJNZ R3,DD2
DJNZ R2,DEL1
RET
给你一段430单片机遥控器解码的程序吧,也就是接收部分毕竟世界太现实只能这么帮你
#ifndef _IR_
#define _IR_
char t0,t1,t2
uchar IR
void DelayIR()
{
uint i=130
while(i--)
}
void init_port2(void)
{
P2DIR&=~BIT0
P2SEL&=~BIT0
P2IES|=BIT0
P2IE|=BIT0
}
#pragma vector=PORT2_VECTOR
__interrupt void PORT2_ISR(void)
{
char CounterIR
P2IES&=~BIT0
if(P2IFG&BIT0)
{
P2IFG&=~BIT0
}
CounterIR=0
while(!(P2IN&BIT0))
{
DelayIR()
CounterIR++
}
if(CounterIR>85)
{
if(CounterIR<95)
{
t1++
for(char k=0k<17k++)
{
CounterIR=0
while((P2IN&BIT0)&&(CounterIR<50))
{
DelayIR()
CounterIR++
}
CounterIR=0
while((!(P2IN&BIT0))&&(CounterIR<10))
{
DelayIR()
CounterIR++
}
}
for(char j=0j<8j++)
{
CounterIR=0
while((P2IN&BIT0)&&(CounterIR<25))
{
DelayIR()
CounterIR++
}
IR<<=1
if(CounterIR>11)
IR|=BIT0
CounterIR=0
while((!(P2IN&BIT0))&&(CounterIR<10))
{
DelayIR()
CounterIR++
}
}
if((IR!=0xff)&&(IR!=0x00))
{
if(!(flag&dataflag))
{
if(IR==0x22)
{
flag|=runflag
}
else
{
Tar[0]=Tar[1]
Tar[1]=Tar[2]
Tar[2]=Tar[3]
Tar[3]=Tar[4]
switch (IR)
{
//case 0x22 : flag|=runflagbreak
case 0x68 : Tar[4]=0flag|=dataflagbreak
case 0x30 : Tar[4]=1flag|=dataflagbreak
case 0x18 : Tar[4]=2flag|=dataflagt2++break
case 0x7a : Tar[4]=3flag|=dataflagbreak
case 0x10 : Tar[4]=4flag|=dataflagbreak
case 0x38 : Tar[4]=5flag|=dataflagbreak
case 0x5a : Tar[4]=6flag|=dataflagbreak
case 0x42 : Tar[4]=7flag|=dataflagbreak
case 0x4a : Tar[4]=8flag|=dataflagbreak
case 0x52 : Tar[4]=9flag|=dataflagbreak
default : break
}
}
}
}
IR=0
}
}
for(int m=0m<250m++)
DelayIR()
P2IES|=BIT0
}
#endif
请采纳。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)