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

📄 dmxout.asm

📁 一个发送程序给大家玩一玩
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                                      
          mov       dmxdataposition_low,#low(526)
          mov       dmxdataposition_high,#high(526)
          mov       dmxdatareg,csr5store
          lcall     ram_write                                
                
          mov       dmxdataposition_low,#low(527)
          mov       dmxdataposition_high,#high(527)
          mov       dmxdatareg,csr6store
          lcall     ram_write

          mov       dmxdataposition_low,#low(528)
          mov       dmxdataposition_high,#high(528)
          mov       dmxdatareg,csr7store
          lcall     ram_write
                
                
          mov       dmxdataposition_low,#low(529)
          mov       dmxdataposition_high,#high(529)
          mov       dmxdatareg,csr8store
          lcall     ram_write
          ret
;*****************************************
;************************************
write_hopping_eram_high:
;************************************
                
          mov       dmxdataposition_low,#low(551)
          mov       dmxdataposition_high,#high(551)
          mov       dmxdatareg,csr0store
          lcall     ram_write
                
          mov       dmxdataposition_low,#low(552)
          mov       dmxdataposition_high,#high(552)
          mov       dmxdatareg,csr1store
          lcall     ram_write
                
          mov       dmxdataposition_low,#low(553)
          mov       dmxdataposition_high,#high(553)
          mov       dmxdatareg,csr2store
          lcall     ram_write
                
          mov       dmxdataposition_low,#low(554)
          mov       dmxdataposition_high,#high(554)
          mov       dmxdatareg,csr3store
          lcall     ram_write
                
          mov       dmxdataposition_low,#low(555)
          mov       dmxdataposition_high,#high(555)
          mov       dmxdatareg,csr4store
          lcall     ram_write
                                      
          mov       dmxdataposition_low,#low(556)
          mov       dmxdataposition_high,#high(556)
          mov       dmxdatareg,csr5store
          lcall     ram_write                                
                
          mov       dmxdataposition_low,#low(557)
          mov       dmxdataposition_high,#high(557)
          mov       dmxdatareg,csr6store
          lcall     ram_write

          mov       dmxdataposition_low,#low(558)
          mov       dmxdataposition_high,#high(558)
          mov       dmxdatareg,csr7store
          lcall     ram_write
                
                
          mov       dmxdataposition_low,#low(559)
          mov       dmxdataposition_high,#high(559)
          mov       dmxdatareg,csr8store
          lcall     ram_write
          ret
;*****************************************  
write_tagerat:
          mov       dmxdataposition_low,#low(515)
          mov       dmxdataposition_high,#high(515)
          mov       dmxdatareg,#79
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(516)
          mov       dmxdataposition_high,#high(516)
          mov       dmxdatareg,#09
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(517)
          mov       dmxdataposition_high,#high(517)
          mov       dmxdatareg,#12
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(518)
          mov       dmxdataposition_high,#high(518)
          mov       dmxdatareg,#26
          lcall     ram_write
          
          ret
                  
;*****************************************
write_other:
          mov       dmxdataposition_low,#low(530)
          mov       dmxdataposition_high,#high(530)
          mov       dmxdatareg,th0
          lcall     ram_write
                
          mov       dmxdataposition_low,#low(531)
          mov       dmxdataposition_high,#high(531)
          mov       dmxdatareg,tl0
          lcall     ram_write
                
          mov       dmxdataposition_low,#low(532)
          mov       dmxdataposition_high,#high(532)
          mov       dmxdatareg,r0
          lcall     ram_write
                
          mov       dmxdataposition_low,#low(533)
          mov       dmxdataposition_high,#high(533)
          mov       dmxdatareg,r1
          lcall     ram_write
                
          mov       dmxdataposition_low,#low(534)
          mov       dmxdataposition_high,#high(534)
          mov       dmxdatareg,r2
          lcall     ram_write
                                      
          mov       dmxdataposition_low,#low(535)
          mov       dmxdataposition_high,#high(535)
          mov       dmxdatareg,r3
          lcall     ram_write                                
                
          mov       dmxdataposition_low,#low(536)
          mov       dmxdataposition_high,#high(536)
          mov       dmxdatareg,CNT0
          lcall     ram_write

          mov       dmxdataposition_low,#low(537)
          mov       dmxdataposition_high,#low(537)
          mov       dmxdatareg,CNT1
          lcall     ram_write
                
                
          mov       dmxdataposition_low,#low(538)
          mov       dmxdataposition_high,#high(538)
          mov       dmxdatareg,CNT2
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(539)
          mov       dmxdataposition_high,#high(539)
          mov       dmxdatareg,MASK
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(540)
          mov       dmxdataposition_high,#high(540)
          mov       dmxdatareg,KEY7
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(541)
          mov       dmxdataposition_high,#high(541)
          mov       dmxdatareg,CSR1
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(542)
          mov       dmxdataposition_high,#high(542)
          mov       dmxdatareg,CSR0
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(543)
          mov       dmxdataposition_high,#high(543)
          mov       dmxdatareg,#sp_reg
          lcall     ram_write
          
          mov       dmxdataposition_low,#low(544)
          mov       dmxdataposition_high,#high(544)
          mov       dmxdatareg,outdelayh
          lcall     ram_write
          
          
          mov       dmxdataposition_low,#low(545)
          mov       dmxdataposition_high,#high(545)
          mov       dmxdatareg,outdelayl
          lcall     ram_write
          ret

;**********************************


delay_timer: 
           clr   tf0 ; #0d3h
           mov   tl0,#01h;#0fbh;#0e7h;#0d3h ;150us  ; 90  88us   delay at 150us --130us
           mov   th0,#00h  ;#0feh
           setb  tr0    
           jnb   tf0,$
           clr   tf0
           clr   tr0
           ret
;****************************************



;****************************************
;****************************************
;*************************************************************************
;*      RECEIVE() : Keeloq FOR 16mhz                                     *
;*************************************************************************
KEQ_RECEIVE:    CLR     TCON.4                  ; [2]    Normal is Low on Keeloq input pin
                MOV     TH0,#00
                MOV     TL0,#00
                SETB    TCON.4
                MOV     CNT0,#00                ; [2]    Normal is Low on Keeloq input pin
                MOV     CNT1,#00                ; [2]
                MOV     CNT2,#23                ; [2]    Preamble Counter=23
                MOV     HOP_LENGTH,#66          ; [2]
;
CNT2_LP_23:     JB      KEELOQ_IN,$             ; [2]1   Is KEELOQ_IN = LOW ? Yes, Goto Calibrate portion
                CLR     TCON.4
                MOV     CNT0,TL0
                MOV     CNT1,TH0
;
                MOV     TH0,#00
                MOV     TL0,#00
                SETB    TCON.4
                DJNZ    CNT2,CNT2_NZ_LOOP
                SJMP    CNT2_ZERO
;
CNT2_NZ_LOOP:   JNB     KEELOQ_IN,$             ; [2]1   Is KEELOQ_IN = High ? Yes, Goto Calibrate portion
                CLR     TCON.4
                MOV     CNT0,TL0
                MOV     CNT1,TH0
;
                MOV     TH0,#00
                MOV     TL0,#00
                SETB    TCON.4
                DJNZ    CNT2,CNT2_LP_23
                SJMP    KQ_RECEIVE_Fail
;
CNT2_ZERO:      MOV     A,CNT1
                CJNE    A,#HIGH(1320),CNT2_CP00  ;660us UP
                SJMP    CNT2_CPEQ
CNT2_CP00:      JNC     KQ_RECEIVE_Fail
                SJMP    CNT2_LOW_CP
;
CNT2_CPEQ:      MOV     A,CNT0
                CJNE    A,#LOW(1320),CNT2_CP01
CNT2_CP01:      JNC     KQ_RECEIVE_Fail
;
CNT2_LOW_CP:    MOV     A,CNT1
                CJNE    A,#HIGH(520),CNT2_CP10  ;260us LOW
                SJMP    CNT2_CPEQ1
CNT2_CP10:      JC      KQ_RECEIVE_Fail
                SJMP    CNT2_CP_PASS
;
CNT2_CPEQ1:     MOV     A,CNT0
                CJNE    A,#LOW(520),CNT2_CP11
CNT2_CP11:      JC      KQ_RECEIVE_Fail
;
CNT2_CP_PASS:   MOV     A,CNT1
                MOV     R1,A                    ;TE Strore R1,R0
                MOV     A,CNT0
                MOV     R0,A
                MOV     A,CNT1
                CLR     C
                RRC     A
                MOV     CNT1,A                  ;1/2 TE Store CNT1,CNT0
                MOV     A,CNT0
                RRC     A
                MOV     CNT0,A
                SJMP    KQ_REC_HEADER
;
KQ_RECEIVE_Fail:LCALL   HP_RESTORENO
                CLR     C
                RET

KQ_REC_HEADER:
                JNB     KEELOQ_IN,$             ;Is KEELOQ_IN = High ? Yes, Goto Calibrate portion
                CLR     TCON.4
                CLR     TF0
                MOV     R2,TL0                  ;SAVE FOR CACULATE HEADER
                MOV     R3,TH0                  ;IS OVER TIME NO?,OR YES?
;
                MOV     A,#LOW(65536)
                CLR     C
                SUBB    A,CNT0                  ;1/2 TE
                MOV     TL0,A
                MOV     A,#HIGH(65536)
                SUBB    A,CNT1
                MOV     TH0,A                   ;1/2 TE
                SETB    TCON.4
;-----------Calculator Header time Over or less-;
                MOV     B,#12
                LCALL   KQ_TE_MUL
                MOV     A,R3
                CJNE    A,DPH,KQ_TE_CA001
KQ_TE_CA001:    JNC     KQ_RECEIVE_Fail
                MOV     B,#08
                LCALL   KQ_TE_MUL
                MOV     A,R3
                CJNE    A,DPH,KQ_TE_CA002
KQ_TE_CA002:    JC      KQ_RECEIVE_Fail
                SJMP    KQ_REC_HEAD1
;-----------------------------------------------;
KQ_REC_HEAD0:   JNB     KEELOQ_IN,$             ;Is KEELOQ_IN = High ? Yes, Goto Calibrate portion
                CLR     TCON.4
                CLR     TF0
                MOV     A,#LOW(65536)
                CLR     C
                SUBB    A,CNT0                  ;1/2 TE
                MOV     TL0,A
                MOV     A,#HIGH(65536)
                SUBB    A,CNT1
                MOV     TH0,A                   ;1/2 TE
                SETB    TCON.4
;-----------------------------------------------;
KQ_REC_HEAD1:   JNB     TF0,$                   ;TIME OVER
                CLR     TCON.4
                CLR     TF0
;
                MOV     A,#LOW(65536)
                CLR     C
                SUBB    A,R0                    ;TE
                MOV     TL0,A
                MOV     A,#HIGH(65536)
                SUBB    A,R1                    ;TE
                MOV     TH0,A
                SETB    TCON.4
;
                JNB     KEELOQ_IN,KQ_RECEIVE_Fail ;Is KEELOQ_IN = Low ?
;
                JNB     TF0,$                   ;TIME OVER
                CLR     TCON.4
                CLR     TF0
;
                MOV     A,#LOW(65536)
                CLR     C
                SUBB    A,R0                    ;TE
                MOV     TL0,A
                MOV     A,#HIGH(65536)
                SUBB    A,R1                    ;TE
                MOV     TH0,A
                SETB    TCON.4
;
                JNB     KEELOQ_IN,KQ_LEVEL      ;Is KEELOQ_IN = High ?
                CLR     C
                SJMP    KQ_REC_DATA
KQ_LEVEL:       SETB    C
KQ_REC_DATA:    LCALL   ROT_CSRs

                JNB     TF0,$                   ;TIME OVER
                JNB     KEELOQ_IN,KQ_LEVEL_L
                LJMP    KQ_RECEIVE_Fail         ;Is KEELOQ_IN = High ?
KQ_LEVEL_L:     DJNZ    HOP_LENGTH,KQ_REC_HEAD0
;-----------------------------------------------;
RECEIVE_A_FRAME:
                MOV     CNT1,#6                 ; 72 - 66  = 6 bit Don't need shiht, return
ROT_Adjust:     CLR     C
                LCALL   ROT_CSRs                ; [31]
                DJNZ    CNT1,ROT_Adjust
Rec_Exit:       LCALL   HP_RESTOREYES
                SETB    C
                RET
;
KQ_TE_MUL:      MOV     DPL,#00
                MOV     DPH,#00
KQ_TE_CA000:    MOV     A,R0                    ;LOAD TE
                ADD     A,DPL
                MOV     DPL,A
                MOV     A,R1
                ADDC    A,DPH
                MOV     DPH,A
                DJNZ    B,KQ_TE_CA000
                RET
;
                                         ;HOPPING KEELOQ
;*****************************************************
;****   Rotate CSRs register right 1 bit        ; [31]
;*****************************************************
                                ;HOPPING KEELOQ
;
ROT_CSRs:                                       ; [2]
                MOV     A,CSR8                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR8,A                  ; [1]
;
                MOV     A,CSR7                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR7,A                  ; [1]
;
                MOV     A,CSR6                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR6,A                  ; [1]
;
                MOV     A,CSR5                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR5,A                  ; [1]
;
                MOV     A,CSR4                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR4,A                  ; [1]
;
                MOV     A,CSR3                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR3,A                  ; [1]
;
                MOV     A,CSR2                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR2,A                  ; [1]
;
                MOV     A,CSR1                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR1,A                  ; [1]
;
                MOV     A,CSR0                  ; [1]
                RRC     A                       ; [1]
                MOV     CSR0,A                  ; [1]
                RET                             ; [2]
;
               








          end

⌨️ 快捷键说明

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