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

📄 count.asm

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                INC     R0
                CJNE    R0,#00H,REPEAT3
                RET

LCD_INIT:       ACALL   DELAY
                ACALL   DELAY
                ACALL   DELAY
                ACALL   DELAY

                MOV     A,#30h
                ACALL   SEND_CMD
                ACALL   DELAY
                ACALL   DELAY

                MOV     A,#30h
                ACALL   SEND_CMD
                MOV     R7,#0FFh
                DJNZ    R7,$
                MOV     R7,#0FFh
                DJNZ    R7,$
                ACALL   CHK_BUSY

                MOV     A,#30h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#38h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#08h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#0Eh
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#06h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#01h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#0CH
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                ACALL   DELAY
                ACALL   DELAY
                RET
;
;
CHK_BUSY:       MOV     LCD_DATA,#0FFh
                CLR     LCD_RS
                SETB    LCD_RW
                NOP
CHECK:          CLR     LCD_EN
                SETB    LCD_EN
                NOP
                JB      LCD_D7,CHECK
                CLR     LCD_EN
                RET
;
;
SEND_CMD:       MOV     LCD_DATA,A
                CLR     LCD_RS
                CLR     LCD_RW
                SETB    LCD_EN
                NOP
                NOP
                CLR     LCD_EN
                RET
;
;
SEND_DATA:      MOV     LCD_DATA,A
                SETB    LCD_RS
                CLR     LCD_RW
                SETB    LCD_EN
                NOP
                NOP
                CLR     LCD_EN
                RET
;
;
DISP1:          MOV     A,#80h
                LCALL   SEND_CMD
                LCALL   CHK_BUSY
             
                MOV     A,CHAR1
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR2
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR3
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR4
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR5
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR6
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR7
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR8
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR9
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR10
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR11
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR12
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR13
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR14
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR15
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR16
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                RET
;
;
DISP2:          MOV     A,#0C0h
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#3AH
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#73H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#65H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#63H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                RET

DELAY:          MOV     R6,#00H
                MOV     R7,#00H
WAIT:           DJNZ    R6,$
                DJNZ    R7,WAIT
                RET

REPEAT4:        MOVC    A,@A+DPTR
                MOV     @R0,A
                INC     R0
                INC     R1
                MOV     A,R1
                CJNE    R1,#10H,REPEAT4
                CLR     A
                MOV     R0,A
                MOV     R1,A
                RET

COUNTER:        MOV     A,CHAR29
                SUBB    A,#3AH
                INC     A
                JZ      CARRY1
                INC     CHAR29
                RET

CARRY1:         MOV     CHAR29,#30H
                MOV     A,CHAR28
                CLR     C
                INC     A
                SUBB    A,#3AH
                INC     A
                JZ      CARRY2
                INC     CHAR28
                RET

CARRY2:         MOV     CHAR28,#30H 
                MOV     A,CHAR26
                CLR     C
                INC     A
                SUBB    A,#3AH
                JZ      CARRY3
                INC     CHAR26
                RET

CARRY3:         MOV     CHAR26,#30H   
                MOV     A,CHAR25
                CLR     C
                INC     A
                SUBB    A,#3AH
                JZ      CARRY4
                INC     CHAR25
                RET


CARRY4:         MOV     CHAR25,#30H
                RET

;
WAIT_FOR_KEY:   MOV     A,P2
                CPL     A
                JZ      WAIT_FOR_KEY    ; NO KEY PRESSED

                MOV     TEMP_KEY,A      ; KEY PRESS DETECTED
                LCALL   DELAY
                MOV     A,P2
                CPL     A
                CLR     C
                SUBB    A,TEMP_KEY
                JNZ     WAIT_FOR_KEY
                MOV     KEY_ID,TEMP_KEY
                MOV     TEMP_KEY,#00H
                RET

MESSAGE1:       MOV     CHAR1,#'S'
                MOV     CHAR2,#'T'
                MOV     CHAR3,#'A'
                MOV     CHAR4,#'T'

                MOV     CHAR5,#'U'
                MOV     CHAR6,#'S'
                MOV     CHAR7,#20H
                MOV     CHAR8,#':'

                MOV     CHAR9,#'S'
                MOV     CHAR10,#'T'
                MOV     CHAR11,#'O'
                MOV     CHAR12,#'P'

                MOV     CHAR13,#20H
                MOV     CHAR14,#20H
                MOV     CHAR15,#20H
                MOV     CHAR16,#20H


                RET


MESSAGE2:       MOV     CHAR1,#'S'
                MOV     CHAR2,#'T'
                MOV     CHAR3,#'A'
                MOV     CHAR4,#'T'

                MOV     CHAR5,#'U'
                MOV     CHAR6,#'S'
                MOV     CHAR7,#20H
                MOV     CHAR8,#':'

                MOV     CHAR9,#'S'
                MOV     CHAR10,#'T'
                MOV     CHAR11,#'A'
                MOV     CHAR12,#'R'

                MOV     CHAR13,#'T'
                MOV     CHAR14,#20H
                MOV     CHAR15,#20H
                MOV     CHAR16,#20H

                RET
;
;SQUARE WAVE GENERATION ROUTINE
;
TMR0_INIT:      MOV     TL0,#0F0H
                MOV     TH0,#0DBH
                SETB    IE.7          ;iNTRUPPUT ENABLE
                SETB    IE.1
                MOV     TMOD,#01H     ;
                NOP
                NOP
                SETB    TCON.4        ; SET TR1
                RET
;
;
;********************************************************************
; INTERRUPT SERVICE ROUTINES
;********************************************************************
;

INTRPT0:        NOP
                RETI
;
;********************************************************************
;
TIMER0X:          CLR     TCON.4		; CLEAR TR1
                CPL     P0.7		; COMPLEMENT P0.7
                MOV     TL0,#0F0H
                MOV     TH0,#0D0H
                SETB    TCON.4
                RETI
;
;********************************************************************
;
INTRPT1:        NOP
                RETI
;
;********************************************************************
;
TIMER1Y:         NOP
                RETI
;
;********************************************************************
;
SERIAL:         NOP
                RETI
;
;********************************************************************
;DISPLAY STRINGS
;

END

⌨️ 快捷键说明

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