1. 硬體配線:同 自行撰寫ISR掃描鍵盤。
2. 修改先前單元的鍵盤讀取工作方塊,由前級四個經線讀回方塊,分別讀回四條緯線掃瞄下的經線HI/LO。以決定是那一個按鍵被按下。
結構體型態
typedef struct {
uint8_t* WarpDataIn_p[n]; /*經線讀回結果*/
uint8_t KeyNum;
uint8_t* KeyNumOut_p;
uint8_t ExCount;
uint8_t* ExCountOut_p;
} KeyBoardReadStr_t;
佈局巨集
基本上沒什麼變動。
步級執行函式
修改先前鍵盤驅動函式,以工作方塊結構體做為傳址傳參,並提供掃瞄鍵號輸出。
uint8_tKeyBoardRead_step(Void* VoidStr_p)
簡介:讀回4組經線讀回值,找出有非0X0F的那組,那組對應的緯線即被按下鍵的緯線,再從這個非0X0F的值中找出為0的位元,此位元即為按鍵經線,從經緯線找出按鍵編號並存入KeyNum欄。再將ExCount欄加1。
• 傳址變數:
Void* VoidStr_p:鍵盤下降緣讀取工作方塊結構體住址。
• 回傳:回傳是否有錯誤發生若無則0。
• 函式測試:定義出輸入測試變數,讓這些線數可由人機設定,呼叫佈局巨集,然後以等式將輸入指標指到測試變數,然後呼叫步級執行函式。最後將輸出 KeyNumOut_p, ExCountOut_p內容送回人機。即可利用人機完整測試工作方塊功能是否如設預想,如有錯誤再依此線索找出出錯原因並修改,直到完成開發。
3. 參考使用C4M-OS時的標準程式架構的說明完成整體計算機系統
請提供本次實驗的程式虛擬碼,以及程式列表。
實測四則運算之等式。確認程式正確。
1. 在本次實驗中你學到了什麼?
2. 若改變INT5為INT6要有那些變動?
3. 為何中斷服務常式一開始就要禁能中斷,若不如此會發生什麼狀況?
4. 若將中斷改為準位觸發會發生什麼狀況?
5. 請問你,是否可能不將掃描程式寫在中斷中? 如果可以應如何寫,有何優缺點?
助教依以下步驟要求學生確實執行及修改,以確認學生能夠獨立完成計算器之程式:
1. 學生從關機狀態開始,由開機到燒錄已完成計算器確認本實驗之程式已完成。
2. 助教接手學生開發系統,隨機刪除,修改或對調程式順序後重新編譯出不可執行之錯誤程式,交還學生,在指定限時10分鐘之內,獨立不參考其它現成程式,除錯恢復原程式。
3. 任意指定INT4~INT7任一個,要求學生改變配線並變更程式讓最系統能完成完全相同之動作。(如果有困難做不出來,學生應該要能夠講出為什麼)