📄 红外解码7461,6122.dt
字号:
;;;; 测码器,7461,6121,6122
;;;; FOSC = 10MHZ
;;;; IC 447
;;;;延时?95为定时单元
IAR == 0X00
TCC == 0X01
STATUS == 0X03
C == 0
Z == 2
RSR == 0X04
PORT5 == 005
PORT6 == 0X06
PORT7 == 0X07
ISR == 0X3F
IOCE == 0X0E
IOCF == 0X0F
EX == 3 ;IOCF.3为外部中断
TC == 0 ;;IOCF.0为TCC中断使能
DNUM0 == 0X08
DNUM1 == 0X09
DNUM2 == 0X0A
HALLD == 0X0B ;;;;8BIT
DNUM == 0X0C
HALLBF == 0X10
P6BF == 0X16
P6BD == 0X17
P7BF == 0X18
P7BD == 0X19
XX == 0X1A
XA == 0X1B
XC == 0X1C
XD == 0X1D
XE == 0X1E
XF == 0X1F
UCODL == 0X22
UCODH == 0X23
KCOD == 0X24
ORG 0X00
JMP MAIN
ORG 0X01
JMP TCCINT
ORG 0X02
JMP SINT
MAIN: MOV A,@0X11
IOW IOCE ;;;WTD disable
MOV A,@0X00 ;;
IOW PORT6
IOW PORT7
MOV A,@0B00100000 ;;;P55 INPUT
IOW PORT5
MOV A,@0X01 ;;;;;
IOW IOCF
MOV A,@0XBB ;;TCC WRITE
MOV TCC,A
MOV A,@0B11000111 ;;;256 div分频
CONTW
ENI
;MOV A,@76 ;;;;100TIMES
;MOV TCNUM,A
;CALL D0.8MS
/*LO: MOV A,@0XFF
MOV PORT7,A
CALL DELAY1S
MOV A,@0X00
MOV PORT7,A
CALL DELAY1S*/
MOV A,@1
MOV 0X16,A
MOV 0X17,A
MOV 0X18,A
MOV 0X19,A
MOV A,@8
MOV HALLD,A;;;;;;;
MOV A,@0XFE
MOV 0X10,A
MOV A,@0X30
MOV 0X11,A
MOV A,@0X6D
MOV 0X12,A
MOV A,@0X79
MOV 0X13,A
MOV A,@0X33
MOV 0X14,A
MOV A,@0X5B
MOV 0X15,A ;;;;;DATA
MOV A,@0X00 ;;;;;SELECT
MOV 0X20,A
MOV A,@0X80
MOV 0X21,A
MOV A,@0X40
MOV 0X22,A
MOV A,@0XC0
MOV 0X23,A
MOV A,@0X20
MOV 0X24,A
MOV A,@0XA0
MOV 0X25,A
TEST: JBS PORT5,5 ;;;检测是否有红外信号
INT
JMP TEST
TCCINT: BC ISR,0
MOV A,@0X00
IOW PORT6
IOW PORT7
;DJZ TCNUM
;RETI
;MOV A,@76 ;;100 TIMES REWRITE
;MOV TCNUM,A
MOV A,P6BF
MOV RSR,A
MOV A,IAR
MOV PORT6,A
INC P6BF
DJZ P6BD
JMP OO
MOV A,@6
MOV P6BD,A
MOV A,@0X20
MOV P6BF,A
OO: MOV A,P7BF
MOV RSR,A
MOV A,IAR
MOV PORT7,A
INC P7BF
DJZ P7BD
JMP OP
MOV A,@6
MOV P7BD,A
MOV A,@0X10
MOV P7BF,A
OP: MOV A,@0XBB ;;TCC WRITE f=fosc/2/256/250 T=12.8ms
MOV TCC,A
RETI
;;;;;;SOFT INT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;*************************;;;;;;;;;;;;;;;
SINT: MOV A,@0X00
MOV PORT7,A
MOV A,@0X22
MOV RSR,A
MOV A,@8
MOV HALLD,A
MOV A,@3
MOV HALLBF,A
MOV A,@0X59;;89*0.1=8.9MS
MOV DNUM,A
LEAD1: CALL D0.1MS
JBC PORT5,5
RETI
DJZ DNUM
JMP LEAD1
;BS PORT5,7
;CALL DELAY0.2S
;BC PORT5,7
MOV A,@3 ;;;到8.9MS
MOV DNUM,A
LEAD11: CALL D0.1MS
JBS PORT5,5
JMP LEAD13
JMP T45MS
LEAD13: DJZ DNUM
JMP LEAD11
RETI ;9.2MS
T45MS: ;BS PORT5,7
;CALL DELAY0.2S
;BC PORT5,7
MOV A,@0X20 ;;9MS低电平已通过开始检4.5高电平
MOV DNUM,A
LEAD2: CALL D0.1MS
JBS PORT5,5
RETI
DJZ DNUM
JMP LEAD2
MOV A,@0X14 ;;
MOV DNUM,A
LEAD22: CALL D0.1MS
JBC PORT5,5
JMP LEAD23
BC 0X1A,0
JMP USER
LEAD23: DJZ DNUM
JMP LEAD22
RETI ;;4.8MS
;;;;;用户码开始
;MOV A,@0X22
;MOV RSR,A
USER: MOV A,@0X26
MOV RSR,A
;CALL USER13
CALL USCOD
MOV A,IAR
MOV 0X1B,A
MOV A,@0X27
MOV RSR,A
MOV A,0X1B
MOV IAR,A
MOV A,@0X26
MOV RSR,A
;CALL USER5
CALL USCOD
MOV A,IAR
MOV 0X1C,A
MOV A,@0X28
MOV RSR,A
MOV A,0X1C
MOV IAR,A
COMA IAR
XOR 0X1B,A
JBS STATUS,Z
JMP CK7461
MOV A,@0X26
MOV RSR,A
;CALL USER5
;CALL USCOD
CALL USCOD
MOV A,IAR
MOV 0X1B,A
MOV A,@0X29
MOV RSR,A
MOV A,0X1B
MOV IAR,A
JMP PLAY
CK7461: MOV A,@0X27
MOV RSR,A
MOV A,IAR
MOV 0X1B,A
JBS 0X1B,6
BC 0X1D,0
JBC 0X1B,6
BS 0X1D,0
JBS 0X1B,7
BC 0X1D,1
JBC 0X1B,7
BS 0X1D,1
JBS 0X1C,0
BC 0X1D,2
JBC 0X1C,0
BS 0X1D,2
JBS 0X1C,1
BC 0X1D,3
JBC 0X1C,1
BS 0X1D,3
JBS 0X1C,2
BC 0X1D,4
JBC 0X1C,2
BS 0X1D,4
JBS 0X1C,3
BC 0X1D,5
JBC 0X1C,3
BS 0X1D,5
JBS 0X1C,4
BC 0X1D,6
JBC 0X1C,4
BS 0X1D,6
MOV A,0X1D
AND A,@0X7F
MOV 0X1D,A
MOV A,@0X27
MOV RSR,A
MOV A,0X1D
MOV IAR,A
CALL USER3
CALL USER7
RRC IAR
BC IAR,7
MOV A,IAR
MOV 0X1D,A
MOV A,@0X28
MOV RSR,A
MOV A,0X1D
MOV IAR,A
CALL USCOD
MOV A,IAR
MOV 0X1D,A
MOV A,@0X29
MOV RSR,A
MOV A,0X1D
MOV IAR,A
JMP PLAY
USER3: MOV A,@0X03
MOV HALLD,A
JMP SST
USER7: MOV A,@0X07
MOV HALLD,A
JMP SST
USER5: MOV A,@0X05
MOV HALLD,A
BS 0X1A,0
JMP SST
USER13: MOV A,@0X0D
MOV HALLD,A
JMP SST
USCOD: MOV A,@0X26
MOV RSR,A
MOV A,@0X08
MOV HALLD,A
;BS PORT5,7
;CALL DELAY0.2S
;BC PORT5,7
SST: MOV A,@0X26
MOV RSR,A
RRC IAR
MOV A,@0X03 ;;SUCCESS 560US START
MOV DNUM,A
USE0: CALL D0.1MS
JBC PORT5,5
RET;
DJZ DNUM
JMP USE0
MOV A,@0X05 ;;;5
MOV DNUM,A
USE00: CALL D0.1MS
JBS PORT5,5
JMP USE01
JMP USCOD1
USE01: DJZ DNUM
JMP USE00
RET;
;;;完成560US低电平检测
;;;开始高电平检测
USCOD1: MOV A,@0X02
MOV DNUM,A
USE1: CALL D0.1MS
JBS PORT5,5
RET;
DJZ DNUM
JMP USE1
MOV A,@0X05 ;;500US
MOV DNUM,A
USE11: CALL D0.1MS
JBC PORT5,5
JMP USE12
JMP BIT0
USE12: DJZ DNUM
JMP USE11
JMP BIT1 ;;;;;;
;;;;;;HANDLE BIT0
BIT0: ;RRC IAR
BC IAR,7
/*JBC STATUS,C ;;保
JMP RR4 ;;存
BC 0X11,0 ;;标
JMP RR5 ;;志
RR4: BS 0X11,0 ;;位
RR5: NOP ;;CY/*/
JMP HALL
BIT1: MOV A,@0XA
MOV DNUM,A
BIT: CALL D0.1MS
JBC PORT5,5
JMP BIT11
JMP BT1 ;;;;;
BIT11: DJZ DNUM
JMP BIT
RET;
;;;;;BIT1 HANDLE
BT1: ;RRC IAR
BS IAR,7
;JMP HALL
/*JBC STATUS,C ;;;;;;;;;;
JMP RR3 ;;保存
BC 0X11,0 ;;标
JMP RR2 ;;志
RR3: BS 0X11,0 ;;位
RR2: NOP ;;CY*/
HALL: DJZ HALLD
JMP SST
NOP
/* JBC 0X11,0 ;;恢复
JMP RR1 ;;标志
BC STATUS,C ;;位
JMP RRRR ;;CY
RR1: BS STATUS,C ;;8*/
RRRR: ;RRC IAR;;;;;;;;;;;;;
JBC 0X1A,0
JMP B5BIT
RET
B5BIT: RRC IAR
RRC IAR
RRC IAR
BC IAR,5
BC IAR,6
BC IAR,7
RET
;INC RSR
;MOV A,@8
;MOV HALLD,A
;DJZ HALLBF
;JMP USCOD
PLAY: MOV A,@0X27
MOV RSR,A
;RRC IAR
MOV A,IAR
AND A,@0X0F
CALL SEGTAB
MOV 0X11,A
SWAP IAR
MOV A,IAR
AND A,@0X0F
CALL SEGTAB
MOV 0X10,A ;;;;
MOV A,@0X28
MOV RSR,A
;RRC IAR
MOV A,IAR
AND A,@0X0F
CALL SEGTAB
MOV 0X13,A
SWAP IAR
MOV A,IAR
AND A,@0X0F
CALL SEGTAB
MOV 0X12,A ;;;
MOV A,@0X29
MOV RSR,A
;RRC IAR
MOV A,IAR
AND A,@0X0F
CALL SEGTAB
MOV 0X15,A
SWAP IAR
MOV A,IAR
AND A,@0X0F
CALL SEGTAB
MOV 0X14,A ;;;;
BS PORT5,7
CALL DELAY0.2S
BC PORT5,7
RETI
;;;VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
NOP
NOP
NOP
BS PORT5,7
CALL DELAY0.2S
BC PORT5,7
MOV A,@0XFF
MOV 0X11,A
RETI
DELAY1S: MOV A,@0X1a ;;11CAN BE CHANGED ;;DELAY
MOV DNUM2,A
DE2: MOV A,@0XFF
MOV DNUM1,A
DE1: MOV A,@0XFF
MOV DNUM0,A
DE0: DJZ DNUM0
JMP DE0
DJZ DNUM1
JMP DE1
DJZ DNUM2
JMP DE2
RET
DELAY0.2S: MOV A,@0X03 ;;0.1秒
MOV DNUM2,A
DDE2: MOV A,@0XFF
MOV DNUM1,A
DDE1: MOV A,@0XFF
MOV DNUM0,A
DDE0: DJZ DNUM0
JMP DDE0
DJZ DNUM1
JMP DDE1
DJZ DNUM2
JMP DDE2
RET
D0.1MS: MOV A,@0XA5 ;0.2US*256*2 0.1024MS
MOV DNUM0,A
DE: DJZ DNUM0
JMP DE
RET
D0.8MS: MOV A,@0X08 ;;
MOV DNUM0,A
DEE0: MOV A,@0XA5 ;;0.2US*2*(248+2)*8
MOV DNUM1,A
DEE1: DJZ DNUM1
JMP DEE1
DJZ DNUM0
JMP DEE0
RET
D0.05MS: MOV A,@0X53
MOV DNUM0,A
DEE: DJZ DNUM0
JMP DEE
RET
DISPLAY: MOV A,@0 ;DISPLAY THE SOURCE IS XXXXX
CALL SEGTAB
MOV PORT7,A ;;;;;;;;;;;;;;
RET
SEGTAB: TBL
RETL 0B01111110 ;0;0XFE
RETL 0B00110000 ;1,0X30
RETL 0B01101101 ;2,0X6D
RETL 0B01111001 ;3,0X79
RETL 0B00110011 ;4 ;0X33
RETL 0B01011011 ;5,0X5B
RETL 0B01011111 ;6,0X5F
RETL 0B01110000 ;7,0X70
RETL 0B01111111 ;8,0X7F
RETL 0B01111011 ;9,0X7B
RETL 0B01110111 ;A
RETL 0B00011111 ;B
RETL 0B01001110 ;C
RETL 0B00111101 ;D
RETL 0B01001111 ;E
RETL 0B01000111 ;F
RETL 0B01111111 ;8
;;;;;;;;;;;;;;;;;;;;;
ORG 0XFFF
JMP 0X00
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -