📄 ht6221_sourse_codes.txt
字号:
; IR remote
; p1 LED display十位数, p2 LED display 个位数
; ir input=p3.3(interupt1)
ORG 0000H
AJMP MAIN
ORG 0013H
AJMP INT
MAIN: MOV SP,#40H
MOV P2,#00H ;十位数
MOV P0,#00H ;个位数
SETB EA
SETB IT1
SETB EX1
DSP: MOV R2,#32
MOV DPTR,#TAB1
VV: MOV A,R2
MOVC A,@A+DPTR
XRL A,1CH
JZ ABC
DJNZ R2,VV
ABC: MOV A,R2 ;开始显示个位数
MOV DPTR,#TAB0
MOVC A,@A+DPTR
RX1: MOV P0,A
RX2: MOV A,R2 ;开始显示十位数
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
AJMP DSP
INT: CLR EA
MOV R6,#10
SB: ACALL YS1
JB P3.3,EXIT
DJNZ R6,SB ;在9MS起始码内有低电平出现退出中断,
JNB P3.3,$
ACALL YS2
JB P3.3,EXIT ;在4.74MS时不为低电平退出中断
MOV R1,#1AH
MOV R2,#4
PP: MOV R3,#8
JJJJ: JNB P3.3,$
ACALL YS1 ;延时0.882秒,再判断是0还是1
MOV C,P3.3
JNC UUU
JB P3.3,$
UUU: MOV A,@R1 ;将C中的值读入(右移)组中
RRC A
MOV @R1,A
DJNZ R3,JJJJ ;移完8位?
INC R1 ;更换一个寄存器
DJNZ R2,PP; received all data?
MOV A,1AH
XRL A,#0 ;判断低8位地址码
JNZ EXI
MOV A,1BH
XRL A,#01110111B ;判断高8位地址码
JNZ EXI
MOV A,1CH
CPL A
XRL A,1DH ;判断数据码与其反码关系是否正确
JNZ EXI
AJMP EXIT
EXI: MOV 1CH,#0 ;三个判断其中有一个不对,就退出并将数据区清00
EXIT: SETB EA ;开中断并退出。
RETI
YS1: MOV R4,#20
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
TAB: DB 3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH ;0,0,0,0,0,0,0,0,0 10位数字
DB 3FH,06H,06H,06H,06H,06H,06H,06H ;0,1,1,1,1,1,1,1
DB 06H,06H,06H,5BH,5BH,5BH,5BH,5BH ;1,1,1,2,2,2,2,2
DB 5BH,5BH,5BH,5BH,5BH,4FH,4FH,4FH ;2,2,2,2,2,3,3,3
TAB0: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH ;0,1,2,3,4,5,6,7,8 个位数字
DB 67H,3FH,06H,5BH,4FH,66H,6DH,7DH ;9,0,1,2,3,4,5,6
DB 07H,7FH,67H,3FH,06H,5BH,4FH,66H ;7,8,9,0,1,2,3,4
DB 6DH,7DH,07H,7FH,67H,3FH,06H,5BH ;5,6,7,8,9,0,1,2
TAB1: DB 00H,01H,02H,03H,04H,05H,06H,07H ;键盘源值00--32
DB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FH
DB 10H,11H,12H,13H,14H,15H,16H,17H
DB 18H,19H,1AH,1BH,1CH,1DH,1EH,1FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -