keil教程——記憶體操作

題目:解壓縮BCD碼,將片內資料的高4位和低4位分離,並存在片外

要求:已知5個壓縮BCD碼,存於首地址為0030H的片外RAM的連續5個單元試將其分離後存人首地址為40H的片內RAM連續10個單元中。

#include //操作絕對地址必需的函式庫unsigned char xdata a[5] _at_ 0x0030; //定義字元型陣列a,絕對地址片外 RAM 30Hunsigned char xdata a[5] = {0x1b,0x2e,0x3a,0x4e,0x5d}; //組a賦值unsigned char data b[10] _at_ 0x40; //定義字元型陣列b,絕對地址片內 RAM 40Hvoid main(){unsigned char i; //定義迴圈序號變數ifor(i=0;i<5;i++){ b[2*i]=a[i]>>4; //40H、42H、44H、46H、48H單元變換資料(取高4位) b[2*i+1]=a[i]&0x0f; //41H、43H、45H、47H、49H單元變換資料(取低4位)}}

按照下圖執行,進入除錯視窗

keil教程——記憶體操作

①視窗的 Address編輯框內鍵人x:0x0030。Memory#2視窗內0x0030及其後續5個單元已依次存人陣列a資料:1B、2E、3A、4E、5D。

②全速執行後,看到Memory#2視窗內D:0x40及其後續10個單元,已依次存人分離後的資料:1、B、2、E、3、A、4、E、5、D。

keil教程——記憶體操作