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

📄 sx.asm

📁 一个用P89LPC935单片机发射信号的无线遥控器
💻 ASM
📖 第 1 页 / 共 3 页
字号:
              MOV        KEY_SC,B
              MOV        ST1,#0
KEY_ZHSM_12:  INC        ST1
              MOV        A,ST1
              CLR        C
              SUBB       A,#SUANG_J_SJ*44
              JC         KEY_ZHSM_END
              SETB       KEY_YCL
              LCALL      KEY_ON_ON
              LJMP       KEY_ZHSM_END
KEY_ZHSM_21:  MOV        KEY_SC,#0
KEY_ZHSM_22:  MOV        A,KEY_SC
              JZ         KEY_ZHSM_25
              DEC        ST2
              MOV        A,ST2
              ANL        A,#07H
              JNZ        KEY_ZHSM_END
              MOV        A,ST1
              CLR        C
              SUBB       A,#KEY_BH_YS
              JC         KEY_ZHSM_24
              JB         KEY_YCL,KEY_ZHSM_24
              LCALL      KEY_ON
KEY_ZHSM_24:  MOV        KEY_SC,#0
KEY_ZHSM_25:  CLR        KEY_YCL
KEY_ZHSM_END: RET


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SJ_BM_END:    SETB       ERROR
              RET
              ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SJ_BM_ERROR:  LCALL      DU_MIMA                       ;可能为死循环
              ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SJ_BM:        MOV        A,DQ_SJ_H                                         ;入口为MIMA11-MIMA15
              JZ         SJ_BM_END
              CLR        C
              MOV        A,MIMA11
              SUBB       A,MIMA13
              JNZ        SJ_BM_ERROR
              CLR        C
              MOV        A,MIMA12
              SUBB       A,MIMA14
              JNZ        SJ_BM_ERROR
              ;;;;;;;;;;;;;;
              MOV        R0,#MIMA1                     ;R0,R1,R4,R6,R7,A
              MOV        R1,#MIMA13
              MOV        R6,#3
SJ_BM2:       MOV        R7,#8
              MOV        A,@R1
              INC        R1
              MOV        R4,A
SJ_BM1:       MOV        A,R4
              RLC        A
              MOV        R4,A
              JC         SJ_LX2

;01为悬空   悬空为0110   11为高电平  高电平为1010    00为低电平   低电平为0101
;0        短时间长时间      1      长时间短时间
              MOV        A,#1
              MOV        @R0,A
              INC        R0
              MOV        A,#3H
              MOV        @R0,A
              INC        R0
              AJMP       SJ_LX_END
SJ_LX2:       MOV        A,#3H
              MOV        @R0,A
              INC        R0
              MOV        A,#1
              MOV        @R0,A
              INC        R0


SJ_LX_END:    DJNZ       R7,SJ_BM1
              DJNZ       R6,SJ_BM2
              MOV        A,#01H
              MOV        @R0,A
              INC        R0
              MOV        A,#31
              MOV        @R0,A

              MOV        SJ_DZ,#6
              MOV        YS_1,#32H
              MOV        YS_2,#FXCS
              SETB       YS_FX
              CLR        ET1
              MOV        P2,#0
              SETB       ET0
              CLR        TF0
              RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DH-DL-MH-ML
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DU_MIMA:     MOV         DPTR,#MIMA_TAB              ;查找地址00H(数据底)   0FFH 数据空
DU_MIMA_1:   CLR         A
             MOVC        A,@A+DPTR
             INC         DPTR
             JNZ         DU_MIMA_W1
             CLR         A
             MOVC        A,@A+DPTR
             JZ          DU_MIMA_W
             CLR         A
DU_MIMA_W1:  CLR         C
             SUBB        A,MIMA_DPH
             JNZ         DU_MIMA_5
             CLR         A
             MOVC        A,@A+DPTR
             CLR         C
             SUBB        A,MIMA_DPL
             JNZ         DU_MIMA_5
             NOP
             LJMP        DU_MIMA_Y
             NOP
DU_MIMA_5:   MOV        A,DPH
             CLR        C
             SUBB       A,#1FH
             JNC        DU_MIMA_W
             INC        DPTR
             INC        DPTR
             INC        DPTR
             NOP
             LJMP       DU_MIMA_1
             ;;;;;;;;;;;;;;;;;;;;;;;;
