顯示驅動器
延用先前外部中斷之計算器單元之鍵盤掃瞄工作方塊。接收前級4位數值,查詢七節管碼,再加入小數點驅動7節管。
鍵盤掃瞄器
延用先前外部中斷之計算器單元之鍵盤掃瞄工作方塊。交义即時控制緯線及讀回經線,將掃瞄的經線結果及執行次數計數串接後級。
鍵號讀取器:
延用先前外部中斷之計算器單元之鍵盤掃瞄工作方塊。分析前級經線掃瞄結果,研判按下鍵號並串接給後級。
命令解譯執行器
命令解譯執行器結合了先前單元的鍵號解譯器以及命令執行器兩個功能。首先以輸入鍵號查詢鍵號對應表,分析出數字及命令。若為數字則由輸出串接給後級,執行數字後處理。如為命令則呼叫對應命令直接執行其他工作方塊的狀態切換。
結構體型態
typedef struct {
uint8_t* KeyTable_p; /* Pointer to Key Table*/
uint8_t Length;
uint8_t* KeyNumIn_p;
uint8_t* ExCountIn_p;
uint8_t ExCount, *ExCountOut_p;
uint8_t NewNum, *NewNumOut_p;
} CommandResolverStr_t;
佈局巨集
#defineCOMMANDRESOLVER_LAY(CRSTR,TableLength,TableAdd)\
CommandResolverStr_t KRSTR={0}; \
CRSTR.KeyTable_p=TableAdd;\
CRSTR.Length=TableLength; \
CRSTR.ExCountOut_p=&CRSTR.ExCount;\
CRSTR.NewNumOut_p=&CRSTR.NewNum;
巨集呼叫範例: 完成內部佈局後會以等式與前級,鍵號讀取器串接。
uint8_t ASCIITable[]={48,49,50,51,52,53,54,55,56,57,32,61,47,42,45,
43};/*Table has the ASCIICODE of 0,1,2,…,9,A,B,C,D,E,F*/
COMMANDRESOLVER_LAY(CommandResolver_Str,16,ASCIITable);
CommandResolver_Str.ExCountIn_p= KeyBoardRead_Str.ExCountOut_p;
CommandResolver_Str.KeyNumIn_p = KeyBoardRead_Str.KeyNumOut_p ;
步級執行函式
uint8_t CommandResolver_step(Void* VoidStr_p)
簡介: 以輸入鍵號查詢鍵號對應表,分析出數字1~0及命令A~F。若為數字則由輸出串接給後級,並在執行計數器加1,促使後級執行數字後處理。如為命令則參考以下表,依據鍵入值呼叫對應命令直接執行其他工作方塊的狀態切換,執行計數器不變不促成後級執行。
• 傳址參數及回傳: 同標準C4M-OS可排程工作方塊。呼叫範例:
CommandResolver_step( (void*) &CommandResolver_str);