本實驗用單片機實現(xiàn)用八位數(shù)碼管顯示0-7。目的是:1、掌握8051 CPU的子程序調(diào)用的相關(guān)指令; 2、掌握子程序調(diào)用的匯編編程寫法; 3、了解數(shù)碼管動態(tài)顯示的方法。 1、子程序概述 子程序是指能被主程序或其它程序調(diào)用,具有獨立完備功能的 程序段。微控制器系統(tǒng)的應(yīng)用程序通常包含多個子程序。子程序的運用,能夠提高編程效率、實現(xiàn)程序模塊化,也便于程序的繼承。調(diào)用子程序的程序稱為主程序或調(diào)用程序。 斷點地址:子程序調(diào)用指令的下一條指令地址; 子程序地址:子程序第一條指令的地址。 子程序調(diào)用:CALL指令自動將斷點地址壓入堆棧保護,然后將子程序地址送PC,實現(xiàn)子程序的調(diào)用; 子程序返回:子程序的最后一條RET指令,將使堆棧頂部的斷點地址彈出到PC,實現(xiàn)子程序的返回。
子程序嵌套:在子程序中,調(diào)用其它子程序的情況,稱為子程序嵌套調(diào)用
圖片2.png (10.12 KB, 下載次數(shù): 84)
下載附件
2021-7-21 19:22 上傳
圖片1.png (6.02 KB, 下載次數(shù): 102)
下載附件
2021-7-21 19:22 上傳
2、子程序編寫的注意點 (1)子程序的第1條指令必須有標號,表示該子程序的名稱,也是子程序的符號地址。要有子程序的功能說明。 (2)要明確子程序的調(diào)用條件和出口狀態(tài) • 調(diào)用條件:調(diào)用子程序需要準備的參數(shù)(如要處理的數(shù),或存放的寄存器或內(nèi)存地址等); • 出口狀態(tài):調(diào)用子程序后的結(jié)果(結(jié)果形式或存放地址等)。 (3)保護現(xiàn)場和恢復現(xiàn)場 保護現(xiàn)場:子程序前部,將不允許被破壞的內(nèi)容保護起來; 恢復現(xiàn)場:子程序返回前,將保護的內(nèi)容恢復到保護前的狀況; 要注意堆棧的“先進后出”操作規(guī)則,以保證現(xiàn)場保護和恢復的正確。 (4)子程序的正確返回 子程序的最后一條指令必須是RET指令。 子程序中,對堆棧的入棧和出棧操作次數(shù)必須相等,以保證返回后堆棧指針SP的值與調(diào)用時一致。
圖片3.png (66.63 KB, 下載次數(shù): 85)
下載附件
2021-7-21 19:22 上傳
圖片4.png (56.86 KB, 下載次數(shù): 87)
下載附件
2021-7-21 19:22 上傳
3、數(shù)碼管簡介 七段數(shù)碼管是電子開發(fā)過程中常用的輸出顯示設(shè)備。在實驗系統(tǒng)中使用的是兩個四位一體、共陰極型七段數(shù)碼管。其單個靜態(tài)數(shù)碼管如下圖4-1所示。
圖片5.png (215.05 KB, 下載次數(shù): 78)
下載附件
2021-7-21 19:22 上傳
圖4-1 靜態(tài)七段數(shù)碼管 由于七段數(shù)碼管公共端連接到GND(共陰極型),當數(shù)碼管的中的那一個段被輸入高電平,則相應(yīng)的這一段被點亮。反之則不亮。四位一體的七段數(shù)碼管在單個靜態(tài)數(shù)碼管的基礎(chǔ)上加入了用于選擇哪一位數(shù)碼管的位選信號端口。八個數(shù)碼管的a、b、c、d、e、f、g、h、dp都連在了一起,8個數(shù)碼管分別由各自的位選信號來控制,被選通的數(shù)碼管顯示數(shù)據(jù),其余關(guān)閉。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (89.85 KB, 下載次數(shù): 85)
下載附件
2021-7-22 04:01 上傳
單片機源程序如下:
- ORG 0000H
- LJMP MAIN
- ORG 0100H
- MAIN:
- MOV R1,#0FEH
- MOV R2,#00H
- MOV R3,#08H
- MOV A,#00H
- LOOP:
- MOV DPTR,#TABLE
- MOV A,R2
- MOVC A,@A+DPTR
- MOV R0,A
- INC R2
- MOV P3,R1
- MOV P2,R0
- LCALL DELAY
- MOV A,R1
- RL A
- MOV R1,A
- DJNZ R3,LOOP
- LJMP MAIN
- DELAY1ms:PUSH 30H
- MOV 30H,#0F8H ;F8
- DD:NOP
- NOP
- DJNZ 30H,DD
- POP 30H
- RET
- DELAY:
- MOV R5,#255
- D1:MOV R6,#255
- D2:NOP
- NOP
- DJNZ R6,D2
- DJNZ R5,D1
- RET
- TABLE:DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,77H,7cH,39H,5eH,79H,71H
- END
復制代碼 仿真代碼51hei附件下載:
實驗六工程.7z
(52.94 KB, 下載次數(shù): 11)
2021-7-22 04:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|