?? s19-1.asm
字號:
;********89C51引腳定義********
RS BIT P3.3
R_W BIT P3.4
E BIT P3.5
DB0_DB7 EQU P1
;------計數器A緩存單元定義--------
A4 EQU 40H
A3 EQU 41H
A2 EQU 42H
A1 EQU 43H
A0 EQU 44H
;-----計數器B緩存單元定義------
B4 EQU 45H
B3 EQU 46H
B2 EQU 47H
B1 EQU 48H
B0 EQU 49H
;-----計數器C緩存單元定義------
C4 EQU 4AH
C3 EQU 4BH
C2 EQU 4CH
C1 EQU 4DH
C0 EQU 4EH
;-----計數器D緩存單元定義-----
D4 EQU 4FH
D3 EQU 50H
D2 EQU 51H
D1 EQU 52H
D0 EQU 53H
;------LCD顯示緩存指針------
LCD_POINT EQU 54H
;*******程序開始********
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIMER0
;*******主程序*******
ORG 0030H
MAIN: MOV TMOD,#01H
MOV TL0,#00H
MOV TH0,#00H
SETB EA
SETB ET0
SETB TR0
MOV SP,#60H
LCALL INITIAL
LCALL CLN
;*****顯示A:*************
AGAIN: MOV A,#10000000B
LCALL WRITE_COM
MOV A,#41H
LCALL WRITE_DATA
MOV A,#10000001B
LCALL WRITE_COM
MOV A,#3AH
LCALL WRITE_DATA
;--------- 顯示B:--------------------
MOV A,#10001001B
LCALL WRITE_COM
MOV A,#42H
LCALL WRITE_DATA
MOV A,#10001010B
LCALL WRITE_COM
MOV A,#3AH
LCALL WRITE_DATA
;---------- 顯示C:-------------------
MOV A,#11000000B
LCALL WRITE_COM
MOV A,#43H
LCALL WRITE_DATA
MOV A,#11000001B
LCALL WRITE_COM
MOV A,#3AH
LCALL WRITE_DATA
;---------- 顯示D:---------------------
MOV A,#11001001B
LCALL WRITE_COM
MOV A,#44H
LCALL WRITE_DATA
MOV A,#11001010B
LCALL WRITE_COM
MOV A,#3AH
LCALL WRITE_DATA
;*******計數程序啟動********
START: MOV LCD_POINT,#10000010B
MOV R0,#A4
LCALL DISP
MOV LCD_POINT,#10001011B
MOV R0,#B4
LCALL DISP
MOV LCD_POINT,#11000010B
MOV R0,#C4
LCALL DISP
MOV LCD_POINT,#11001011B
MOV R0,#D4
LCALL DISP
LJMP START
;*******顯示計數值********
DISP: MOV R2,#05H
MOV A,LCD_POINT
LCALL WRITE_COM
LL0: MOV A,@R0
ADD A,#30H
LCALL WRITE_DATA
INC R0
DJNZ R2,LL0
RET
;******清除計數緩存(40H~53H)單元*******
CLN: MOV R1,#20
MOV R0,#40H
CLR A
THERE: MOV @R0,A
INC R0
DJNZ R1,THERE
RET
;*******定時器T0中斷服務子程序********
TIMER0: MOV TL0,#00H
MOV TH0,#00H
CLR P3.7
SETB P3.6
JB P3.0,NEXT1
LCALL DEL
JB P3.0,NEXT1
LCALL CONV_B
NEXT1: JB P3.1,NEXT2
LCALL DEL
JB P3.1, NEXT2
LCALL CONV_D
;---------------------------------
NEXT2: CLR P3.6
SETB P3.7
JB P3.0,NEXT3
LCALL DEL
JB P3.0,NEXT3
LCALL CONV_A
NEXT3: JB P3.1,NEXT4
LCALL DEL
JB P3.1, NEXT4
LCALL CONV_C
NEXT4: RETI
;*******計數器A進行計算********
CONV_A: PUSH ACC
PUSH PSW
INC A0
MOV A,A0
CJNE A,#0AH,DONE_A
MOV A0,#00H
MOV A,A1
ADD A,#01H
MOV A1,A
CJNE A,#0AH,DONE_A
MOV A1,#00H
MOV A,A2
ADD A,#01H
MOV A2,A
CJNE A,#0AH,DONE_A
MOV A2,#00H
MOV A,A3
ADD A,#01H
MOV A3,A
CJNE A,#0AH,DONE_A
MOV A3,#00H
MOV A,A4
ADD A,#01H
MOV A4,A
CJNE A,#0AH,DONE_A
MOV A4,#00H
DONE_A: POP PSW
POP ACC
RET
;*******計數器B進行計算********
CONV_B: PUSH ACC
PUSH PSW
INC B0
MOV A,B0
CJNE A,#0AH,DONE_B
MOV B0,#00H
MOV A,B1
ADD A,#01H
MOV B1,A
CJNE A,#0AH,DONE_B
MOV B1,#00H
MOV A,B2
ADD A,#01H
MOV B2,A
CJNE A,#0AH,DONE_B
MOV B2,#00H
MOV A,B3
ADD A,#01H
MOV B3,A
CJNE A,#0AH,DONE_B
MOV B3,#00H
MOV A,B4
ADD A,#01H
MOV B4,A
CJNE A,#0AH,DONE_B
MOV B4,#00H
DONE_B: POP PSW
POP ACC
RET
;*******計數器C進行計算********
CONV_C: PUSH ACC
PUSH PSW
INC C0
MOV A,C0
CJNE A,#0AH,DONE_C
MOV C0,#00H
MOV A,C1
ADD A,#01H
MOV C1,A
CJNE A,#0AH,DONE_C
MOV C1,#00H
MOV A,C2
ADD A,#01H
MOV C2,A
CJNE A,#0AH,DONE_C
MOV C2,#00H
MOV A,C3
ADD A,#01H
MOV C3,A
CJNE A,#0AH,DONE_C
MOV C3,#00H
MOV A,C4
ADD A,#01H
MOV C4,A
CJNE A,#0AH,DONE_C
MOV C4,#00H
DONE_C: POP PSW
POP ACC
RET
;*******計數器D進行計算********
CONV_D: PUSH ACC
PUSH PSW
INC D0
MOV A,D0
CJNE A,#0AH,DONE_D
MOV D0,#00H
MOV A,D1
ADD A,#01H
MOV D1,A
CJNE A,#0AH,DONE_D
MOV D1,#00H
MOV A,D2
ADD A,#01H
MOV D2,A
CJNE A,#0AH,DONE_D
MOV D2,#00H
MOV A,D3
ADD A,#01H
MOV D3,A
CJNE A,#0AH,DONE_D
MOV D3,#00H
MOV A,D4
ADD A,#01H
MOV D4,A
CJNE A,#0AH,DONE_D
MOV D4,#00H
DONE_D: POP PSW
POP ACC
RET
;****** 啟動LCM子程序******
INITIAL:MOV A,#00111000B
LCALL WRITE_COM
MOV A,#00001100B
LCALL WRITE_COM
MOV A,#00000110B
LCALL WRITE_COM
RET
;******查詢忙碌標志信號子程序******
CHECK_BUSY: PUSH ACC
BUSY_LOOP: CLR E
SETB R_W
CLR RS
SETB E
MOV A, DB0_DB7
CLR E
JB ACC.7,BUSY_LOOP
POP ACC
LCALL DEL
RET
;****** 寫指令到LCM子程序******
WRITE_COM: LCALL CHECK_BUSY
CLR E
CLR RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;****** 寫數據到LCM子程序******
WRITE_DATA: LCALL CHECK_BUSY
CLR E
SETB RS
CLR R_W
SETB E
MOV DB0_DB7,A
CLR E
RET
;*******清除LCM子程序*******
CLS: MOV A,#00000001B
LCALL WRITE_COM
RET
;****延時子程序****
DEL: MOV R6,#5
L1: MOV R7,#248
DJNZ R7,$
DJNZ R6,L1
RET
;********************
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -