org 0000H
ljmp ppp
PT_dalay:
MOV B,#42 ;pt2262振荡电阻r=4.7M,pt2260为 r="10M时的延时",
DJNZ B ,$ ;其它电阻R= X(M) 时,B=42*X/4.7
INC R7
RET
NOP
;--------------------------------------------------------------------
ppp:
pt2272_P EQU P3.6 ;可以使用任意I/O
pt2272:
JB pt2272_P,$+5
RET
NOP
;--------- 测 同 步 码 ----------------
MOV R7,#0
syn :
JNB pt2272_P, syn0
LCALL PT_dalay
MOV A, R7
ADD A,#18
JNC syn
; ajmp exit
NOP
syn0:
MOV R7,#0
syn1:
JB pt2272_P,syn2
LCALL PT_dalay
MOV A,R7
ADD A,#100
JNC syn1
; ajmp exit
NOP
syn2:
MOV A,R7
SUBB A,#22
JNC addr_data ;同步码成功转测地址和数据
; ajmp exit ;不成功退出
NOP
;------ 测 地 址 和 数 据--------------------------------
addr_data:
MOV R6,#24
a_d_loop:
MOV R7,#0
a_d_0:
JNB pt2272_P, a_d_1
LCALL PT_dalay
MOV A,R7
ADD A,#240
JNC a_d_0
; ajmp exit
; RET
NOP
a_d_1: ;1
MOV A,R7
SUBB A,#2
JNC $+5
; ajmp exit
NOP
SUBB A,#4
JNC a_d_2
CLR C
SJMP a_d_4
NOP
a_d_2:
SUBB A,#1
JNC $+5
; ajmp exit
NOP
SETB C
a_d_4:
MOV A,22h ;22h-- 数据
RLC A
MOV 22h,A
MOV A,21h ;21h-- 地址 低8位
RLC A
MOV 21h,A
MOV A,20h ;20h-- 地址 高8位
RLC A
MOV 20h,A
MOV R7,#0
a_d_5:
JB pt2272_P,a_d_6
LCALL PT_dalay
MOV A,R7
ADD A,#240
JNC a_d_5
; ajmp exit
NOP
a_d_6:
MOV A,R7
SUBB A,#2
JNC $+5
; ajmp exit
NOP
DJNZ R6,a_d_loop
;---- 地址 由 3 进制数 转成 10 进制 -------
NOP
MOV R5,#2
MOV R6,#1
MOV R7,#4
MOV R0,#20h
addr_loop:
MOV A,@R0
MOV R2,A
MOV R4,#0
addr_lp:
MOV A,R2
ANL A,#3
MOV B,A
XRL A,#2
JNZ $+5
ajmp exit
NOP
MOV A,B
XRL A,#3
JNZ $+4
DEC B
MOV A,R6
MUL AB
ADD A,R4
MOV R4,A
MOV A,#3
MOV B,R6
MUL AB
MOV R6,A
MOV A,R2
RR A
RR A
MOV R2,A
DJNZ R7,addr_lp
MOV A,R4
MOV @R0,A
MOV R6,#1
MOV R7 ,#4
INC R0
DJNZ R5,addr_loop
;---- 数据 由 3 进制数 转成 10 进制 -------
NOP
MOV R0,#22h ;
MOV R6,#1
MOV R7,#4
MOV A,@R0
MOV R2,A
MOV R4,#0
data_loop:
MOV A,R2
ANL A,#3
MOV B,A
XRL A,#0
JZ data_0
MOV A,B
XRL A,#3
JZ $+5
ajmp exit
NOP
DEC B
DEC B
data_0:
MOV A,R6
MUL AB
ADD A,R4
MOV R4,A
MOV A,R6
RL A
MOV R6,A
MOV A,R2
RR A
RR A
MOV R2,A
DJNZ R7,data_loop
MOV A,R4
MOV @R0,A
exit:
; ret
nop
ajmp pt2272
end
(本文引自www.mcujl.com/article.asp?conID=464)