8085微處理器即時時鐘模擬程式
在這裡,我們將看到一個有趣的問題。我們將瞭解如何使用8085微處理器模擬一個即時時鐘。
問題陳述−
編寫一個8085組合語言程式來模擬即時時鐘。
討論−
在這個程式中,我們使用8085MPU建立了一個即時時鐘。在這裡,我們生成1秒延遲來更新秒數。這個時鐘是24小時時鐘。我們從00:00:00初始化時鐘。要將值顯示到7段顯示器上,我們必須使用一些埠IC和正確的配置。每60秒更新分鐘欄位,每60分鐘更新小時欄位。對於十進位制更新,在每次增量中使用DAA指令。
我們將小時欄位儲存在8008H中,分鐘欄位儲存在8007H中。秒值儲存在位置8009H。
注意:這裡為了簡單起見,我們將數字儲存在記憶體中。要顯示數字,我們可以使用7段顯示器和其他顯示功能將其顯示在顯示器上。
輸入
這裡我們沒有提供任何輸入。
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 00, 00 | BEG | LXI H,0000H | 用0000H清零HL |
| F003 | 22, 07, 80 | HR_MIN | SHLD 8007H | 將HL內容儲存在8007H和8006H中 |
| F006 | AF | | XRA A | 清零A暫存器 |
| F007 | 32, 09, 80 | N_SEC | STA 8009H | 將累加器內容儲存在8009H中 |
| F00A | CD, 34, F0 | | CALL DELAY | 延遲1秒 |
| F00D | 3A, 09, 80 | | LDA 8009H | 載入秒值 |
| F010 | C6, 01 | | ADI 01H | 將01加到累加器中 |
| F012 | 27 | | DAA | 調整十進位制 |
| F013 | FE, 60 | | CPI 60H | 與60H比較 |
| F015 | C2, 07, F0 | | JNZ N_SEC | 如果Z=0,跳轉到N_SEC |
| F018 | 2A, 07, 80 | | LHLD 8007H | 從8007H載入HL |
| F01B | 7D | | MOV A,L | 將L載入到A |
| F01C | C6, 01 | | ADI 01H | 將01加到A |
| F01E | 27 | | DAA | 十進位制調整 |
| F01F | 6F | | MOV L,A | 將A載入到L |
| F020 | FE, 60 | | CPI 60H | 將A與60H比較 |
| F022 | C2, 03, F0 | | JNZ HR_MIN | 如果Z=0,跳轉到HR_MIN |
| F025 | 2E, 00 | | MVI L,00H | 清零L暫存器 |
| F027 | 7C | | MOV A,H | 將H載入到A |
| F028 | C6, 01 | | ADI 01H | 將01加到A |
| F02A | 27 | | DAA | 十進位制調整 |
| F02B | 67 | | MOV H,A | 將A送回H |
| F02C | FE, 24 | | CPI 24H | 將小時與24比較 |
| F02E | C2, 03, F0 | | JNZ HR_MIN | 如果Z=0,跳轉到HR_MIN |
| F031 | C3, 00 | | JMP BEG | 跳轉到開始 |
| F034 | 0E, 02 | DELAY | MVI C,02H | 將計數初始化為02H |
| F036 | 11, FF, FF | L1 | LXI D,FFFFH | 將DE載入為FFFFH |
| F039 | 1B | L2 | DCX D | 減少DE |
| F03A | 7A | | MOV A,D | 將D取到A |
| F03B | B3 | | ORA E | 對A和E進行或運算 |
| F03C | C2, 16, F0 | | JNZ L2 | 如果Z=0,跳轉到L2 |
| F03F | 0D | | DCR C | 將C減1 |
| F040 | C2, 13, F0 | | JNZ L1 | 如果Z=0,跳轉到L1 |
| F043 | C9 | | RET | 從子程式返回 |
輸出
數字儲存在記憶體位置8008H – 8007H和8009H中。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP