📄 七段显0.asm
字号:
ORG 0000H
BEGIN: LJMP INIT
ORG 0003H ;INT0
RETI
ORG 000BH ;T0 INT
RETI
ORG 0013H ;1NT1
RETI
ORG 001BH ;T1 INT
RETI
ORG 0023H ;S PORT INT
RETI
ORG 002BH ;T2 INT
RETI
ORG 0030H
;=====================================================
;8032 RAM 00H--FFH CLEAR 0
INIT:
MOV R0,#0FFH
MOV A, #00H
CLE0FFH:
MOV @R0,A
DJNZ R0,CLE0FFH
;SET STACK AREA 70H--7FH
MOV SP,#70H
MOV PSW,#00H
MOV P1,#00H
MOV 30H,#3H
MOV 31H,#2H
MOV 32H,#1H
MOV 33H,#0H
LCALL TICHANG;DISPLAY CHARACTER CHANGE
;====================================================================
ENTRK1: NOP
LCALL KEYSCAN;KEY SACN SUBRUTIN
LCALL DISPLAY;DISPLAY SUBRUTIN
SJMP ENTRK1
;====================================================================
;1. -----------------------------------------------------------------
;KEYSCAN:
; KEY SCAN SUBRUTIN
;
; 1. 8032 P1 PORT PIN DEFINITION
;
; P3.2== +1 KEY BIT
; P3.5== +1 KEY BIT
; P3.6== +1 KEY BIT
; P3.7== +1 KEY BIT
;
; 2. RAM BIT 00H --P3.2 PRESSED
; 01H --P3.5 PRESSED
; 02H --P3.6 PRESSED
; 03H --P3.7 PRESSED
;
;--------------------------------------------------------------------
KEYSCAN:NOP
JB P3.2,KEY1
LCALL DELAY60 ;DELAY 60mS
JB P3.2,KEY1
SETB 00H
CLR 01H
CLR 02H
CLR 03H
LJMP KEYSOUT
KEY1:
JB P3.7,KEY2
LCALL DELAY60 ;DELAY 60mS
JB P3.7,KEY2
SETB 01H
CLR 00H
CLR 02H
CLR 03H
LJMP KEYSOUT
KEY2:
JB P3.6,KEY3
LCALL DELAY60 ;DELAY 60mS
JB P3.6,KEY3
SETB 02H
CLR 00H
CLR 01H
CLR 03H
LJMP KEYSOUT
KEY3:
JB P3.5,KEYSOUT
LCALL DELAY60 ;DELAY 60mS
JB P3.5,KEYSOUT
SETB 03H
CLR 00H
CLR 01H
CLR 02H
KEYSOUT:
RET
;--------------------------------------------------------------------
;2.------------------------------------------------------------------
;TICHANG
;--------------------------------------------------------------------
TICHANG:NOP
MOV R7,#4
MOV R0,#6FH
MOV R1,#33H
TCHANG0:MOV A,@R1
LCALL DCCHANG ;DISPLAY CHARACTER CHANGE
CPL A
MOV @R0,A
DEC R0
DEC R1
DJNZ R7,TCHANG0
TICHOUT:NOP
RET
;--------------------------------------------------------------------
;4.------------------------------------------------------------------
;DISPLAY:
; DISPLAY SUBRUTIN
;
; RAM:6FH CLOCK HORE 10 BIT
; 6EH CLOCK HORE 1 BIT
; 6DH CLOCK MIN 10 BIT
; 6CH CLOCK MIN 1 BIT
;
;--------------------------------------------------------------------
DISPLAY:NOP
JNB 00H,DIS2
MOV P0,6FH
CLR P1.0
LCALL DELAY60 ;DELAY 60MS
LCALL DELAY60 ;DELAY 60MS
SETB P1.1
SETB P1.2
SETB P1.3
DIS2:
JNB 01H,DIS3
MOV P0,6EH
CLR P1.1
LCALL DELAY60 ;DELAY 60MS
LCALL DELAY60 ;DELAY 60mS
SETB P1.0
SETB P1.2
SETB P1.3
DIS3:
JNB 02H,DIS4
MOV P0,6DH
CLR P1.2
LCALL DELAY60 ;DELAY 60MS
LCALL DELAY60 ;DELAY 60MS
SETB P1.0
SETB P1.1
SETB P1.3
DIS4:
JNB 03H,DISOUT
MOV P0,6CH
CLR P1.3
LCALL DELAY60 ;DELAY 60MS
LCALL DELAY60 ;DELAY 60MS
SETB P1.0
SETB P1.1
SETB P1.2
DISOUT:
RET
;--------------------------------------------------------------------
;6.------------------------------------------------------------------
;DELAY60:
; DELAY 100mS FOR NEXT RANGING
;--------------------------------------------------------------------
DELAY60:PUSH PSW
MOV PSW,#00H
MOV R3,#6 ;#10 0.5ms * 10 = 5ms 1997-9-3
W60MS: MOV R4,#0FAH ;0FAH =250
W500US1:DJNZ R4,W500US1 ;TIME = 2US 2 US * 250 = 0.5 MS
DJNZ R3,W60MS
POP PSW
RET
;-------------------------------------------------------------------
;7.------------------------------------------------------------------
;DCCHANG:
; DISPLAY CHARACTERS CHANGE ROUTINE
; NOTE:
; 1. ENTRY A-----LOAD SETOFF
; 2. RET A-------DISPLAY CHARACTER
;--------------------------------------------------------------------
DCCHANG:MOV DPTR,#CHARAL
MOVC A,@A+DPTR
RET
;CHARACTERS LIST
CHARAL: DB 3FH,06H,5BH,4FH,66H,6DH
;SETOFF : 00H,01H,02H,03H,04H,05H,
;CHARACTERS: 0, 1, 2, 3, 4 , 5
DB 7DH,07H,7FH,6FH,77H,7CH
; 06H,07H,08H,09H,0AH,0BH,
; 6, 7, 8, 9, A, B,
DB 39H,5EH,79H,71H,73H,3EH
; 0CH,0DH,0EH,0FH,10H,11H,
; C, D, E, F, P, U,
;--------------------------------------------------------------------
;====================================================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -