LậptrìnhC chohệ
thống nhúng
GV: Đào ĐứcThịnh
BM: Kỹ thuật đo& THCN
Thế nào là hệ nhúng???
z Hệ uP vớiphầncứng và phầnmềm được
dùng vớihệ máy móc, vớimộtsố chứcnăng
đặcbiệt nào đó.
z Mộthệ nhúng là mộtbộ phậncủamộthệ
thống lớn: ví dụ trên ô-tô.
Tại sao lạilàC ??
z Nó là một ngôn ngữ trung gian, có cảđặc điểmcủa
ngôn ngữ bậc cao và ngôn ngữ bậcthấp.
z Rấthiệuquả
z Thông dụng, dễ hiểu.
z Có các chương trình dịch cho các uP hệ nhúng 8 bit
đến32 bit.
z Có nhiều nhân viên lành nghề.
z Sách, các khoá học, ví dụ và các trang web cho
ngôn ngữ này rất nhiều.
Yêu cầulậptrìnhC choMCS51
z Đãbiết ngôn ngữ lập trình: Jawa, C++,
Basic
z Có cơ sở về ngôn ngữ C.
z Sử dụng Keil C Compiler.
Phầnmềmvới “Super loop”
z Vấn đề:
Mộtmôitrường phầnmềmtốithiểucần để tạo
ra mộtchương trình C cho hệ nhúng là gì?
Phầnmềmvới “Super loop”
z Giải pháp:
C_HEAT_Get_Required_Temperature();
/* Find out what the current room temperature is(via temperature sensor) */
C_HEAT_Get_Actual_Temperature();
/* Adjust the gas burner, as required */
C_HEAT_Control_Boiler();
}
}
Keil C compiler
Keil C compiler
z Tạoramột Project vớiKeilC
Keil C compiler
z Vùng nhớ:
z Bộ nhớ chương trình: code
z Bộ nhớ dữ liệutrong:
z data.
z idata
z bdata
z Bộ nhớ dữ liệu ngoài:
z xdata
z pdata
z Bộ nhớ xa (far memory): far
Keil C compiler
z Bộ nhớ xa (far memory): far
z Bộ nhớ thanh ghi chứcnăng đặcbiệt.
Keil C compiler
z Mô hình tổ chứcbộ nhớ:
z Small: các biếnchứatrongbộ nhớ trong (data).
z Compact: các biếncóthể chứa trong 1 trang 256
byte củabộ nhớ ngoài (pdata)
z Large: các biếnchứa trong 64kbyte bộ nhớ ngoài.
}
Keil C compiler
z Con trỏ:
char *s; /* string ptr */
int *numptr; /* int ptr */
long *state; /* Texas */
Keil C compiler
char * xdata strptr; /* generic ptr stored in xdata */
int * data numptr; /* generic ptr stored in data */
long * idata varptr; /* generic ptr stored in idata */
Keil C compiler
char data *str; /* ptr to string in data */
int xdata *numtab; /* ptr to int(s) in xdata */
long code *powtab; /* ptr to long(s) in code
*/
Keil C compiler
char data * xdata str; /* ptr in xdata to data char */
int xdata * data numtab; /* ptr in data to xdata int */
long code * idata powtab; /* ptr in idata to code long */
Keil C compiler
z Hàm: C cho MCS51 có mộtsố mở rộng cho
hàm như sau:
z Chỉ ra một hàm sử dụng như ngắt.
z Chọn bank thanh ghi.
z Chọnmôhìnhbộ nhớ.
z …