嵌入式系統的範例程式
圖一、嵌入式系統的案例
OUTSTATUS EQU $FFFC // 顯示器狀態
DATAOUT EQU $FFFD // 顯示暫存器
INSTATUS EQU $FFFE // 鍵盤狀態
DATAIN EQU $FFFF // 鍵盤暫存器
CR EQU $A // 換行字元
BUF DCD 100 // 輸入行儲存區
Move #BUF, R1 // R0 用來當儲存區指標,用以儲存下一個字元
READ TestBit #3, INSTATUS // 測試鍵盤是否有鍵被按下
Branch=0 READ // 一直測到有鍵被按下為止
MoveByte DATAIN, (R0) // 將該輸入鍵值儲存到儲存區
ECHO TestBit #3, OUTSTATUS // 測試顯示器是否可以輸出了
Branch=0 ECHO // 一直測試到可以輸出為止
MoveByte (R0), DATAOUT // 將剛剛讀入的鍵值送到顯示器顯示
Compare #CR, (R0)+ // 看看是否是換行字元
Branch!=0 READ // 若不是,則繼續讀下一個字
#define OUTSTATUS (volatile char *) 0xFFFC // 顯示器狀態
#define DATAOUT (volatile char *) 0xFFFD // 顯示暫存器
#define INSTATUS (volatile char *) 0xFFFE // 鍵盤狀態
#define DATAIN (volatile char *) 0xFFFF // 鍵盤暫存器
void main() {
char buf[100]; // buf = 輸入行儲存區
char* LOC=buf; // LOC = 輸入行儲存位址
while (1) {
while (INSTATUS & 0x8 == 0) {} // 一直測到有鍵被按下為止
*LOC = *DATAIN; // 將該輸入鍵值儲存到儲存區
while (OUTSTATUS & 0x8 == 0) {} // 測試顯示器是否可以輸出了
*DATAOUT = *LOC; // 將剛剛讀入的鍵值送到顯示器顯示
LOC ++; // 前進到下一個字元
if (*LOC == '\n') // 若是換行字元,則離開迴圈
break;
}
}
page revision: 6, last edited: 07 Jul 2010 01:44
Post preview:
Close preview