📄 count.asm
字号:
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 + -