⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 de2262.asm

📁 软件模拟解码PT2262(晶体:12MHZ)
💻 ASM
字号:

REM             EQU    P3.2
EnableFlag      equ    20H.0
dat             equ    21H
add2            equ    22H
add1            equ    23H
pro_dat         equ    24h
pro_add2        equ    25h
pro_add1        equ    26h


;CODE_ADDRESS1  EQU    01111101B
;CODE_ADDRESS2  EQU    01110001B
;CODE_DATA      EQU    00000011B

CODE_ADDRESS1   EQU    7DH       ;地址高字节
CODE_ADDRESS2   EQU    71H       ;地址低字节
CODE_CF_DATA    EQU    00000011B ;撤防
CODE_LS_DATA    EQU    00001100B ;留守
CODE_JJ_DATA    EQU    00110000B ;紧急
CODE_BF_DATA    EQU    11000000B ;布防

                org    00H
                ajmp   startup

                org    100H
startup:
                mov    SP,#0C0H
main:           acall  remote
                jnc    main
           ;     mov    a,dat
           ;     anl    a,#03h
           ;     xrl    a,#1
           ;     jnz    main
           ;     mov    p1,#0
           ;     ajmp   main


                mov    a,add1
                xrl    a,#CODE_ADDRESS1
                jnz    main0
                mov    p1,#0
                mov    a,add2
                xrl    a,#CODE_ADDRESS2
                jnz    main
                mov    p1,#0
                ajmp   main

main0:          mov    a,add2
                xrl    a,#CODE_ADDRESS1
                jnz    main1
                mov    p1,#0
                mov    a,add1
                xrl    a,#CODE_ADDRESS2
                jnz    main
                mov    p1,#0
                ajmp   main

main1:          mov    a,add1
                xrl    a,#CODE_ADDRESS2
                jnz    main2
                mov    p1,#0
                ajmp   main
main2:          mov    a,add2
                xrl    a,#CODE_ADDRESS2
                jnz    main
                mov    p1,#0
                ajmp   main

remote:         ;检测50ms内有没有编码接收
                push   5
                push   6
                push   7
                mov    r6,#50
remote_0:       mov    r7,#125      ;8us x 125 = 1ms
remote_1:       jb     REM,rem0     ;4 clock
                djnz   r7,remote_1  ;4 clock
                djnz   r6,remote_0
                clr    EnableFlag
remote_end:     clr    c
                pop    7
                pop    6
                pop    5
                ret

rem0:           jb     EnableFlag,remote_end ;按键没有放开则返回
                mov    r5,#24       ;接收24位编码
               ;mov    r5,#2
                ;解码
                ;先找出接收码的开头,即5ms左右的低电平
                ;设置高电平时间为4--6ms
                ;检测和等待4ms的低电平
rem1:           mov    r6,#45;40
rem2:           mov    r7,#125
rem3:           jb     REM,rem1
                djnz   r7,rem3
                djnz   r6,rem2
                ;等待在2ms内接收到的低电平
                mov    r6,#10;20
rem4:           mov    r7,#125
rem5:           ;4ms到6ms内接收到下降沿,则跳去解码,否则返回
                jb     REM,rem6
                djnz   r7,rem5
                djnz   r6,rem4
                ;超出6ms, 接收错误,返回
                clr    EnableFlag
                ajmp   remote_end
rem6:           ;等待300us后, 采集接收信号
                mov    r7,#75
                djnz   r7,$
                ;采集接收信号,并记录
                            ; mov  p1,#0
                mov    c,REM
                mov    a,dat
                rlc    a
                mov    dat,a
                mov    a,add2
                rlc    a
                mov    add2,a
                mov    a,add1
                rlc    a
                mov    add1,a
                ;等待第二个上升烟
                jb     REM,$
                jnb    REM,$

                djnz   r5,rem6
                setb   EnableFlag
                setb   c
                pop    7
                pop    6
                pop    5
                ret

                end



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -