阿锦
管理员
管理员
  • 金钱419320RMB
  • 威望212480点
  • 贡献值122点
  • CAV币0点
阅读:1760回复:5

软件模拟PT2272解码程序[作者:蓝妮雅]

楼主#
更多 发布于:2004-02-03 05:18
;软件解码程序(仿真PT2272)               ;
;晶体频率为11.0592Mhz
;本程序中的时间定位关系只适用于接3.3M振荡电阻的PT2262解码
;使用其它阻值电阻时,应将定位时间按电阻比例缩放
;下面的程序中 REM 为信号输入端
;RECEIVE        检测到有效信号标志位
;ENABLE_DETE    连续按键标志
;3AH,3BH用作定时器                      ;
;PT2262共12根地址线                     ;
;31H,32H:接收的前8 位地址编码           ;
;33H,30H:接收的后4 位地址编码(若最后4位用作数据端,则只须读第33H单元的内容即可)
;当用作数据端时,PT2262对应脚悬空被认为是低电平。
;地址数据说明                           ;
;以31H.0 和32H.0 为例                   ;
;悬空 : 31H.0=0 32H.0=1                 ;
;    1: 31H.0=1 32H.0=1                 ;
;    0: 31H.0=0 32H.0=0                 ;
;出错   31H.0=1 32H.0=0                 ;
;
;说明:为了能可靠检测到有效信号,建议每次接收至少检测3次,然后比较3次检测值
;3次值相同才认为收到了正确信号。可在主程序中如下处理:第1次检测时调用REMOTE
;第2、3次检测时调用REMOTES,请注意必需连续调用,否则得不到正确的数据
;
;注意:将T1设定为16位定时器,允许中断,否则将导致接收数据错误
;---------------------------------------;
REMOTE:                                 ;
        CLR     RECEIVE                 ;
;检测50ms 内有没有编码接收              ;
        MOV     3AH,#55                 ;
REMOTEA:                                ;
        MOV     3BH,#250                ;
REMOTEB:                                ;
        JB      REM,REMOTE0             ;有码发送则跳转
        DJNZ    3BH,REMOTEB             ;
        DJNZ    3AH,REMOTEA             ;
REMOTE_END_1:                           ;
        CLR     ENABLE_DETE             ;
REMOTE_END:                             ;
        CLR     REMOTING                ;清除探头检测标志
        RET                             ;
REMOTE0:                                ;
        JB      ENABLE_DETE,REMOTE_END_1;按键没有放开则返回
REMOTES:
        MOV     34H,#12                 ;接收12位编码
;解码                                   ;
;先找出接收码的开头即10ms 左右的高电平  ;
;设置高电平时间为8~12ms                 ;
;检测和等待8ms 的低电平,70ms门限        ;
        CLR     T_OVER                  ;
        MOV     TH1,#00H                ;
        MOV     TL1,#00H                ;
        SETB    TR1                     ;
REMOTE1:                                ;
        MOV     3AH,#50                 ;
REMOTE2:                                ;
        MOV     3BH,#25                 ;
REMOTE3:                                ;
        JB      REM,REMOTE1             ;
        JB      T_OVER,REMOTE_END       ;
        DJNZ    3BH,REMOTE3             ;
        DJNZ    3AH,REMOTE2             ;
                                        ;
;等待在4ms 内接收到的高电平             ;
        CLR     T_OVER                  ;
        MOV     TH1,#0F1H               ;
        MOV     TL1,#0F0H               ;
        SETB    TR1                     ;
REMOTE_4:                               ;
        JB      T_OVER,REMOTE_5         ;
        JNB     REM,REMOTE_4            ;
        CLR     TR1                     ;
        AJMP    REMOTE6                 ;
;超出12ms 接收错误返回                  ;
REMOTE_5:                               ;
        AJMP    REMOTE_END              ;
REMOTE6:                                ;
;等待550us 后采集接收信号               ;
        MOV     3AH,#00                 ;
        DJNZ    3AH,$                   ;
