日志档案

发表于 2008-7-15 9:59:30

4

标签: 无标签

基于51系列单片机对PT2262的软件解码

由于网上很多对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

系统分类: 单片机   |   用户分类: 无分类   |   来源: 无分类   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(421)    回复(1)  

投一票您将和博主都有获奖机会!

最新评论

  • z_jj

    2008-7-21 8:00:21

    绝对好用