【微機原理作業】從0開始設計RTC系統(三)

【微機原理作業】從0開始設計RTC系統(一)
【微機原理作業】從0開始設計RTC系統(二)
上兩篇博客實現了秒錶功能,但我們希望鐘錶還有調整時鐘的功能,所以需要外加一個按鍵調整時鐘電路。

思路

思路

仿真硬件

8255A :A、B口輸出,C口上部輸出,下部輸入
8255A重置清零按鈕按下後,時鐘從0開始計時
秒調整按鈕按下後,秒數加1,其餘類似
其餘硬件不變

彙編程序

主程序

LP:
    ; 主任務
    CALL KEY
    CALL DISP    ; 顯示子程序調用
    JMP LP   ; 循環

按鍵

KEY   PROC
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 8H
    JZ NEXTHOU 
    TEST AL, 4H     
    JZ NEXTMIN
    TEST AL, 2H      
    JZ NEXTSEC
    TEST AL, 1H
    JZ RESET
    CALL DISP       ; 消抖
    CALL DISP 
    CALL DISP
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 8H
    JZ NEXTHOU 
    TEST AL, 4H
    JZ NEXTMIN
    TEST AL, 2H
    JZ NEXTSEC
    TEST AL, 1H
    JZ RESET

重置清零

RESET: 
    ; 清零
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 1H
    JNZ EXITKEY  
    CALL DISP
    CALL DISP
    CALL DISP
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 1H
    JNZ EXITKEY    
    MOV HOU, 0
    MOV MIN, 0
    MOV SEC, 0
    CALL DELAY

調整秒

NEXTSEC: 
    ; 秒調整
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 2H
    JNZ EXITKEY  
    CALL DISP
    CALL DISP
    CALL DISP
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 2H
    JNZ EXITKEY
    MOV AL, SEC
    ADD AL, 1
    DAA         
    CALL DELAY        
    MOV SEC, AL
    CMP SEC, 60H
    JB NEXTSEC
    MOV SEC, 0  

調整分

NEXTMIN: 
    ; 分調整
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 4H
    JNZ EXITKEY  
    CALL DISP
    CALL DISP
    CALL DISP
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 4H
    JNZ EXITKEY
    MOV AL, MIN
    ADD AL, 1
    DAA      
    CALL DELAY     
    MOV MIN, AL
    CMP MIN, 60H
    JB NEXTMIN
    MOV MIN, 0

調整時

NEXTHOU: 
    ; 時調整
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 8H
    JNZ EXITKEY  
    CALL DISP
    CALL DISP
    CALL DISP
    MOV DX, PORTC
    IN AL, DX
    TEST AL, 8H
    JNZ EXITKEY
    MOV AL, HOU
    ADD AL, 1     
    DAA 
    CALL DELAY       
    MOV HOU, AL
    CMP HOU, 24H
    JB NEXTHOU
    MOV HOU, 0

問題

  1. 仿真報錯:invalid internal memory size == NULL(internal memory mode)
    解決:將8086中的參數設置第2項 ,設置 intener memory 爲10000

  2. 時鐘最小單位不是1秒
    解決:修改分頻數和延時

  3. 調時過快
    解決:修改延時

  4. 字符9和8顯示不全
    上網查:
    (1)延時不夠,出現鬼影
    (2)顯示字符之前沒有清零
    這些方法我都試過了,但沒有解決問題,如果有大佬知道怎麼弄,麻煩評論告訴我

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章