2、程序编写
由于要把波形“发射”出去,需要对遥控码进行调制,调制即把遥控码的高电平和载波进行“与”,结果是连续发射一定数量的载波,而低电平则只需进行简单的延时即可。以SAA3010T编码为例,为双相位编码方式,“0”用844US高电平加844US低电平表示,“1”用844US低电平加844US高电平表示,根据上述原理,844US高电平和载波进行“与”,载波的频率为38KHz,周期为1/38k, 所以,结果是
32个完整载波+12us,另外,844US低电平只需用一个延时函数即可。由于程序不长且时间精度要求很高,所以用汇编来编程,程序如下:
发射“0”的子函数
;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA3010T;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SEND0: MOV R0, #20H
NEXT0: SETB REMOTE ; 844us=32个完整载波+12us
MOV R1, #03H ;发送正电平9us
DJNZ R1, $
NOP
CLR REMOTE ;发送负电平17us
MOV R1, #06H
DJNZ R1, $
NOP
DJNZ R0, NEXT0 ; 32个完整载波发送完毕
SETB REMOTE ;发送高电平9us
MOV R1, #03H
DJNZ R1, $
NOP
CLR REMOTE ;3us低电平
NOP
NOP
NOP
ACALL DELAY844US
RET
发射“1”的子函数
SEND1: MOV R0, #20H
CLR REMOTE ; 发送低电平844US
ACALL DELAY844US
NEXT1: SETB REMOTE ; 844us=32个完整载波+2US
MOV R1, #03H ; 发送正电平9us
DJNZ R1, $
NOP
CLR REMOTE ; 发送负电平17us
MOV R1, #06H
DJNZ R1, $
NOP
DJNZ R0, NEXT1 ; 32个完整载波发送完毕
SETB REMOTE ; 发送高电平9us
MOV R1, #03H
DJNZ R1, $
NOP
上一篇:生活小区无人驾驶班车自动运行系统