📄 yaokong.a51
字号:
;用来进行遥控程序的产生,效果很好 4M晶振 AT89C2051
;里面有各个遥控码的遥控显示表
;$NOMOD51
NAME YAOKONG
P2_0 BIT 0B0H.5
IRdata EQU 20H
IRdir EQU 21H
IRda equ 22h
?PR?_yaokong?YAOKONG SEGMENT CODE
PUBLIC _yaokong
RSEG ?PR?_yaokong?YAOKONG
_yaokong:
CLR EA ;;;;
USING 0
MOV IRdata,R7
MOV IRdir,R5
mov IRda ,R3
send:
A0: SETB P2_0 ;P30
LCALL DLY400 ;同步码
CLR P2_0
LCALL DLY11600
MOV R1,#08H ;8位地址
MOV A,IRdata ;将地址码送入A
ACALL A2 ;发8位地址
MOV R1,#08H ;发4个数据脉冲
MOV A, IRdir ;数据码送入A
ACALL A2
MOV R1,#08H
MOV A,IRda
ACALL A2
SETB EA ;;;;;
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
A2: RLC A ;经过进位位的累加器循环左移
JC A3 ;如果进位位为1则转移
LCALL show0
SJMP A4
A3: LCALL show1
A4: DJNZ R1,A2 ;寄存器减1,不为0则转移
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DLY11600: ;延时11600us
MOV R4,#37;3US
DLY900:
MOV R3,#50;3US
NOP;3US
DLY901:
DJNZ R3,DLY901;6US
DJNZ R4,DLY900;(50*6+6+6)*37=11544us
MOV R3,#6;3US
DLY902:
DJNZ R3,DLY902;6*6+3=39;
RET
DLY400: ;延时400微秒
MOV R4,#4;3US
DLY560:
MOV R3,#14
NOP
DLY561:
DJNZ R3,DLY561
DJNZ R4,DLY560;(14*6+6+6)*4=384us
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DLY1200:;延时1200微秒
MOV R4,#12;1US
DLY1690:
MOV R3,#14
NOP
DLY1691:
DJNZ R3,DLY1691
DJNZ R4,DLY1690;(14*6+6+6)*12=1152us
MOV R3,#6;3US
DLY1692:
DJNZ R3,DLY1692;6*6+3=39;
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
show1: ;总共3.2ms ;输出"1"码,两个宽脉冲
SETB P2_0
LCALL DLY1200 ;高电平1.2MS
CLR P2_0
LCALL DLY400 ;低电平0.4MS
;SETB P2_0
;LCALL DLY1200
;CLR P2_0
;LCALL DLY400
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
show0: ;输出"0"码,两个窄脉冲
SETB P2_0
LCALL DLY400
CLR P2_0
LCALL DLY1200
;SETB P2_0
;LCALL DLY400
;CLR P2_0
;LCALL DLY1200
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -