(3)--4.1 C语言基础单片机原理与接口技术.ppt

上传人:奉*** 文档编号:96451106 上传时间:2023-11-29 格式:PPT 页数:27 大小:194.57KB
返回 下载 相关 举报
(3)--4.1 C语言基础单片机原理与接口技术.ppt_第1页
第1页 / 共27页
(3)--4.1 C语言基础单片机原理与接口技术.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《(3)--4.1 C语言基础单片机原理与接口技术.ppt》由会员分享,可在线阅读,更多相关《(3)--4.1 C语言基础单片机原理与接口技术.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第 4 章 单片机的C语言编程模型14.1 C语言基础4.2 程序语言结构4.3 数组4.4 指针4.5 函数本章主要内容24.6 复杂数据结构4.7 预编译指令标准C语言所支持的数据类型整数型3 C语言中各类整型数据所分配的内存字节数及表示范围语言中各类整型数据所分配的内存字节数及表示范围类型说明符数的范围字节数int-3276832767,即-215(215-1)2short int-3276832767,即-215(215-1)2long int-21474836482147483647,即-231(231-1)4unsigned int065535,即 0(216-1)2unsigne

2、d short int065535,即 0(216-1)2unsigned long04294967295,即 0(232-1)4n上面提到的整数,都是十进制。在C语言中,常用的还有八进制和十六进制。在C语言程序中是根据前缀来区分各种进制数的。4类型说明符比特数(字节数)有效数字数的范围float32(4)6710-371038 double64(8)151610-30710308long double128(16)181910-4931104932单精度、双精度和长双精度实数的字长及表示的范围单精度、双精度和长双精度实数的字长及表示的范围标准C语言所支持的数据类型实数型对于普通字符型数据来说

3、,用关键字char进行声明。n实际上,就是八位的二进制数,或者说一个字节的存储宽度。n更进一步的,还可以在char前面增加signed(有符号)和unsigned(无符号)声明。当:psigned char(有符号字符型)时,表示数的范围为-128+127。punsigned char(无符号字符型)时,表示数的范围为0255。5标准C语言所支持的数据类型字符型字符串是由一对双引号括起的字符序列。字符串和字符不同,它们之间主要有以下区别:n字符由单引号括起来,字符串由双引号括起来。n字符只能是单个字符,字符串则可以含一个或多个字符。n可以把一个字符型数据赋给一个字符变量,但不能把一个字符串赋给

4、一个字符变量。n在C语言中没有相应的字符串变量,将一个变量声明为字符串。但是可以用一个字符数组来存放一个字符串。n字符占用一个字节的存储空间,而字符串所占存储空间的字节数等于字符串的字节数加1。增加的一个字节用于存放字符0(ASCII码为0),它用于表示字符串结束。6标准C语言所支持的数据类型字符串除了支持标准的C所提供的数据类型外,Keil的编译器还提供了对单片机特定数据类型的支持。注:在使用扩充数据类型时,必须添加头文件包含语句。#include 7单片机扩充的数据类型bitbit类型n该数据类型可用于定义一个比特位n但是不能定义位指针,也不能定义位数组。bit a;a=1;8单片机扩充的

5、数据类型sfrsfr类型n该数据类型可以用于定义8051单片机中的所有内部8位特殊功能寄存器SFR。nsfr类型数据占用存储空间一个字节,取值范围为0255。定义的格式:sfrsfr标识符=地址;9单片机扩充的数据类型10下面给出头文件reg51.h中已经定义的sfr类型。注:在C文件中,直接使用已经预定义的sfr类型,而无需重新进行定义。sfr P0 =0 x80;sfr P1 =0 x90;sfr P2 =0 xA0;sfr P3 =0 xB0;sfr PSW =0 xD0;sfr ACC =0 xE0;sfr B =0 xF0;sfr SP =0 x81;sfr DPL =0 x82;s

6、fr DPH =0 x83;sfr PCON=0 x87;sfr TCON=0 x88;sfr TMOD=0 x89;sfr TL0 =0 x8A;sfr TL1 =0 x8B;sfr TH0 =0 x8C;sfr TH1 =0 x8D;sfr IE =0 xA8;sfr IP =0 xB8;sfr SCON=0 x98;sfr SBUF=0 x99;单片机扩充的数据类型sfr16类型n该数据类型可以用于定义8051单片机中的16位特殊功能寄存器。sfr16数据类型占用存储空间两个字节,取值范围为065535。sbit类型n该数据类型可以用于定义8051单片机内的RAM中可寻址位或者特殊功能寄

7、存器中的可寻址位。定义的格式为:sbit 标识符=地址;11单片机扩充的数据类型12下面给出头文件reg51.h中已经定义的sbit类型。sbit CY =0 xD7;sbit AC =0 xD6;sbit F0 =0 xD5;sbit RS1 =0 xD4;sbit RS0 =0 xD3;sbit OV =0 xD2;sbit P =0 xD0;/*TCON */sbit TF1 =0 x8F;sbit TR1 =0 x8E;sbit TF0 =0 x8D;sbit TR0 =0 x8C;sbit IE1 =0 x8B;sbit IT1 =0 x8A;sbit IE0 =0 x89;sbit

8、 IT0 =0 x88;单片机扩充的数据类型/*P3 */sbit RD =0 xB7;sbit WR =0 xB6;sbit T1 =0 xB5;sbit T0 =0 xB4;sbit INT1=0 xB3;sbit INT0=0 xB2;sbit TXD =0 xB1;sbit RXD =0 xB0;/*SCON */sbit SM0 =0 x9F;sbit SM1 =0 x9E;sbit SM2 =0 x9D;sbit REN =0 x9C;sbit TB8 =0 x9B;sbit RB8 =0 x9A;sbit TI =0 x99;sbit RI =0 x98;注:在C文件中,直接使用

9、已经预定义的sfr类型,而无需重新进行定义。此外,此外,还可以通可以通过下面的形式定下面的形式定义sbit:sbit SFR位的名字位的名字=SFR的名字的名字i;其中其中:i=0,.,7注注:在本在本书后后续章章节中,会使用相关的定中,会使用相关的定义。sbit CY=PSW713单片机扩充的数据类型n在C语言中,除了可以使用上面所给出的数据类型外,设计者还可以根据自己的需要对数据类型进行重新定义。重新定义数据类型时需要用到关键字typedef,格式如下:typedef 已有的数据类型 新的数据类型名14自定义数据类型变量的值可以在程序执行过程中不断变化。n在使用变量之前,需要对变量进行定义

10、,定义的内容包括:变量标识符、数据类型和存储模式。n在标准C语言中,编译器会根据数据类型和硬件系统自动的确定存储模式。15变量及存储模式n为了更好的利用所提供的存储空间,在单片机中提供了增强功能的变量存储模式定义功能,定义格式为:存储种类数据类型存储器类型变量名列表;其中:p存储种类和存储器类型是可选项。p变量的存储种类有四种,包括:autoauto(自动)、externextern(外部)、staticstatic(静态)和registerregister(寄存器)。在没有明确说明变量的存储种类时,默认autoauto。nKeil提供对8051系列单片机的硬件结构,以及不同存储器结构的支持。

11、因此,可以在定义变量的时候,为每个定义的变量准确的指定其存储器类型。这样,就可以准确定位变量所在的存储空间.16变量及存储模式17Keil所支持的单片机存储器类型所支持的单片机存储器类型存储器类型说明DATA直接寻址片内数据存储器(128字节),访问速度最快BDATA可位寻址的片内数据存储器(16字节),允许位和字节混合访问IDATA间接访问的片内数据存储器(256字节),允许访问全部片内地址PDATA分页寻址的片外数据存储器(256字节),用MOVX Ri指令进行访问XDATA外部数据存储器(64KB),用MOVX DPTR指令进行访问CODE程序存储器(64KB),用MOVC A+DPTR

12、指令进行访问注:如果在定义变量时,没有指定存储器类型,则按编译时候使用的存储器模式SMALL、COMPACT或者LARGE来确定默认的存储器类型。变量及存储模式n在设置Target 1的对话框窗口界面中的Target标签窗口下,通过Memory Model右侧的下拉框可以选择存储器模式,如图所示。注:从访问效率来看,SMALL存储器模式效率最高,而LARGE访问效率最低。18变量及存储模式在Keil C中,可以通过使用_at_定位变量的绝对地址。格式为:存储器类型 数据类型 标识符 _at_ 地址常数比如:xdata int i1 _at_ 0 x8000;并且,在XDATA空间定义全局变量的

13、绝对地址时,可以在变量前加一个关键字volatile,这样对该变量的访问就不会被Cx51编译器给优化掉。19变量及存储模式【例6-7】带有存储器类型的变量定义例子(程序6-8)void main()xdata long int x=-1000,y=4000;xdata char m=90,n=70;idata char k=10;bdata char l=254;20变量及存储模式外部存储器外部存储器间接访问的片内数据存储器可位寻址的片内数据存储器下面对该例子进行分析,n在调试器模式下,单步运行该程序,一直到程序的末尾。n在Memory 1窗口下,分别输入&x、&y、&m、&n、&k、&l,查

14、看变量所在的存储器空间,以及所占用的字节数。21变量及存储模式在C语言中,提供了对数据进行按位运算的位运算符,包括:n 按位取反n&按位与n|按位或n 按位异或n 右移22运算符位运算符n对于左移和右移运算来说,格式为:变量 移位运算符 移位个数p对于左移操作来说,在最右端(最低位)补0。p对于右移操作来说,如果是无符号的数,则总是在最左端(最高位)补0;如果是有符号的数,如果符号位为1,则在最左端(最高位)补1;否则,在最左端(最高位)补0。23运算符位运算符【例6-13】位运算符的例子(程序6-14)void main()char a=30,b=55;char c,d,e,f,g;int

15、i=-50,j=60;int k,h,l,m;c=a;d=a&b;e=a|b;f=a b;g=(a b);h=(a&b);k=i3;l=j4;24注:注:读者可以读者可以自行自行进入到本书所提供资料的进入到本书所提供资料的STC_example例子例子6-14目录下,在目录下,在Keil Vision5集成开发环境下打开该设计,并进入调试器模式,使用单步运行。集成开发环境下打开该设计,并进入调试器模式,使用单步运行。打开打开Watch 1窗口观察运算得到的结果。窗口观察运算得到的结果。运算符位运算符在C语言中,提供了复合赋值运算符。复合赋值运算符是算术运算符、位运算符以及赋值运算符的组合。复合赋值运算符包括:n+=加法赋值n-=减法赋值n*=乘法赋值n/=除法赋值n%=取模赋值n=右移赋值n&=&=逻辑与赋值n|=|=逻辑或赋值n=逻辑异或赋值n=逻辑非赋值复合赋值运算的格式如下:变量复合赋值运算符表达式注:在符合赋值表达式中,先进行表达式的运算操作,然后再执行赋值操作的过程。26运算符复合赋值运算符g=2;/g=g=3;/h=h3;i&=b;/i=i&b;j|=b;/j=j|b;27运算符复合赋值运算符

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