DU_MIMA_W:   MOV         MIMA11,#00H               ;没找到
             MOV         MIMA12,#00H
             MOV         MIMA13,#00H
             MOV         MIMA14,#00H
             MOV         K_SJ_L,#0
             MOV         K_SJ_H,#0
             MOV         DQ_SJ_L,#0
             MOV         DQ_SJ_H,#0
             RET
             ;;;;;;;;;;;;;;;;;;;;;;
DU_MIMA_Y:   MOV         K_SJ_L,DPL
             DEC         K_SJ_L
             MOV         K_SJ_H,DPH
             INC         DPTR                       ;解码
             CLR         A
             MOVC        A,@A+DPTR
             MOV         DQ_SJ_H,A
             INC         DPTR
             CLR         A
             MOVC        A,@A+DPTR
             MOV         DQ_SJ_L,A
             ;;;;;;;;;;;;;;;;;;;;;;;;;;
             MOV         DPTR,#J_M_TAB
             SWAP        A
             ANL         A,#0FH
             JZ          DU_MIMA_W
             MOVC        A,@A+DPTR
             MOV         MIMA11,A
             MOV         A,DQ_SJ_L
             ANL         A,#0FH
             JZ          DU_MIMA_W
             MOVC        A,@A+DPTR
             SWAP        A
             ORL         A,MIMA11
             MOV         MIMA11,A
             MOV         MIMA13,A

             MOV         A,DQ_SJ_H
             SWAP        A
             ANL         A,#0FH
             JZ          DU_MIMA_W
             MOVC        A,@A+DPTR
             MOV         MIMA14,A
             MOV         A,DQ_SJ_H
             ANL         A,#0FH
             JZ          DU_MIMA_W
             MOVC        A,@A+DPTR
             SWAP        A
             ORL         A,MIMA14
             MOV         MIMA14,A
             MOV         MIMA12,A


;J_M1:        MOV         DPTR,#J_M_TAB
;             ANL         A,#0FH
;             JZ          DU_MIMA_W
;             MOVC        A,@A+DPTR
;             MOV         MIMA14,A
;             MOV         A,DQ_SJ_L
;             SWAP        A
;             ANL         A,#0FH
;             JZ          DU_MIMA_W
;             MOVC        A,@A+DPTR
;             SWAP        A
;             ORL         A,MIMA14
;             MOV         MIMA14,A
;             MOV         MIMA12,A

;             MOV         A,DQ_SJ_H
;             ANL         A,#0FH
;             JZ          DU_MIMA_W
;             MOVC        A,@A+DPTR
;             MOV         MIMA11,A
;             MOV         A,DQ_SJ_H
;             SWAP        A
;             ANL         A,#0FH
;             JZ          DU_MIMA_W
;             MOVC        A,@A+DPTR
;             SWAP        A
;             ORL         A,MIMA11
;             MOV         MIMA11,A
;             MOV         MIMA13,A
             RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;MI1          EQU         3BH           ;要显示的数据
;MI2          EQU         3CH
;MI3          EQU         3DH
;MI4          EQU         3EH
;MIMA_DPL     EQU         47H         ;地址
;MIMA_DPH     EQU         48H
;DQ_SJ_L      EQU         49H         ;密码
;DQ_SJ_H      EQU         4AH
;K_SJ_L       EQU         4BH         ;空数据的地址
;K_SJ_H       EQU         4CH


WR_MIMA_QX:  MOV         A,K_SJ_L                                 ;删除
             ADD         A,K_SJ_H
             JZ          WR_MIMA_QX1
             MOV         DPL,K_SJ_L
             MOV         DPH,K_SJ_H
             MOV         R6,#0FFH
             MOV         R5,#0FFH
             MOV         R4,#000H
             MOV         R3,#0FFH
             LCALL       PGM_USER
WR_MIMA_QX1: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WR_MIMA:     MOV         A,MI2
             JZ          WR_MIMA_QX
             MOV         A,MI4
             JZ          WR_MIMA_QX
             MOV         A,MI1
             JZ          WR_MIMA_QX
             MOV         A,MI3                                 ;写地址
             JZ          WR_MIMA_QX
             SWAP        A                                     ;00H(数据底)   0FFH 数据空
             ORL         A,MI4
             MOV         DQ_SJ_L,A
             MOV         A,MI1
             SWAP        A
             ORL         A,MI2
             MOV         DQ_SJ_H,A

             MOV         DPTR,#MIMA_DZ_TAB
             MOV         R6,#0
             MOV         R7,#0
WR_MIMA_1:   CLR         A
             MOVC        A,@A+DPTR                       ;高位
             INC         DPTR
             JZ          WR_MIMA_2
             CLR         C
             SUBB        A,DQ_SJ_H
             JNZ         WR_MIMA_5
             CLR         A
             MOVC        A,@A+DPTR
             JZ          WR_MIMA_22
             CLR         C
             SUBB        A,DQ_SJ_L
             JNZ         WR_MIMA_5
             DEC         DPL
             DEC         DPL
             CLR         A
             MOVC        A,@A+DPTR
             MOV         MIMA_DPL,A
             DEC         DPL
             CLR         A
             MOVC        A,@A+DPTR
             MOV         MIMA_DPH,A
             MOV         K_SJ_L,DPL
             MOV         K_SJ_H,DPH                     ;重码
             LJMP        WR_MIMA_END

WR_MIMA_2:   CLR         A
             MOVC        A,@A+DPTR                      ;低位
             JZ          WR_MIMA_3
WR_MIMA_22:  MOV         R6,DPH
             MOV         R7,DPL

WR_MIMA_5:   MOV        A,DPH
             CLR        C
             SUBB       A,#1FH
             JNC        WR_MIMA_3
             INC        DPTR
             INC        DPTR
             INC        DPTR
             NOP
             LJMP       WR_MIMA_1



WR_MIMA_3:   MOV         A,K_SJ_L
             ADD         A,K_SJ_H
             JNZ         WR_MIMA_31
             MOV         A,R6
             ADD         A,R7
             JZ          WR_MIMA_33
             MOV         DPH,R6                      ;在中间位置追加
             MOV         DPL,R7
WR_MIMA_33:  DEC         DPL                         ;在最后位置追加
             DEC         DPL
             DEC         DPL
             AJMP        WR_MIMA_32
WR_MIMA_31:  MOV         DPL,K_SJ_L                  ;修改
             MOV         DPH,K_SJ_H
WR_MIMA_32:  MOV         R6,MIMA_DPH
             MOV         R5,MIMA_DPL
             MOV         R4,DQ_SJ_H
             MOV         R3,DQ_SJ_L
             LCALL       PGM_USER
WR_MIMA_END: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PGM_USER:     MOV        R7,#3
              CLR        EA
PGM_USER2:    NOP
              MOV        FMCON,#00H            ;装载命令,清除页寄存器
              MOV        FMADRH,DPH         ;写入高地址
              MOV        FMADRL,DPL         ;写入低地址
              MOV        FMDATA,R6              ;MIMA_DPH
              MOV        FMDATA,R5              ;MIMA_DPL
              MOV        FMDATA,R4              ;DQ_SJ_H
              MOV        FMDATA,R3              ;DQ_SJ_L
              MOV        FMCON,#68H        ;擦除和编程页
              MOV        A,FMCON           ;读返回的状态
              ANL        A,#0FH
              JNZ        PGM_USER1
              SETB       EA
              NOP
              SETB       EA
              RET
PGM_USER1:    DJNZ       R7,PGM_USER2
              SETB       EA
              NOP
              SETB       EA
              RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
             ORG        6E0H
TAB_LED:
DB       3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,79H,48H
;        0   1   2   3   4   5   6   7   8   9   E   R
             ORG        6F0H
J_M_TAB:    ;0低      1空      2高
;DB       00H,00H,01H,03H,04H,05H,07H,0CH,0DH,0FH
;J_M_TAB1:
;DB        00H,00H,03H,01H,0CH,0FH,0DH,04H,07H,05H
DB        00H,00H,0CH,04H,03H,0FH,07H,01H,0DH,05H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
              ORG       800H
MIMA_TAB:
DB       00H,00H
MIMA_DZ_TAB:
DB       00H,00H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;







⌨️ 快捷键说明

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