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

📄 dskeyn.asm

📁 视频监控控制键盘原代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:


             ORG  0000H
           LJMP    START

             ORG  0003H
           ;LJMP   KEY_SCAN                 ;键盘扫描子程序

             ORG  000BH                    ;定时器0中断入口地址
           LJMP   START

             ORG  0013H

            LJMP  PARK                     ;云台控制输入子程序

             ORG  0023H                    ;串口中断入口地址

            LJMP   RS_LINK                ;串行通讯子程序

              ORG  002BH

           ;LJMP    START

ADD_READ    EQU   P3.5            ;0有效
WATCH_DOG   EQU   P3.6            ;看门狗
RS485_TR    EQU   P3.7            ;RS485收发控制
WORD_NUM    EQU   1FH             ;每行字符数
H_NUM       EQU   1EH             ;行号
hfirst_add  equ   1dh             ;行首址
B_C_STATE   EQU   1CH
KEY_H_VAL   EQU   53H             ;行值
KEY_L_VAL   EQU   52H             ;列值
KEY_H_L_VAL EQU   54H             ;行列值
RS          EQU   P2.7
E           EQU   P2.6
RW          EQU   P3.6
SHIFT_VAL   EQU   2AH
SHIFT_LED   EQU   P3.4
KEY_DATA1   EQU   20H
KEY_DATA2   EQU   21H
KEY_DATA    EQU   22H
KEY_DATA_C  EQU   24H
KEY_TIMES   EQU   26H

            ORG   0100H

  ; ******************************
  ;            初始化主程序
  ;*******************************

START:     MOV   SP,    #5EH              ;堆栈指针
           CLR   RS485_TR                 ;RS485处于接收状态
           MOV   IE,    #80H
           MOV   SCON,  #050H             ;串行接收方式1,SM2=0
           MOV   TMOD,  #20H              ;T1为方式2,T0为方式0
           MOV   TH1,   #0FDH
           MOV   TL1,   #0FDH
           MOV   P0,    #0FFH
           CLR   E
           CLR   RS
 ;-----------显示屏初始显示------------
       ;----LCD初始化---------
           LCALL  INITL
           MOV    A,     #0CH                 ;开显示,关游标
           LCALL  ORDER_INPUT
           NOP
           NOP
           MOV    A,     #01H
           LCALL  ORDER_INPUT
           NOP
           NOP
           CPL     WATCH_DOG
       ;-------第一行显示'   '--------
           MOV     HFIRST_ADD,       #80H
           MOV     DPTR,       #TAB_FIRSTH
           NOP
           NOP
           LCALL   WORD_DISPLAY
           NOP
           NOP
           CPL     WATCH_DOG

       ;-------第二行显示'   '--------
           MOV     HFIRST_ADD,      #90H
           MOV     DPTR,     #TAB_SECONDH
           NOP
           NOP
           LCALL   WORD_DISPLAY
           NOP
           NOP
           CPL     WATCH_DOG

       ;-------第三行显示'DS-8000M'--------
           MOV    HFIRST_ADD,    #88H
           MOV    DPTR,      #TAB_THIRDH
           NOP
           NOP
           LCALL   WORD_DISPLAY
           NOP
           NOP
           CPL     WATCH_DOG

       ;-------第四行显示'全撤防  无报警'--------
           MOV   HFIRST_ADD,     #98H
           MOV    DPTR,         #TAB_FOURH
           NOP
           NOP
           LCALL   WORD_DISPLAY
           NOP
           NOP
           CPL    WATCH_DOG

       ;--------------------------------
           SETB  TR1                      ;T1启动
           SETB  ET0                      ;T0开中断
           SETB  TR0                      ;T0启动
           CLR   IT0                      ;中断方式为电平触发
           CLR   IT1
           MOV   TH0,   #00H              ;T0清零
           MOV   TL0,   #00H
           SETB   EX0                     ;INT0/INT1开中断
           SETB   EX1
           MOV    B_C_STATE ,   #00H      ;布/撤防状态,00-撤防,01-布防

 ;--------------------------------------
           MOV   P2,    #0FFH
           CLR   ADD_READ
           MOV   A,      P2
           MOV   50H,    A
           MOV   51H,    A
           ANL   A,      #0FH
           ADD   A,      #30H
           MOV   50H,    A            ;本机地址存入50H单元
           MOV   A,      51H
           ANL   A,      #30H
           MOV   51H,    A            ;协议选择存入51H,用于外接解码盒
           SETB  ADD_READ
           MOV   P2,     #0E0H
           MOV   P1,     #0FFH
           MOV   R1,    #30H              ;30H--3FH赋初值
           MOV   R2,    #00H
