08 C51程序设计.ppt
《08 C51程序设计.ppt》由会员分享,可在线阅读,更多相关《08 C51程序设计.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 单片机C语言程序设计 8.1 C51程序设计语言程序设计语言 8.2 C51的运算符和表达式的运算符和表达式 8.3 C51集成开发环境集成开发环境 8.4 单片机单片机C语言应用程序设计实例语言应用程序设计实例 8.5 单片机单片机C语言应用程序设计实验语言应用程序设计实验 8.1 C51程序设计语言8.1.1 标识符与关键字 8.1.2 数据类型 8.1.3 变量的存储种类和存储器类型 8.1.4 绝对地址的访问 8.1.5 中断服务程序 8.1.6 Cx51的库函数 8.1.1 标识符与关键字 Keil Cx51是一种专为8051单片机设计的高级语言C编译器,支持符合ANSI标准
2、的C语言进行程序设计,同时针对8051单片机自身特点作了一些特殊扩展。C语言的标识符标识符是用来标识源程序中某个对象名字的。一个标识符标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线。关键字关键字是一类具有固定名称和特定含义的特殊标识符,有时又称为保留字。标识符的命名不要与关键字相同。表表8-1 ANSI C标准的关键字标准的关键字 Keil Cx51编译器除了支持ANSI C标准的关键字外,还根据8051单片机自身特点扩展了如表8-2所示的关键字。表表8-2 Keil Cx51编译器的扩展关键字编译器的扩展关键字 8.1.2 8.1.2 数据类型数据类型 C语言中的基本数据类
3、型有char,int,short,long,float和double等。Keil Cx51编译器除支持标准C语言的数据类型外,还根据8051单片机的特点扩展了bit、sbit、sfr和sfr16数据类型。1bit:位类型:位类型处于片内处于片内RAM的可位寻址区的可位寻址区可以带上存储器类型可以带上存储器类型(data、idata、bdata)bit flag1=0Bit func();如果声明函数时使用了如果声明函数时使用了using n,则不能返回,则不能返回bit类型的值,会编译错误类型的值,会编译错误2sbit:可寻址位:可寻址位可独立寻址访问的位变量;可用于定义内部可独立寻址访问的位
4、变量;可用于定义内部RAM中的可寻址位或中的可寻址位或SFR中的可寻址中的可寻址位位可带可带bdata存储器类型,对应于定义内部存储器类型,对应于定义内部RAM中的可寻址位;中的可寻址位;要求要求sbit+bdata是全局变量是全局变量Sbit定义可位寻址的变量时,要求对象的存储器类型为定义可位寻址的变量时,要求对象的存储器类型为bdata;Sbit类型要指定一个变量作为基地址,通过下述形式获得实际物理位的地址:类型要指定一个变量作为基地址,通过下述形式获得实际物理位的地址:Char bdata ibase;/定义基址变量定义基址变量ibaseSbit bit0=ibase0;/定义定义bit
5、0为为ibase的第的第0位位Sbit bit1=ibase1;/定义定义bit1为为ibase的第的第1位位后面的数值要求后面的数值要求char型对应型对应07;int型对应型对应015;long型对应型对应031sbit SM0=0X9F;3sfr 定义定义8位特殊功能寄存器位特殊功能寄存器使用这两个关键字,可以直接定义8051单片机的特殊功能寄存器如:sfr P1=0 x90;/定义P1寄存器,地址为0 x90Sfr后面必须跟一个标识符作为特殊功能寄存器的名称,等号后面必须是一个常数,不允许运算式;注意地址范围(0 x800 xff)sfr OV=0XD2sfr CY=0XD7sfr16
6、定义定义16位的位的SFR寄存器寄存器,如如DPTRSfr16 T2=0 xcc;/T2L=0 xCC,T2H=0 xCD结合sbit应用(sbit=特殊功能寄存器变量名位的位置)sfr PSW=0XD0;sbit OV=PSW2;sbit CY=PSW7;结合sbit应用2(sbit=字节地址位的位置)sbit OV=0 xD02sbit CY=0XD078.1.3 变量的存储种类和存储器类型 变量在程序执行过程中其值能不断变化。使用一个变量之前,必须进行定义,用一个标示符作为变量名并指出它的数据类型和模式,以便编译系统为它分配相应的存储单元。在Cx51中对变量进行定义的格式如下:存储种类
7、数据类型 存储器类型 变量名表;其中,“存储种类”和“存储器类型”是可选项。变量的存储种类存储种类有四种:自动(auto)、外部(extern)、静态(static)和寄存器(register)省略则由系统省略则由系统的的3模式决定模式决定auto char data kkk表表8-4 Keil Cx51编译器所能识别的存储器类型编译器所能识别的存储器类型应用实例:应用实例:char bdata flag;char data var1;unsigned int pdata var2;char code text=example;系统提供了编译模式的控制命令系统提供了编译模式的控制命令SMALL
8、(所有变量定义在片内RAM,堆栈必须片内;同data存储器类型)COMPACT所有变量定义于分页寻址的片外RAM,每页内地址长度为256低8位地址由R0、R1决定;高8位地址由P2决定同pdataLARGE使用DPTR同xdataDATADATA存储类型存储类型存储类型存储类型直接访问的内部数据存储器直接访问的内部数据存储器RAM的低的低128字节区字节区可一个周期内直接寻址,可一个周期内直接寻址,00H7FH访问速度快访问速度快使用频率高的变量放在data区比较好包含程序变量和堆栈、寄存器组,因此需要留意空间限制包含程序变量和堆栈、寄存器组,因此需要留意空间限制如:如:unsigned ch
9、ar data sys_status=0;BDATABDATA存储类型存储类型存储类型存储类型可位寻址的内部可位寻址的内部RAM20H2FH该区间可以用字节方式,也可以用位方式访问该区间可以用字节方式,也可以用位方式访问不允许不允许在在BDATA段定义段定义float和和double类型的变量类型的变量如:如:unsigned char bdata status_byte;unsigned int bdata status_word;unsigned long bdata status_dword;IDATAIDATA存储类型存储类型存储类型存储类型间接访问的内部间接访问的内部RAM可访问所有
10、的内部存储器空间,可访问所有的内部存储器空间,256个字节个字节必须是间接寻址必须是间接寻址IDATA段也可存放使用频繁的变量,使用寄存器作为指针段也可存放使用频繁的变量,使用寄存器作为指针进行寻址;在寄存器中设置进行寻址;在寄存器中设置8位地址,进行间接寻址。位地址,进行间接寻址。如:如:unsigned char idata sys_status=0;PDATA PDATA 和和和和 XDATA XDATA 存储类型存储类型存储类型存储类型PDATA分页的外部数据存储器;只需要装入8位地址256个字节;使用指令MOVX Rn访问XDATA外部数据存储器,64K字节范围;需要装入16位地址使
11、用MOVX DPTR访问CODECODE存储类型存储类型存储类型存储类型程序存储区的程序存储区的64K字节范围字节范围通过通过MOVC A+DPTR访问访问一定要初始化,否则会得到无关数值;一定要初始化,否则会得到无关数值;存入数据后就无法再更改(ROM区)8.1.4 绝对地址的访问现实需求现实需求:对指定存储器地址访问实际问题:实际问题:地址编译后是浮动地址;解决方法:解决方法:_at_、指针、预定义宏、连接定位控制指令1.采用扩展关键字采用扩展关键字“_at_”或指针定义变量的绝对地址或指针定义变量的绝对地址 在Cx51源程序中定义变量时,可以利用Cx51编译器提供的扩展关键字“_at_”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 08 C51程序设计 C51 程序设计
限制150内