?? wdisp6.#2
字號:
;參考程序A:;WDISP6.ASM
;程序功能:在六個數碼管上顯示6位數據。數值在CPU RAM 的71H ~ 76H之中。
$INCLUDE (C8051F020.inc)
ORG 00H
AJMP START
ORG 0030H
START: ACALL PORT_Init ;I/O口初始化
ACALL INT8255 ;8255初始化
ACALL SEND ;傳送子程序,在RAM 71H~76H中分別存入六位數(1~6)
SS: ACALL DISP ; 顯示子程序
AJMP SS
;顯示子程序
DISP: MOV R2,#01H ; 字位碼在R2中
MOV R5,#6 ;顯示6個數
MOV R0,#71H ;71H為數據區首地址
DSP1: MOV DPTR,#8001H ;#8001H為輸出口PB的地址
MOV A,R2
MOVX @DPTR,A ;PB口輸出字位碼
MOV A,@R0 ;將要顯示的數值送入A中
DSP2: MOV DPTR,#BCD ;查表
MOVC A,@A+DPTR ;查表,查出要顯示的數值的字形碼
MOV DPTR,#8002H ;#8002H為輸出口PC的地址
MOVX @DPTR,A ;C口輸出字形碼
ACALL DEL0 ;延時
MOV A,R2
RL A
MOV R2,A
INC R0
DJNZ R5, DSP1
RET
BCD: DB 3FH,06H,5BH,4FH ;顯示數值0,1,2,3
DB 66H,6DH,7DH,07H ;4,5,6,7
DB 7FH,6FH,77H,7CH ;8,9,A,B
DB 39H,5EH,79H,71H ;C,D,E,F
DB 73H,3EH,31H,6EH ;P,U,Z,Y
DB 40H,00H ;- ,滅
DEL0: MOV R6,#00H ;延時子程序
TM: MOV R7,#10H
DJNZ R7,$
DJNZ R6,TM
RET
;傳送子程序, 在RAM 71H~76H中分別存入六位數字:'1', '2', '3', '4,' '5', '6'
SEND: MOV R7,#6
MOV R0,#71H
MOV A,#1
SS1: MOV @R0,A
INC A
INC R0
DJNZ R7,SS1
RET
;初始化8255
INT8255:MOV A,#80H ; 設置PC口,PB口為輸出,PA口為輸入
MOV DPTR,#8003H ;#8003H為8255的控制寄存器地址
MOVX @DPTR,A
RET
PORT_Init :
MOV EMI0CF ,#2cH; /*EMIF工作在地址/數據復用方式,只用外部存儲器,ALE高/低脈寬占1個SYSCLK周期*/
MOV EMI0TC ,#6dH; /*地址建立/保持時間占1個SYSCLK周期,/WR和/RD占12個SYSCLK周期*/
MOV P74OUT,#3fH; /*P7為漏極開路,P4,P5,P6為推拉方式*/
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -