由于网上很多对PT2262的软件解码程序都不太好用,同时也为了那些需要此程序的朋友少走弯路,因此将我产品中一直使用的该段程序告知大家。该子程序可以用循环的主程序直接调用,当然也可用于中断。由于PT2262的解码芯片PT2272是有很多局限性的,因此该子程序可以让你达到前所未有的高度。
请勿用于不法用途,否则后果自负。
;======= 模拟 pt2272 接收 单片机晶振f=11.0592MHz ===============================
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
;--------------------------------------------------------------------
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
QQ: 625377583
手机: (0)15051122286
用户377235 2012-9-19 19:22
用户377373 2011-9-30 21:04
用户287525 2011-1-7 13:27
用户242117 2009-11-1 16:37
用户1382068 2008-7-21 08:00