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

📄 vdr2(0823).asm

📁 8051单片机汇编程序
💻 ASM
字号:
                            
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        CHECK

                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
;*************************************************************************************
;*************************************************************************************
CHECK:          MOV       R7,#03H
                MOV       A,#55H   ;1010 1010
                NOP
UNITLAMP:       MOV      R5,#18H
MOVEMENT:       MOV      C,ACC.7
                RL       A
                MOV      P1.0,C           ;数据位
                CLR      P1.1
                SETB     P1.1           ;一次脉冲
                DJNZ     R5,MOVEMENT
                LCALL    DELAY

                MOV      R5,#18H
                SETB     P1.0           ;数据位
MMENT:          CLR      P1.1
                SETB     P1.1           ;一次脉冲
                DJNZ     R5,MMENT
                LCALL    DELAY
                DJNZ     R7,UNITLAMP

                MOV      R7,#03H
                MOV       A,#0AAH   ;0101 0101
                NOP
ULAMP:          MOV      R5,#18H
MOVERED:        MOV      C,ACC.7
                RL       A
                MOV      P1.0,C           ;数据位
                CLR      P1.1
                SETB     P1.1           ;一次脉冲
                DJNZ     R5,MOVERED

                MOV      P0,#00H
                MOV      P2,#0FFH
                LCALL    DELAY

                MOV      R5,#18H
                SETB     P1.0           ;数据位
MMENTRED:       CLR      P1.1
                SETB     P1.1           ;一次脉冲
                DJNZ     R5,MMENTRED

                MOV      P0,#0FFH
                MOV      P2,#0FFH

                LCALL    DELAY
                DJNZ     R7,ULAMP

                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
                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
                DJNZ     R4,BLACK

                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
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1

                MOV      P0,#0FFH
                CLR      P2.0
                MOV      P0,#7FH
                SETB     P2.1
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1


                MOV      P0,#0FFH
                CLR      P2.1
                MOV      P0,#7FH
                SETB     P2.2
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1

                MOV      P0,#0FFH
                CLR      P2.2
                MOV      P0,#7FH
                SETB     P2.3
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1

                MOV      P0,#0FFH
                CLR      P2.3
                MOV      P0,#7FH
                SETB     P2.4
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1
                LCALL    DELAYSHORT

                MOV      P0,#0FFH
                CLR      P2.4
                MOV      P0,#7FH


                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1


                MOV      P0,#7FH
                SETB     P2.0
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1

                MOV      P0,#0FFH
                CLR      P2.0
                MOV      P0,#7FH
                SETB     P2.1
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1

                MOV      P0,#0FFH
                CLR      P2.1
                MOV      P0,#7FH
                SETB     P2.2
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1

                MOV      P0,#0FFH
                CLR      P2.2
                MOV      P0,#7FH
                SETB     P2.3
                LCALL    DELAYSHORT

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1

                MOV      P0,#0FFH
                CLR      P2.3
                MOV      P0,#7FH
                SETB     P2.4
                LCALL    DELAYSHORT
                NOP

                MOV      P0,#0FFH
                CLR      P2.4

                CLR      P1.1
                SETB     P1.1
                CLR      P1.1
                SETB     P1.1
                LCALL    DELAYSHORT
                LCALL        DOG

                RET

;*****************************************************************************************
;******************************************************************************************
TIME0:          NOP
                PUSH    A
                MOV     TH0,#03CH
                MOV     TL0,#0AFH
                INC     SWITCHTIME        ;每次0。05秒,4秒报警,即SWITCHTIME大于80
                MOV     A,SWITCHTIME
                CJNE    A,#0FFH,RE1
                MOV     A,#051H
                MOV     SWITCHTIME,A
RE1:            POP     A
                RETI

;*****************************************************************************************
;**********LANC RECEIVE INI SERVE PROGRAM*************************************************
RECEIVE:	   NOP
        PUSH       PSW
	PUSH       A
RETN:	JNB        RI,RETN
	CLR        RI
	MOV        A, SBUF
RECE1:  CJNE       A,#24H,RECE2
        MOV        R6,#00H
        MOV       SWITCHDATA,#00H
        MOV        R1,#ADRECDATA          ;FIRST CHAR $?
        MOV        @R1,A
        LJMP       RETURN
RECE2:  CJNE       R6,#01H,RECE3
        CJNE       A,#4CH,RETN1
        MOV        @R1,#4CH          ;SECORD CHAR L?
        LJMP       RETURN
RECE3:  CJNE       R6,#02H,RECE4
        CJNE       A,#45H,RETN1
        MOV        @R1,#45H          ;THRID CHAR E?
        LJMP       RETURN
RECE4:  CJNE       R6,#03H,RECE13
        CJNE       A,#44H,RETN1
        MOV        @R1,#44H          ;FOUR CHAR D?
        LJMP       RETURN

RECE13:  CJNE       R6,#0CH,RECE14
        CJNE       A,#0DH,RETN1
        MOV        @R1,#0DH          ;13 CHAR <CR> ?
        LJMP       RETURN
RECE14:  CJNE       R6,#0DH,OTHER
        CJNE       A,#0AH,RETN1
        MOV        @R1,#0AH          ; CHAR <LF>?
        LCALL      SAVEDATA                 ;如果接受正常,将数据存入显示RAM,否则不管
        LJMP       RETURN
OTHER:  MOV        @R1,A
        LJMP       RETURN

RETN1:  MOV       SWITCHDATA,#0FFH
RETURN: NOP
        INC       R6
        INC       R1
        CJNE      R6,#0EH,RELOOP
        MOV       R6,#00H
        MOV       R1,#ADRECDATA
RELOOP:
        POP       A
        POP       PSW
        RETI

;****************************************************************************************
;****************************************************************************************
SAVEDATA:
        MOV      R0,SWITCHDATA
        CJNE     R0,#00H,NOTSAVE
        MOV       60H,70H
        MOV       61H,71H
        MOV       62H,72H
        MOV       63H,73H
        MOV       64H,74H
        MOV       65H,75H
        MOV       66H,76H
        MOV       67H,77H
        MOV       68H,78H
        MOV       69H,79H
        MOV       6AH,7AH
        MOV       6BH,7BH
        MOV       6CH,7CH
        MOV       6DH,7DH                      ;接受到正确数据SWITCHTIME归0
        MOV       SWITCHTIME,#00H              ;没有收到数据和收到无效的数据看作一种情况。
        MOV       NEWDATA,#0FFH                ;>于4秒均报警
NOTSAVE:NOP
        MOV       SWITCHDATA,#00H
        RET
;*****************************************************************************************
;*****************************************************************************************
DELAYSHORT:
        NOP
        NOP
        MOV     R4,#01H
DELY0:  MOV     R3,#0FFH
DELY1:  MOV     R2,#0FFH
DELY2:  NOP
        DJNZ    R2,DELY2
        DJNZ    R3,DELY1
        LCALL   DOG
        DJNZ    R4,DELY0

        RET
;****************************************************************************************
;*****************************************************************************************
DELAY:
        NOP
        NOP
        MOV     R4,#03H
DEL0:   MOV     R3,#0FFH
DEL1:   MOV     R2,#0FFH
DEL2:   NOP
        DJNZ    R2,DEL2
        DJNZ    R3,DEL1
        LCALL   DOG
        DJNZ    R4,DEL0

        RET
;***********WATCHDOG****************
DOG:	       CPL      P1.7
	       NOP
	       CPL      P1.7
               RET


TABNUM:  DB   3FH,06H,5BH,4FH,66H,6DH,7DH,07H
         DB   7FH,6FH,77H,7CH,39H,5EH,79H,71H

⌨️ 快捷键说明

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