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

📄 count.asm

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;********************************************************************
; APPLICATION PROGRAM FOR COUNTER(LCD ,SQUARE WAVE O/P AT PIN NO. 32 (P0.7) AND KEYBOARD MODULE)
;OUTPUT DISPLAY-----> 
;!!!!!!!!!!!!!!!!!!!!!
;!!STATUS:START/STOP!!
;!!        00:00sec !!
;!!!!!!!!!!!!!!!!!!!!!
;;********************************************************************

                ORG     0000H
                LJMP    STARTUP         ;POWER-ON RESET

                ORG     0003H
                LJMP    INTRPT0         ;EXTERNAL INTERRUPT 0

                ORG     000B
                LJMP    TIMER0X          ;TIMER 0 OVERFLOW

                ORG     0013H
                LJMP    INTRPT1         ;EXTERNAL INTERRUPT 1

                ORG     001B
                LJMP    TIMER1Y          ;TIMER 1 OVERFLOW

                ORG     0023H
                LJMP    SERIAL          ;UART RX/TX INTERRUPT

;
;********************************************************************
; BYTE VARIABLES
;
;
TEMP_KEY        DATA    40H
KEY_ID          DATA    41H

CHAR1           DATA    50h
CHAR2           DATA    51h
CHAR3           DATA    52h
CHAR4           DATA    53h
CHAR5           DATA    54h
CHAR6           DATA    55h
CHAR7           DATA    56h
CHAR8           DATA    57h
;                       
CHAR9           DATA    58h
CHAR10          DATA    59h
CHAR11          DATA    5Ah
CHAR12          DATA    5Bh
CHAR13          DATA    5Ch
CHAR14          DATA    5Dh
CHAR15          DATA    5Eh
CHAR16          DATA    5Fh
;
CHAR17          DATA    60h
CHAR18          DATA    61h
CHAR19          DATA    62h
CHAR20          DATA    63h
CHAR21          DATA    64h
CHAR22          DATA    65h
CHAR23          DATA    66h
CHAR24          DATA    67h
;                       
CHAR25          DATA    68h
CHAR26          DATA    69h
CHAR27          DATA    6Ah
CHAR28          DATA    6Bh
CHAR29          DATA    6Ch
CHAR30          DATA    6Dh
CHAR31          DATA    6Eh
CHAR32          DATA    6Fh

;********************************************************************
; BIT VARIABLES
;
LCD_D0          BIT     P1.0
LCD_D1          BIT     P1.1
LCD_D2          BIT     P1.2
LCD_D3          BIT     P1.3
LCD_D4          BIT     P1.4
LCD_D5          BIT     P1.5
LCD_D6          BIT     P1.6
LCD_D7          BIT     P1.7

LCD_EN          BIT     P3.5
LCD_RW          BIT     P3.6
LCD_RS          BIT     P3.7

LCD_DATA        EQU     P1

ADDR1           EQU     80h
ADDR2           EQU     90h

RUNFLG          BIT     20H
;********************************************************************
; CONSTANTS/EXPRESSIONS
;
;********************************************************************
; MAIN PROGRAM STARTS HERE
;
STARTUP:        MOV     SP,#07h
                CLR     RUNFLG
                LCALL   RAM_INIT

                CLR     LCD_RS
                CLR     LCD_RW
                SETB    LCD_EN
                NOP
                CLR     LCD_EN

                LCALL   LCD_INIT
                LCALL   DELAY
                LCALL   DELAY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'A'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'T'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'S'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'

                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY


                MOV     A,#0C0h
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,#'C'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'E'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'N'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'T'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY		
                
                MOV     A,#'I'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'S'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'E'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'C'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'.'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

		MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'T'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY		
                
                MOV     A,#'I'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'M'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'E'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'R'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY



                MOV     R2,#08H
REPEAT:         LCALL   DELAY
                DJNZ    R2,REPEAT

                LCALL   MESSAGE1
                LCALL   DISP1
                LCALL   DISP2

                CLR     RUNFLG
                MOV     CHAR25,#30H
                MOV     CHAR26,#30H
                MOV     CHAR28,#30H
                MOV     CHAR29,#30H

                MOV     A,#0C8H
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,CHAR25
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR26
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#0CBH
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,CHAR28
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR29
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                LCALL   TMR0_INIT       ; TIMER 0 CALL

PROCESS:        LCALL   WAIT_FOR_KEY

                MOV     A,KEY_ID
                CLR     C
                SUBB    A,#01H          ;CHECK IF IT IS START/STOP KEY
                JZ      STRT_STP

                MOV     A,KEY_ID
                CLR     C
                SUBB    A,#02H          ;CHECK IF IT IS RESET KEY
                JZ      RST_KEY

                MOV     A,KEY_ID
                CLR     C
                SUBB    A,#04H          ;CHECK IF IT IS PULSE KEY
                JZ      PULSE_KEY

                CLR     A
                MOV     TEMP_KEY,A
                MOV     KEY_ID,A
                SJMP PROCESS

RST_KEY:        MOV     A,#0C8H
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#0CBH
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY


RST_CNTR:       MOV     A,#30H
                MOV     CHAR29,A
                MOV     CHAR28,A
                MOV     CHAR26,A
                MOV     CHAR25,A

                SJMP    PROCESS

STRT_STP:       CPL     RUNFLG
                MOV     KEY_ID,#00H
                MOV     TEMP_KEY,#00H
                JB      RUNFLG,MODIFY
                LCALL   MESSAGE1
                LCALL   DISP1
                SJMP    PROCESS
MODIFY:         LCALL   MESSAGE2
                LCALL   DISP1
                SJMP    PROCESS

PULSE_KEY:      JB      RUNFLG,INCR
                MOV     KEY_ID,#00H
                MOV     TEMP_KEY,#00H
                AJMP    PROCESS

INCR:           LCALL   COUNTER
                MOV     A,#0C8H
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,CHAR25
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR26
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#0CBH
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,CHAR28
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR29
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     KEY_ID,#00H
                MOV     TEMP_KEY,#00H
                LJMP    PROCESS


;********************************************************************
; FUNCTIONS/SUBROUTINES

RAM_INIT:       MOV     R0,#30H
                CLR     A
REPEAT3:        MOV     @R0,A

⌨️ 快捷键说明

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