单片机C51语言关键字的解释和运算优先级及结合性

合集下载

C51编译器的扩展关键字

C51编译器的扩展关键字

附表1-2C51编译器的扩展关键字关键字用途说明auto 存储种类说明用以说明局部变量,缺省值为此break 程序语句退出最内层循环case 程序语句Switch语句中的选择项char 数据类型说明单字节整型数或字符型数据const 存储类型说明在程序执行过程中不可更改的常量值continue 程序语句转向下一次循环default 程序语句Switch语句中的失败选择项do 程序语句构成do..while循环结构double 数据类型说明双精度浮点数else 程序语句构成if..else选择结构enum 数据类型说明枚举extern 存储种类说明在其他程序模块中说明了的全局变量flost 数据类型说明单精度浮点数for 程序语句构成for循环结构goto 程序语句构成goto转移结构if 程序语句构成if..else选择结构int 数据类型说明基本整型数long 数据类型说明长整型数register 存储种类说明使用CPU内部寄存的变量return 程序语句函数返回short 数据类型说明短整型数signed 数据类型说明有符号数,二进制数据的最高位为符号位sizeof 运算符计算表达式或数据类型的字节数static 存储种类说明静态变量struct 数据类型说明结构类型数据swicth 程序语句构成switch选择结构typedef 数据类型说明重新进行数据类型定义union 数据类型说明联合类型数据unsigned 数据类型说明无符号数数据void 数据类型说明无类型数据volatile 数据类型说明该变量在程序执行中可被隐含地改变while 程序语句构成while和do..while循环结构附表1-1ANSIC标准关键字关键字用途说明bit 位标量声明声明一个位标量或位类型的函数sbit 位标量声明声明一个可位寻址变量Sfr 特殊功能寄存器声明声明一个特殊功能寄存器Sfr16 特殊功能寄存器声明声明一个16位的特殊功能寄存器data 存储器类型说明直接寻址的内部数据存储器bdata 存储器类型说明可位寻址的内部数据存储器idata 存储器类型说明间接寻址的内部数据存储器pdata 存储器类型说明分页寻址的外部数据存储器xdata 存储器类型说明外部数据存储器code 存储器类型说明程序存储器interrupt 中断函数说明定义一个中断函数reentrant 再入函数说明定义一个再入函数using 寄存器组定义定义芯片的工作寄存器附录二AT89C51特殊功能寄存器列表(适用于同一架构的芯片)带*号的特殊功能寄存器都是可以位寻址的寄存器符号地址注释*ACC E0H 累加器*B F0H 乘法寄存器*PSW D0H 程序状态字SP 81H 堆栈指针DPL 82H 数据存储器指针低8位DPH 83H 数据存储器指针高8位*IE A8H 中断允许控制器*IP D8H 中断优先控制器*P0 80H 端口0*P1 90H 端口1*P2 A0H 端口2*P3 B0H 端口3PCON 87H 电源控制及波特率选择*SCON 98H 串行口控制器SBUF 99H 串行数据缓冲器*TCON 88H 定时器控制TMOD 89H 定时器方式选择TL0 8AH 定时器0低8位TL1 8BH 定时器1低8位TH0 8CH 定时器0低8位TH1 8DH 定时器1高8位附录三运算符优先级和结合性级别类别名称运算符结合性1 强制转换、数组、结构、联合强制类型转换( ) 右结合下标[ ]存取结构或联合成员->或.2 逻辑逻辑非! 左结合字位按位取反~增量加一++减量减一--指针取地址&取内容*算术单目减-长度计算长度计算sizeof3 算术乘* 右结合除/取模%4 算术和指针运算加+减-5 字位左移<<右移>>6 关系大于等于>=大于>小于等于<=小于<7 恒等于==不等于!=8 字位按位与&9 按位异或^10 按位或|11 逻辑逻辑与&& 左结合12 逻辑或||13 条件条件运算?:14 赋值赋值=复合赋值Op=15 逗号逗号运算, 右结合。

单片机关键字寄存器和运算符

单片机关键字寄存器和运算符

单片机关键字寄存器和运算符附录一C51中的关键字关键字用途说明auto存储种类说明用以说明局部变量,缺省值为此break程序语句退出最内层循环case程序语句Switch语句中的选择项char数据类型说明单字节整型数或字符型数据const存储类型说明在程序执行过程中不可更改的常量值continue程序语句转向下一次循环default程序语句Switch语句中的失败选择项do程序语句构成do..while循环结构double数据类型说明双精度浮点数else程序语句构成if..else选择结构enum 数据类型说明枚举extern存储种类说明在其他程序模块中说明了的全局变量flost数据类型说明单精度浮点数for程序语句构成for循环结构goto程序语句构成goto转移结构if程序语句构成if..else选择结构int数据类型说明基本整型数long数据类型说明长整型数register存储种类说明使用CPU内部寄存的变量return程序语句函数返回short数据类型说明短整型数signed数据类型说明有符号数,二进制数据的最高位为符号位sizeof运算符计算表达式或数据类型的字节数static存储种类说明静态变量struct数据类型说明结构类型数据swicth程序语句构成switch选择结构typedef数据类型说明重新进行数据类型定义union 数据类型说明联合类型数据unsigned数据类型说明无符号数数据void数据类型说明无类型数据volatile数据类型说明该变量在程序执行中可被隐含地改变while程序语句构成while和do..while循环结构附表1-1ANSIC标准关键字关键字用途说明bit位标量声明声明一个位标量或位类型的函数sbit位标量声明声明一个可位寻址变量Sfr特殊功能寄存器声明声明一个特殊功能寄存器Sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器data存储器类型说明直接寻址的内部数据存储器bdata存储器类型说明可位寻址的内部数据存储器idata存储器类型说明间接寻址的内部数据存储器pdata存储器类型说明分。

C51的关键字解释

C51的关键字解释
TMOD 89H 定时器方式选择
TL0 8AH 定时器0低8位
TL1 8BH 定时器1低8位
TH0 8CH 定时器0低8位
TH1 8DH 定时器1高8位
带*号的特殊功能寄存器都是可以位寻址的寄存
C51扩展关键字
_at_为变量定义存储空间绝对地址alien声明与PL/M51兼容的函数bdata可位寻址的内部RAMbit位类型codeROMcompact使用外部分页RAM的存储模式data直接寻址的内部RAMidata间接寻址的内部RAMinterrupt中断服务函数large使用外部RAM的存储模式pdata分页寻址的外部RAM_priority_RTX51的任务优先级reentrant可重入函数sbit声明可位寻址的特殊功能位sfr8位的特殊功能寄存器sfr1616位的特殊功能寄存器small内部RAM的存储模式_task_实时任务函数using选择工作寄存器组xdata外部RAM
continue 程序语句 转向下一次循环
default 程序语句 Switch语句中的失败选择项
do 程序语句 构成do..while循环结构
double 数据类型说明 双精度浮点数
else 程序语句 构成if..else选择结构
enum 数据类型说明 枚举
extern 存储种类说明 在其他程序模块中说明了的全局变量
flost 数据类型说明 单精度浮点数
for 程序语句 构成for循环结构
goto 程序语句 构成goto转移结构
if 程序语句 构成if..else选择结构
int 数据类型说明 基本整型数
long 数据类型说明 长整型数
register 存储种类说明 使用CPU内部寄存的变量

单片机基础与应用(C语言版)第3章 C51程序设计基础

单片机基础与应用(C语言版)第3章 C51程序设计基础

选择语句
多分支选择的switch语句, 其一般形式如下: switch(表达式)
{ case常量表达式1: 语句组1;break; case常量表达式2: 语句组2;break; …… case常量表达式n: 语句组n;break; default : 语句组n+1;
} 该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达 式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应 该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继 续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同, 则执行default后的语句组。
位运算
按位或操作符: |
或操作
格式:x|y
规则:对应位均为0时才为0,否则为1 例如, i=i|0x0f; 等同于
i|=0x0f;
主要用途:将1个数的某(些)位置1,其余各位不变
位运算
异或操作
按位异或操作符:^ 格式:x^y 规则:对应位相同时为0,不同时为1
例如, i=i^0x0f; 等同于 i^=0x0f; 主要用途:使1个数的某(些)位翻转(即原来为1的位 变为0,为0的变为1),其余各位不变。
右移运算符“>>”的功能,是把“>>”左边的操作数 的各二进制位全部右移若干位,移动的位数由“>>” 右边的常数指定。进行右移运算时,如果是无符号数, 则总是在其左端补“0”
练习
1 .若x = 10, 则!X的值为真或假? 2. 若a = 3, b = 2, 则if(a&b)的值为真或假? 3. 5 && 0 ||8的值为?
浮点型 指针型 位类型 特殊功能寄存器 16位特殊功能寄存器 可寻址位

KC51基础知识

KC51基础知识

Keil C51编程基础知知标识符与关键字C语言的标识符是用来标识源程序中某个对象名字的。

这些对象可以是函数、变量、数组、数据类型、存储方式、语句等。

关键字是一类具有固定名称和特定含义的特殊标识符,有时又称为保留字。

ANSI C标准一共规定了32个关健字,表2-1按用途列出了ANSI C标准的关键字。

表2-1 ANSI C标准的关键字关键字用途说明auto 存储器种类声明用以声明局部变量,默认什为此brcak 程度语句退出最内层循环体case 程度语句 switch语句中的选择项char 数据类型声明单字节整型数或字符型数据const 存储类型声明在程度执行中不可修改的变量值continue 程度语句转向下一次循环defaut 程序语句 switch语句中的失败选择项do 程度语句构成do...while循环结构double 数据类型声明双精度浮点数else 程度语句构成if...else选择结构enum 数据类型声明枚举extern 存储种类声明在其它程度模块中声明了的全局变量float 数据类型声明单精度浮点数for 程度语句构成for循环结构goto 程度语句构成goto转移结构if 程度语句构成if...else选择结构int 数据种类声明基本整型数long 数据种类声明长整型数register 数据种类声明使用CPU内部寄存器的变量return 程序语句函数返回short 数据种类声明短整型数signed 数据种类声明有符号数,二进制数的最高位为符号位sizeof 运算符计算表达式或数据类型的字节数static 数据种类声明静态变量struct 数据种类声明结构类型数据switch 程序语句构成switch选择结构typedef 数据种类声明重新进行数据类型定义union 数据种类声明联合类型数据unsigned 数据种类声明无符号数据void 数据种类声明无类型数据volatile 数据种类声明声明该变量在程度执行中可被隐含的改变while 程度语句构成while和...while循环结构C51编绎器除了支持ANSI C标准的关键字以外,还根据8051单片机自身的特点扩展了如表2-2所示的关键字。

C51中运算符的优先级

C51中运算符的优先级
左到右
双目运算符
13
?:
条件运算符
表达式1?表达式2:表达式3
右到左
三目运算符
14
=
赋值运算符
变量=表达式
右到左
/=
除后赋值
变量/=表达式
*=
乘后赋值
变量*=表达式
%=
取模后赋值
变量%=表达式
+=
加后赋值
变量+=表达式
-=
减后赋值
变量-=表达式
<<=
左移后赋值
变量<<=表达式
>>=
右移后赋值
变量>>=表达式
C语言中的运算符及其优先级
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
左到右
()
圆括号
(表达式)/函数名(形参表)
.
成员选择(对象)
对象.成员名
->
成员选择(指针)
对象指针->成员名
2
-
负号运算符
-表达式
右到左
单目运算符
(类型)
强制类型转换
(数据类型)表达式
++
自增运算符
++变量名/变量名++单Biblioteka 运算符--自减运算符
--变量名/变量名--
单目运算符
*
取值运算符
*指针变量
单目运算符
&
取地址运算符
&变量名
单目运算符
!
逻辑非运算符
!表达式

Keil C51基本关键字

Keil  C51基本关键字

