vdr2(0829).asm

来自「8051单片机汇编程序」· 汇编 代码 · 共 637 行 · 第 1/2 页

ASM
637
字号
                                      
SWITCHTIME    EQU       4BH
ADRECDATA     EQU       70H
ADSHOWDATA    EQU       60H
SWITCHDATA    EQU       4CH
NEWDATA       EQU       4DH

              ORG       0000H
              LJMP      MAIN
              ORG       000BH
              LJMP      TIME0
              ORG       0023H
              LJMP      RECEIVE
              ORG       0100H
;************************************************************************************
;*************************************6***********************************************
MAIN:
                MOV          P0,#0FFH
                LCALL        DOG
                LCALL        CHECKLAMP
                LCALL        CHECKLED                

                LCALL        INITIAL
                MOV          R6,#00H
                MOV          SWITCHDATA,#00H       ;判断接受到的数据是否正确,00H正确,FFH,错误
                MOV          SWITCHTIME,#00H       ;判断时间是否超过4秒而没有接受到数据,50H
                MOV          NEWDATA,#00H          ;判断是否已经接受到数据 00H,没有新数据
MA0:            NOP
                LCALL        ALARM
                LCALL        SHOW
                LJMP         MA0

                RET
;*************************************************************************************
;*************************************************************************************
CHECKLAMP:          NOP
                NOP
                NOP
                MOV       R7,#03H
                MOV       A,#55H   ;1010 1010
                NOP
UNITLAMP:       NOP
                LCALL     DOG
                NOP
                NOP
                MOV      R5,#18H
MOVELOOP:       MOV      C,ACC.7
                RL       A
                MOV      P1.0,C           ;数据位
                CLR      P1.1
                SETB     P1.1           ;一次脉冲
                NOP
                NOP
                DJNZ     R5,MOVELOOP
                NOP
                NOP
                LCALL    DELAY
                NOP
                NOP
                MOV      R5,#18H
                SETB     P1.0           ;数据位
MMENT:          CLR      P1.1
                SETB     P1.1           ;一次脉冲
                NOP
                NOP
                DJNZ     R5,MMENT
                NOP
                NOP
                LCALL    DELAY
                NOP
                NOP
                DJNZ     R7,UNITLAMP
                NOP
                NOP
                NOP
                LCALL    DOG
                NOP
                NOP
                RET

CHECKLED:
                NOP
                NOP
                MOV      R7,#03H
                MOV       A,#0AAH   ;0101 0101
                NOP
ULAMP:          NOP
                NOP
                LCALL    DOG
                NOP
                NOP
                MOV      R5,#18H
MRED:           MOV      C,ACC.7
                RL       A
                MOV      P1.0,C           ;数据位
                CLR      P1.1
                SETB     P1.1           ;一次脉冲
                NOP
                NOP
                NOP
                DJNZ     R5,MRED
                NOP
                NOP
                MOV      P0,#00H
                MOV      P2,#0FFH
                NOP
                NOP
                LCALL    DELAY
                NOP
                NOP
                MOV      R5,#18H
                SETB     P1.0           ;数据位
MMENTRED:       CLR      P1.1
                SETB     P1.1           ;一次脉冲
                NOP
                NOP
                NOP
                DJNZ     R5,MMENTRED
                NOP
                NOP
                NOP
                MOV      P0,#0FFH
                MOV      P2,#0FFH
                NOP
                NOP
                NOP
                LCALL    DELAY
                NOP
                NOP
                NOP
                DJNZ     R7,ULAMP
                NOP
                NOP
                LCALL    DOG
                NOP
                NOP
                NOP
                RET


;**************************************************************************************
;***************************************************************************************
INITIAL:
      LCALL        DOG
      MOV     TH0,#03CH    ;时间中断每次0。05秒,每4秒钟没收到数据就显示小数点循环
      MOV     TL0,#0AFH
      MOV     TMOD,#21H    ;设置波特率9600B/S
      MOV     SCON,#50H
      MOV     PCON,#00H
      MOV     TH1,#0FDH
      MOV     TL1,#0FDH
      CLR     ES
      SETB    ET0
      SETB            ES              ;开放串口中断
      SETB            EA              ;开放中断
      SETB            TR1             ;打开定时器T1
      SETB            TR0
      NOP
      RET
;****************************************************************************************
;***************************************************************************************
SHOW: NOP
      LCALL     SHOWLED
      LCALL     SHOWLAMP
      RET
;****************************************************************************************
;****************************************************************************************
SHOWLED:

      MOV       P2,#00H
      MOV       A,64H
      CLR       C
      ANL       A,#0FH
      MOV       DPTR,#TABNUM
      MOVC      A,@A+DPTR
      CPL       A
      MOV       P0,A
      SETB      P2.4
      CLR       P2.4

      MOV       A,65H
      CLR       C
      ANL       A,#0FH
      MOV       DPTR,#TABNUM
      MOVC      A,@A+DPTR
      CPL       A
      MOV       P0,A
      SETB      P2.3
      CLR       P2.3

      MOV       A,66H
      ANL       A,#0FH
      MOV       DPTR,#TABNUM
      MOVC      A,@A+DPTR
      CPL       A
      MOV       P0,A
      SETB      P2.2
      CLR       P2.2

      MOV       A,67H
      ANL       A,#0FH
      MOV       DPTR,#TABNUM
      MOVC      A,@A+DPTR
      CPL       A
      MOV       P0,A
      SETB      P2.1
      CLR       P2.1

      MOV       A,68H
      ANL       A,#0FH
      MOV       DPTR,#TABNUM
      MOVC      A,@A+DPTR
      CPL       A
      MOV       P0,A
      SETB      P2.0
      CLR       P2.0
      LCALL        DOG
      RET
;********************************************************************************************
;****************************************************************************************
SHOWLAMP:
      MOV       R4,#08H
      MOV       A,6BH
CIRC1:NOP
      MOV       C,ACC.7
      MOV       P1.0,C
      CLR       P1.1
      SETB      P1.1
      RL        A
      DJNZ      R4,CIRC1

      MOV       R4,#08H
      MOV       A,6AH
CIRC2:NOP
      MOV       C,ACC.7
      MOV       P1.0,C
      CLR       P1.1
      SETB      P1.1
      RL        A
      DJNZ      R4,CIRC2
      MOV       R4,#08H
      MOV       A,69H
CIRC3:NOP
      MOV       C,ACC.7
      MOV       P1.0,C
      CLR       P1.1
      SETB      P1.1
      RL        A
      DJNZ      R4,CIRC3
      LCALL     DELAY
      LCALL        DOG
      RET


;**************************************************************************************
;*************************************************************************************
ALARM:
                NOP
                MOV      A,NEWDATA
                CJNE     A,#00H,CHTIME
                LCALL    SHOWPOINT
                LJMP     ALARM
CHTIME:         MOV      A,SWITCHTIME
                CLR      C
                SUBB     A,#050H
                JC       NOTALARM
                LCALL    SHOWPOINT         ;显示小数点循环
                LJMP     ALARM
NOTALARM:       LCALL        DOG
                NOP

                RET

;*****************************************************************************************
;***************************************************************************************
SHOWPOINT:      NOP
                NOP
                LCALL   DOG
                NOP
                NOP
                MOV     P0,#0FFH    ;CLEAR LED
                MOV     P2,#0FFH
                MOV     P2,#00H

                MOV      R4,#18H
BLACK:          NOP
                SETB     P1.0
                CLR      P1.1
                SETB     P1.1
                NOP
                NOP
                NOP
                DJNZ     R4,BLACK
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                MOV      P2,#00H
                MOV      P0,#7FH

                CLR      P1.0
                CLR      P1.1
                SETB     P1.1
                SETB     P1.0
                CLR      P1.1
                SETB     P1.1
                SETB     P2.0
                NOP
                NOP
                NOP
                LCALL    DELAYSHORT
                NOP
                NOP
                NOP
                CLR      P1.1
                SETB     P1.1
                CLR      P1.1

⌨️ 快捷键说明

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