MAIN_CONT: MOV   @R1,   #20H
           INC   R1
           MOV   @R1,   #20H
           INC   R2
           NOP
           NOP
           CJNE  R2,    #08H,  MAIN_CONT
;*************************************
;            监控程序
;*************************************
MAIN:      CLR   RI
           CLR   TI
           SETB  EX0
           SETB  EX1
           SETB  EA
           SETB  ES                       ;串行开中断
           MOV   TH0,   #00H              ;T0清零
           MOV   TL0,   #00H
           CLR   RS485_TR
           CPL   WATCH_DOG                     ;看门狗
           LCALL DELAY2
           MOV   TH0,   #00H
           MOV   TL0,   #00H
           LJMP  MAIN


 ;***************************************
 ;           显示汉字子程序
 ;***************************************
 WORD_DISPLAY:    MOV   TH0,    #00H              ;T0清零
                  MOV   TL0,    #00H
                  NOP
                  MOV     WORD_NUM,    #08H        ;字符数
                  MOV     A,    HFIRST_ADD
                  LCALL   ORDER_INPUT
                  NOP
                  NOP
                  CLR    A
WORD_CONT1:       MOVC    A,       @A+DPTR
                  LCALL  DATA_INPUT
                  NOP
                  CLR    A
                  INC    DPTR
                  MOVC    A,       @A+DPTR
                  LCALL  DATA_INPUT
                  NOP
                  INC    DPTR
                  CLR    A
                  DJNZ   WORD_NUM,   WORD_CONT1
                  RET

 ;***************************************
 ;            LCD初始化子程序
 ;***************************************
 INITL:    MOV    TH0,   #00H              ;T0清零
           MOV    TL0,   #00H
           CLR    RS
           CLR    RW
           SETB   E
           MOV    P0,    #30H
           NOP
           MOV    A,      #01H             ;清楚屏幕文字,地址指针指向00H
           LCALL     ORDER_INPUT
           CLR    E
           RET

  ;**************************************
  ;              写指令子程序
  ;**************************************

  ORDER_INPUT:   MOV   TH0,   #00H              ;T0清零
                 MOV   TL0,   #00H
                 LCALL     CHK_BUSY
                 NOP
                 CLR   RS
                 CLR   RW
                 SETB  E
                 MOV   P0,    A
                 NOP
                 CLR   E
                 NOP
                 MOV   P0,    #0FFH
                 RET
   ;**********************************
   ;          写数据子程序
   ;**********************************
   DATA_INPUT:   LCALL    CHK_BUSY
                 MOV     TH0,   #00H            ;T0清零
                 MOV     TL0,   #00H
                 NOP
                 SETB    RS
                 CLR     RW
                 SETB    E
                 MOV     P0,    A
                 NOP
                 CLR     E
                 NOP
                 MOV     P0,    #0FFH
                 RET

   ;**********************************
   ;          忙检测子程序
   ;**********************************
CHK_BUSY:      MOV   TH0,   #00H              ;T0清零
               MOV   TL0,   #00H
               CLR   RS
               SETB  RW
               SETB  E
HERE_BUSY:     MOV   TH0,   #00H              ;T0清零
               MOV   TL0,   #00H
               JB      P0.7,    HERE_BUSY
               CLR   E
               RET

;************************************
;            云台控制子程序
;             INT1中断引发
;************************************

PARK:         PUSH   DPH
              PUSH   DPL
              CLR    EX0
              CLR    EX1
              MOV    TH0,    #00H
              MOV    TL0,    #00H
              MOV    30H,    #0A1H
              MOV    31H,    #0A0H
              MOV    32H,    #0A1H
              MOV    33H,    #0A0H
              MOV    3AH,    #0A1H
              MOV    3BH,    #0A0H
              MOV    3CH,    #0A1H
              MOV    3DH,    #0A0H
              MOV    3EH,    #0A1H
              MOV    3FH,    #0A0H
              MOV    40H,    #0FFH
              MOV    43H,    #01H
              LCALL  DELAY1
              LCALL  DELAY1
              JB     P1.7,   PARK_L22
              CLR    P1.7
              SETB   P2.0
              SETB   P2.1
              SETB   P2.2
              SETB   P2.3
              SETB   P2.4
              MOV    A,     P2
              ANL    A,     #1FH
              CPL    A
              ANL    A,     #1FH
              CJNE   A,     #01H,     PARK_2H8L
              CLR    KEY_DATA_C
              JNB   SHIFT_LED,   LOOP18
              MOV   41H,    #00H        ;键"变焦-"
              MOV   42H,    #00H
              MOV   4FH,    #04H
              MOV    TH0,    #00H
              MOV    TL0,    #00H
              MOV    34H,    #0B1H
              MOV    35H,    #0E4H
              MOV    36H,    #0BDH
              MOV    37H,    #0B9H
              MOV    38H,    #0A3H
              MOV    39H,    #0ADH
              LCALL  LCDSHOW_DATA
              LCALL  ORDER_SEND
              LJMP   KEY_SCANRET
LOOP18:       MOV    34H,    #0B1H     ;"饱和度-"
              MOV    35H,    #0A5H
              MOV    36H,    #0BAH
              MOV    37H,    #0CDH
              MOV    38H,    #0B6H
              MOV    39H,    #0C8H
              MOV    3AH,    #0A3H
              MOV    3BH,    #0ADH
              LCALL  LCDSHOW_DATA
              MOV   41H,    #00H
              MOV   42H,    #00H
              MOV   4FH,    #04H
              LCALL  ORDER_SEND
              LJMP   KEY_SCANRET
PARK_L22:     LJMP   PARK_L2

PARK_2H8L:    MOV    TH0,    #00H
              MOV    TL0,    #00H
              CJNE  A,      #02H,     PARK_3H8L
              CLR    KEY_DATA_C
              JNB   SHIFT_LED,   LOOP28
              MOV   41H,    #17H      ;键"调焦-"
              MOV   42H,    #0FDH
              MOV   4FH,    #04H
              MOV    34H,    #0B5H
              MOV    35H,    #0F7H
              MOV    36H,    #0BDH
              MOV    37H,    #0B9H
              MOV    38H,    #0A3H
              MOV    39H,    #0ADH
              LCALL  LCDSHOW_DATA
              LCALL  ORDER_SEND
              LJMP   KEY_SCANRET
loop28:       MOV    34H,    #0B6H     ;"对比度-"
              MOV    35H,    #0D4H
              MOV    36H,    #0B1H
              MOV    37H,    #0C8H
              MOV    38H,    #0B6H
              MOV    39H,    #0C8H
              MOV    3AH,    #0A3H
              MOV    3BH,    #0ADH
              LCALL  LCDSHOW_DATA
              MOV   41H,    #00H
              MOV   42H,    #00H
              MOV   4FH,    #04H
              LCALL  ORDER_SEND
              LJMP   KEY_SCANRET
PARK_3H8L:    MOV    TH0,    #00H
              MOV    TL0,    #00H
              CJNE   A,     #04H,    PARK_4H8L
              CLR    KEY_DATA_C
              JNB   SHIFT_LED,   LOOP38
              MOV   41H,    #00H       ;键"光圈-"
              MOV   42H,    #00H
              MOV   4FH,    #04H
              MOV    34H,    #0B9H
              MOV    35H,    #0E2H
              MOV    36H,    #0C8H
              MOV    37H,    #0A6H
              MOV    38H,    #0A3H
              MOV    39H,    #0ADH
              LCALL  LCDSHOW_DATA
              LCALL  ORDER_SEND
              LJMP   KEY_SCANRET
loop38:       MOV    34H,    #0C1H     ;"亮度-"
              MOV    35H,    #0C1H
              MOV    36H,    #0B6H

⌨️ 快捷键说明

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