;采集接收信号并记录                     ;
        MOV     C,REM                   ;
        MOV     A,33H                   ;
        RLC     A                       ;
        MOV     33H,A                   ;
        MOV     A,31H                   ;
        RLC     A                       ;
        MOV     31H,A                   ;
;等待第二个上升沿,限时1.5ms             ;
        CLR     T_OVER                  ;
        MOV     TH1,#0FAH               ;
        MOV     TL1,#099H               ;
        SETB    TR1                     ;
RM1:    JB      T_OVER,REMOTE_END       ;
        JB      REM,RM1                 ;
        CLR     TR1                     ;
                                        ;
        CLR     T_OVER                  ;
        MOV     TH1,#0FAH               ;
        MOV     TL1,#099H               ;
        SETB    TR1                     ;
RM2:    JB      T_OVER,REMOTE_END       ;
        JNB     REM,RM2                 ;
        CLR     TR1                     ;
;等待550us 后采集接收信号               ;
        MOV     3AH,#00                 ;
        DJNZ    3AH,$                   ;
        MOV     C,REM                   ;
        MOV     A,30H                   ;
        RLC     A                       ;
        MOV     30H,A                   ;
        MOV     A,32H                   ;
        RLC     A                       ;
        MOV     32H,A                   ;
;等待第二个码值的上升沿                 ;
        CLR     T_OVER                  ;
        MOV     TH1,#0FAH               ;
        MOV     TL1,#099H               ;
        SETB    TR1                     ;
RM3:    JB      T_OVER,RM5              ;
        JB      REM,RM3                 ;
        CLR     TR1                     ;
                                        ;
        CLR     T_OVER                  ;
        MOV     TH1,#0FAH               ;
        MOV     TL1,#099H               ;
        SETB    TR1                     ;
RM4:    JB      T_OVER,RM5              ;
        JNB     REM,RM4                 ;
        CLR     TR1                     ;
        DJNZ    34H,REMOTE6             ;
;把接收的编码左移4 位将8 位密码放在同一字节上
        MOV     34H,#4                  ;
        AJMP    REMOTE7                 ;
RM5:    AJMP    REMOTE_END              ;
REMOTE7:                                ;
        CLR     C                       ;
        MOV     A,33H                   ;
        RLC     A                       ;
        MOV     33H,A                   ;
        MOV     A,31H                   ;
        RLC     A                       ;
        MOV     31H,A                   ;
        CLR     C                       ;
        MOV     A,30H                   ;
        RLC     A                       ;
        MOV     30H,A                   ;
        MOV     A,32H                   ;
        RLC     A                       ;
        MOV     32H,A                   ;
        DJNZ    34H,REMOTE7             ;
;把4 位数据编码由高4 位移到低4 位上     ;
        MOV     A,33H                   ;
        SWAP    A                       ;
        MOV     33H,A                   ;
        MOV     A,30H                   ;
        SWAP    A                       ;
        MOV     30H,A                   ;
        SETB    ENABLE_DETE             ;
        SETB    RECEIVE                 ;
                                        ;
        AJMP    REMOTE_END_1            ;
音响方面的搭配,技术,安装,推荐等咨询请加我微信13808822286
taoli01
二等列兵
二等列兵
  • 金钱102RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
1楼#
发布于:2006-05-22 19:49
hao 东西!
lengfeng
二等列兵
二等列兵
  • 金钱41RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
2楼#
发布于:2006-06-05 21:20
<P>我顶</P>
小空间
上等兵
上等兵
  • 金钱509RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
3楼#
发布于:2006-06-06 00:32
<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
游戏人生168
一等列兵
一等列兵
  • 金钱300RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
4楼#
发布于:2006-06-14 17:32
好东西,顶,好长时间没来过了,以后还要经常来了,呵呵
游戏人生168
一等列兵
一等列兵
  • 金钱300RMB
  • 威望0点
  • 贡献值0点
  • CAV币0点
5楼#
发布于:2006-06-14 17:38
<P>欢迎论坛朋友到公司网站看看,现在到了深圳,从事汽车gsm防盗器的开发。</P>
<P> <a href="http://www.amwell.com.cn" target="_blank" >www.amwell.com.cn</A></P>
游客

返回顶部