Keil C51基本关键字:一、由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二、Keil Cx51扩展的关键字:•_at_•alien •bdata •bit •code •compact •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:跳出当前循环(5)continue:结束当前循环,开始下一轮循环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 xdata0x8000*/ 2、alien(PL/M-51)函数外部声明C函数调用PL/M-51必须先用alien声明例:extern alien char plm_func(int,char);char c_func(void){int i;char c;for(i=0;i<100;i++){c=plm_func(i,c);/*call PL/M func*/}return(c);}C函数要被PL/M-51调用必须先用alien声明例:alien char c_func(char a,int b){return(a*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-addressable array*/4、bit位变量定义格式:bit name<[>=value<]>;例:static bit done_flag=0;/*bit variable*/5、sfr sfr16sbit C51扩展数据类型sfr用于定义8位特殊功能寄存器sfr16用于定义16位特殊功能寄存器sbit用于定义可位寻址对象例:sfr P0=0x80;/*Port-0,address80h*/sfr16T2=0xCC;/*Timer2:T2L0CCh,T2H0CDh*/sbit EA=0xAF; //将位绝对地址赋給位变量sfr PSW=0xD0; sbit OV=PSW^2; sbit OV=0xD0^2;int bdata ibase;/*Bit-addressable int*/sbit mybit0=ibase^0;/*bit0of ibase*/6、compact,large,small C51中变量的存储模式选择Small模式用于将所有未指明存储区的变量均保存在data存储区compact模式用于将所有未指明存储区的变量均保存在pdata存储区Large模式用于将所有未指明存储区的变量均保存在xdata存储区例:#pragma small/*Default to small model*/extern int calc(char i,int b)large reentrant;extern int func(int i,float f)large;extern void*tcp(char xdata*xp,int ndx)compact;int mtest(int i,int y)/*Small model*/{ return(i*y+y*i+func(-1,4.75)); }int large_func(int i,int k)large/*Large model*/{ return(mtest(i,k)+2); }7、far far存储区是指许多新的8051扩展地址空间。

第二讲—C51的运算符表达式及其规则

第二讲—C51的运算符表达式及其规则

6.复合赋值运算符 赋值号前加上其他运算符构成复合赋值运算 符,c51提供了下列十个复合赋值运算符
+=,一=,*=,/=,%=,&=,1=, ^=,〈〈=,〉〉=
a+=b a=(a+b) x*=a+b x=(x*(a+b)) a&=b a=(a&b) a<<=4 a=(a<<4)
VCC C2 6 XT L 1 3 0P C2 7 2 2u F 9 19 31 39 38 37 36 35 34 33 32 1 2 3 4 5 6 7 8 1 1. 0 59 2M W 7 7E 5 8 RST PSE N X1 X2 EA AL E (AD0 )P0 . 0 (A8 )P2 . 0 (AD1 )P0 . 1 (A9 )P2 . 1 (AD2 )P0 . 2 (A1 0)P2. 2 (AD3 )P0 . 3 (A1 1)P2. 3 (AD4 )P0 . 4 (A1 2)P2. 4 (AD5 )P0 . 5 (A1 3)P2. 5 (AD6 )P0 . 6 (A1 4)P2. 6 (AD7 )P0 . 7 (A1 5)P2. 7 P1. 0 / T 2 P3. 0 / RXD0 P1. 1 / T 2E X P3. 1 / T XD0 P1. 2 / RXD1 P3. 2 / INT 0 P1. 3 / T XD1 P3. 3 / INT 1 P1. 4 / INT 2 P3. 4 / T 0 P1. 5 / INT 3 P3. 5 / T 1 P1. 6 / INT 4 P3. 6 / W R P1. 7 / INT 5 P3. 7 / RD 29 18 30 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 C2 5 3 0P
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//if
构成 if ..else 选择结构
//return 函数返回
//switch 构成 switch 选择结构
//while 构成 do .. while 循环结构
存储类型说明
//auto
用以说明局部变量
//const 程序执行过程中其值不可变量
//extern 在其他程序模块中说明了的全局变量
//register 定义 CPU 内部寄存器变量
//static 静态变量
数据类型说明
//char
单字节整型数或字符型数据
//double 双字节浮点数
//enum
枚举类型
//float 单字节浮点型
//int
基本整型数
//long
长整型数
//short 短整型数
//signed 有符号数,二进制数据的最高位为符号位
15
逗号
逗号运算
*
从左往右
/
%
+
-
<<
>>
>=
>
<=
<
==
!=
&
^
|
&&
从右至左
||
?;
=
op

从左至右
2 逻辑
逻辑非
!
字位
按位取反
~
增量
加1
++
减量
减1
--
指针
取地址
&
从右至左
取内容
*
算术
单目-长度计算长度计算Sizeof
3
算术


取模
4
算术和指针运算 加

5
字位
左移
右移
6
关系
大于等于
大于
小于等于
小于
7
恒等于
不等于
8
字位
按位与
9
按位异或
10
按位或
11
逻辑
逻辑与
12
逻辑或
13
条件
条件运算
14
赋值
复合赋值
程序语句
//break 退出内层循环
//case
switch 语句中的选择项
//continue 转向下一次循环
//default switch 语句中的失败选择项
//do
构成 do ..while 循环结构
//else
构成 if.. else 选择结构
//for
构成 for 循环结构
//goto
构成 goto 转移结构
//srtuct 结构类型数据、
//typedef 重新进行数据类型定义
//union 联合类型数据
//unsigned 无符号数据
//void
无类型数据
//volatile 该变量在程序执行中可被隐含地改变
运算符
//sizeof 计算表达式或数据类型的字节数
位标量声明
//bit
声明一个位标量或一个位类型的函数
//sbit
声明一个可位寻址变量
特殊功能寄存器
//sfr
声明一个特殊功能寄存器
//sfr16 声明一个 16 位特殊功能寄存器
存储器类型说明
//data
直接寻址的内部数据寄存器
//bdata 可位寻址的内部数据寄存器
//idata 间接寻址的内部数据寄存器
//pdata 分页寻址的内部数据寄存器
//xdata 外部数据存储器
//code
程序存储器
中断函数声明
//interrupt
定义一个中断函数
再入函数声明
//reentrant 定义一个再入函数
寄存器组定义
//using
定义芯片的工作寄存器
运算符优先级及结合性
级别
类型
名称
1 强制转换、数组、结构、 强制类型转换
联合
下标
运算符 结合性 () 从左至右 []
存取机构或联合成员 ->或
相关文档
最新文档