KeilC51基本關鍵字

2021-09-05 11:41:01 字數 4840 閱讀 7850

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 目...