?? 顯示器.txt
字號:
DBUF EQU 39H
DCNT EQU 50H ;定義DBUF ,DCNT
ORG 0 ;程序起始偏移量
MAIN: MOV SP, #6FH ;將堆棧指針置初值
MOV DCNT, #20H ;立即數20H送入DCNT 即50H
MOV R7, #6 ;設置循環次數,用R7記錄
MOV R0, #DBUF ;將 39H送R0
CLR A ;清累加器內容
MLP0: MOV @R0, A ;R0指向的地址的內容清零
;在循環中對39H~3EH的內存地址清零
;39H~3EH用于存顯示值
INC R0 ;指針加1,指向下一地址
DJNZ R7, MLP0 ;循環6次
MOV DPTR, #5FFFH ;將8279命令口地址送DPTR
MOV A, #0DCH ;設定8279的控制字110 11100B,將顯示RAM置為全1
MOVX @DPTR, A ;送控制字
LP: MOVX A, @DPTR ;讀8279狀態字
JB ACC.7, LP ;判斷ACC最高位為1回到上一步
MOV A, #00H ;設定8279的控制字000 00000B,左進方式,顯示8
個字符,二鍵鎖定,編碼掃描
MOVX @DPTR, A ;送控制字
MOV A, #2AH ;設定8279的控制字001 01010B,將系統時鐘分頻至
100kHz的10倍
MOVX @DPTR, A ;送控制字
MLP1: LCALL DIR ;調用顯示子程序
DJNZ DCNT, MLP1 ;如果DCNT減1為0,則繼續,否則跳轉到MLP1。
;通過循環顯示使字型穩定
MOV DCNT, #20H ;立即數20H送入DCNT 即50H
;下面是計數循環,從39H開始,按數位依次累加
CONT: MOV R0, #DBUF ;立即數39H送R0
MOV R7, #6 ;R7為循環計數,循環6次
CNT1: MOV A, @R0 ;得到R0指向的地址中的內容用于累加
CLR C ;進位位清零
ADDC A, #01H ;將A中內容帶進位加1
①SUBB A, #01H ;將A中內容帶進位減1,擴展實驗1中相對原程序的改變
DA A ;調整A為10進制
CJNE A, #0AH, $+3 ;如果A中內容不等于10,將進位位置位
JNC CNT2 ;如果進位為0,跳轉到CNT2,否則繼續
MOV @R0, A ;將A內容移到R0所指的地址
LCALL DEEE ;調用延時子程序
SJMP MLP1 ;跳轉到MLP1
CNT2: CLR A ;如果有進位,清A
MOV @R0, A ;將A內容移入到R0所指向的地址
INC R0 ;R0加1,指向下一個地址,處理當前R0指向的地
址加1后的進位
DJNZ R7, CNT1 ;循環,R7減1不為0跳轉到CNT1
LCALL DEEE ;調用延時子程序
SJMP MLP1 ;跳轉到MLP1
;顯示子程序
DIR: MOV R2, #06H ;順次顯示6個LED,循環次數6送R2
MOV DPTR, #5FFFH ;將8279命令口地址送DPTR
MOV A, #92H ;設A為8279寫顯示RAM命令100 10010B,自動地址
遞增,從RAM中的2H地址開始
MOVX @DPTR, A ;送控制字
MOV R0, #39H ;立即數39H送R0,6位顯示值的首地址
TY11: MOV DPTR,#TABL ;將表格TABL的表地址送入16位數據指針
MOV A, @R0 ;將R0指向的地址的內容送A
MOVC A, @A+DPTR ;在表格內查找顯示碼
MOV DPTR, #5EFFH ;將8279數據口地址送DPTR
MOVX @DPTR, A ;送顯示數據到8279
INC R0 ;將偏移量加1,以查找下一個顯示數據
DJNZ R2, TY11 ;循環6次,如果沒有顯示完,則跳轉到TY11
RET ;子程序返回
;延時子程序,共做4×255×255的空循環
DEEE: MOV R5, #04H ;一條語句平均延時1毫秒,延時次數4H送R5
DEE3: MOV R1, #0FFH ;延時次數0FFH送R1
DEE1: MOV R4, #0FFH ;延時次數0FFH送R4
DEE2: DJNZ R4, DEE2 ;R4減1為0則繼續,否則跳轉到DEE2
DJNZ R1, DEE1 ;R1減1為0則繼續,否則跳轉到DEE1
DJNZ R5, DEE3 ;R5減1為0則繼續,否則跳轉到DEE3
RET ;子程序返回
TABL: DB 0C0H,0F9H,0A4H,0B0H ;數據表格,存儲對應的LED燈顯示碼
DB 99H,92H,82H,0F8H,80H ;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,P,U
DB 90H,88H,83H,0C6H,0A1H;H,L,Y,8, ,
DB 86H,8EH,8CH,0C1H,89H
DB 0C7H,0BFH,91H,00H,0FFH
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -