keilc51基本關鍵字
一、由ansi標準定義的共32個:
auto double int struct break else long switch case enum
register typedef char extern return union const float short
unsigned continue for signed void default goto sizeof volatile do if while static
二、keilcx51擴充套件的關鍵字:
•_at_ •alien •bdata •bit •code •compac •data
•far •idata •interrupt •large •pdata •_priority_ •reentrant
•sbit •sfr •sfr16 •small •_task_ •using •xdata
三、標準c關鍵字說明:
1)資料型別關鍵字(12個):
(1)char:宣告字元型變數或函式
(2)double:宣告雙精度變數或函式
(3)enum:宣告列舉型別
(4)float:宣告浮點型變數或函式
(5)int:宣告整型變數或函式
(6)long:宣告長整型變數或函式
(7)short:宣告短整型變數或函式
(8)signed:宣告有符號型別變數或函式
(9)struct:宣告結構體變數或函式
(10)union:宣告聯合資料型別
(11)unsigned:宣告無符號型別變數或函式
(12)void:宣告函式無返回值或無引數,宣告無型別指標(基本上就這三個作用)
2)控制語句關鍵字(12個):
a迴圈語句
(1)for:一種迴圈語句(可意會不可言傳)
(2)do:迴圈語句的迴圈體
(3)while:迴圈語句的迴圈條件
(4)break:跳出當前迴圈
b條件語句
(1)if:條件語句
(2)else:條件語句否定分支(與if連用)
(3)goto:無條件跳轉語句
c開關語句
(1)switch:用於開關語句
(2)case:開關語句分支
(3)default:開關語句中的「其他」分支
dreturn:子程式返回語句(可以帶引數,也看不帶引數)
3)儲存型別關鍵字(4個)
(1)auto:宣告自動變數一般不使用
(2)extern:宣告變數是在其他檔案正宣告(也可以看做是引用變數)(3)register:宣告積存器變數
(4)static:宣告靜態變數
4)其它關鍵字(4個):
(1)const:宣告唯讀變數
(2)sizeof:計算資料型別長度
(3)typedef:用以給資料型別取別名(當然還有其他作用
(4)volatile:說明變數在程式執行中可被隱含地改變
四、c51擴充套件關鍵字說明
1、_at_定義變數的絕對位址
格式:<[>memory_type<]>type variable_name_at_constant;
例:int xdata value_at_0x8000;/*int at xdata 0x8000*/
2、alien (pl/m-51)函式外部宣告
c函式呼叫pl/m-51必須先用alien宣告
例:extern alien char plm_func (int,char);
char c_func (void)
return(c);
}c函式要被pl/m-51呼叫必須先用alien宣告
例:alien char c_func(char a,int b)
3、code data, bdata, pdata, idata, xdata c51儲存器型別宣告
code 程式**儲存區
data 直接定址片內資料儲存區(低128位元組)
bdata 位定址片內資料儲存區(16位元組)
idata 間接定址片內資料儲存區(256位元組)
pdata 分頁定址外部資料儲存區(256位元組)
xdata 可定址片外資料儲存區(64kb)
例:int bdata ibase; /*bit-addressable int*/
char bdata bary[4]; /*bit-addressablearray*/
4、bit位變數定義
格式:bit name<[>=value<]>;
例:static bit done_flag=0; /*bitvariable*/
5、sfr sfr16 sbit c51擴充套件資料型別
sfr 用於定義8位特殊功能暫存器
sfr16 用於定義16位特殊功能暫存器
sbit 用於定義可位定址物件
例:sfr p0=0x80; /*port-0, address 80h*/
sfr16 t2=0xcc; /*timer2: t2l 0cch, t2h 0cdh*/
sbit ea=0xaf; //將位絕對位址賦給位變數
sfr psw=0xd0; sbit ov=psw^2; sbit ov=0xd0^2;
int bdata ibase; /*bit-addressableint*/
sbit mybit0=ibase^0; /*bit0ofibase*/
6、compact,large,smallc51中變數的儲存模式選擇
small模式用於將所有未指明儲存區的變數均儲存在data儲存區
compact模式用於將所有未指明儲存區的變數均儲存在pdata儲存區
large模式用於將所有未指明儲存區的變數均儲存在xdata儲存區
例:#pragmasmall /*defaulttosmallmodel*/
extern int calc(char i, int b)largereentrant;
extern int func(int i,float f)large;
extern void*tcp(char xdata *xp, int ndx)compact;
int mtest(int i,int y) /*smallmodel*/
int large_func(int i,int k)large/*largemodel*/
7、far far儲存區是指許多新的8051擴充套件位址空間。cx51編譯器使用通用的3個位元組的指標來訪問擴充套件記憶體空間。兩個cx51的記憶體型別far and far const,訪問擴充套件ram空間的變數和擴充套件rom空間中的常量。
r3 value memory type memory class address range0x00 data/idatadata/idatai:0x00-i:0xff
0x01xdataxdatax:0x0000-x:0xffff
0x02-0x7ffar hdata x:0x010000-x:0x7e0000
0x80unused
0x81-0xfdfarconst hconst
0xfe pdataxdataone256-bytepageinxdatamemory
0xff code code/ const c:0x0000-c:0xffff
8、interruptc51使用interruptm修飾符可將函式轉化為中斷函式m為中斷向量優先順序。
例:unsigned int interruptcnt;
unsigned char second;
void timer0 (void) interrupt 1 using2
}9、_task_與_priority_cx51編譯器使用_task_和_priority_支援rtx51full和rtx51 tiny的實時多工作業系統。
_task_關鍵字指定乙個函式是乙個實時的任務。
_priority_關鍵字指定任務的優先順序。
例:void func(void)_task_num_priority_pri
10、reentrant 重入函式修飾符。所謂重入函式就是允許被巢狀呼叫的函式。
通常情況下,c51的功能不能被巢狀呼叫。因為,函式引數和區域性變數都儲存在固定的記憶體位置。函式的遞迴呼叫使用相同的記憶體位置。而且,在這種情況下,引數和資料得到損壞。
例:int calc (char i,int b) reentrant
11、using定義函式時用來選擇函式使用暫存器的分組組
例:void rb_function (void)using 3
Keil C51詳細設定
一.target名更改 開啟keil後,左側project workspace中的target可改,方法 右擊target manage compnents 雙擊待修改項即可,若要新增,使用對話方塊內對應工具欄。二.optionfor target 設定之target項 1 memary model...
Keil C51詳細設定
2013 12 10 19 41 251人閱讀收藏 舉報2010 12 30 19 54 39 分類 常用eda軟體 字型大小 訂閱 一.target名更改 開啟keil後,左側project workspace中的target可改,方法 右擊target manage compnents 雙擊待修...
KEIL C51 程式編譯
1.keil目錄 asm 放置組合語言的標頭檔案,格式為xx.inc。inc是include的簡寫。inc 放置c語言的標頭檔案,格式為xx.h。hlp 幫助檔案。help的簡寫。example 例子。rtxtiny2 keil自帶的rtx51作業系統。flashmon,mon51,mon390 目...