(2.4)--4章 单片机C语言程序设计.ppt

上传人:奉*** 文档编号:96483178 上传时间:2023-12-03 格式:PPT 页数:43 大小:2.69MB
返回 下载 相关 举报
(2.4)--4章 单片机C语言程序设计.ppt_第1页
第1页 / 共43页
(2.4)--4章 单片机C语言程序设计.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《(2.4)--4章 单片机C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《(2.4)--4章 单片机C语言程序设计.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4章章 单片机单片机C语言程序设语言程序设计计单片机原理单片机原理与应用与应用主要内容:C51的数据类型,C51的变量与存储器类型,绝对地址的访问,C51中的函数。重点:uC51特有数据类型uC51特有变量和存储器类型u绝对地址的访问和中断函数23章 节4.1 C51基本知识4.2 C51的数据类型4.3 C51的变量与存储类型4.4 绝对地址的访问4.5 C51中的函数4.1 C51基本知识基本知识C51与标准与标准C语言的区别主要体现在以下几个方面。语言的区别主要体现在以下几个方面。(1)C51中的数据类型与标准中的数据类型与标准C语言的数据类型也有一定的语言的数据类型也有一定的区别。

2、区别。(2)C51在变量定义与使用上与标准在变量定义与使用上与标准C语言不一样。语言不一样。(3)为了方便对为了方便对51单片机硬件资源进行访问,单片机硬件资源进行访问,C51在绝在绝对地址访问上对标准对地址访问上对标准C语言进行了扩展。语言进行了扩展。(4)C51中函数的定义与使用与标准中函数的定义与使用与标准C语言也不完全相同。语言也不完全相同。44.2 C51的数据类型的数据类型基本数据类型名称长 度取值范围unsigned char无符号字符型1字节0255signed char有符号字符型1字节-128+127unsigned int无符号整型2字节065535signed int有

3、符号整型2字节-32768+32767unsigned long无符号长整型4字节04294967295signed long有符号长整型4字节-2147483648+2147483647float浮点型4字节1.175494E-383.402823E+38bit位型位型1位位0或或1sbit特殊位型特殊位型1位位0或或1sfr8位特殊功能寄存器型位特殊功能寄存器型1字节字节0255sfr1616位特殊功能寄存器型位特殊功能寄存器型2字节字节0655355a)标准C语言中存放格式 b)C51中存放格式int数据0 x3456存放格式 注意:1、整型和长整型数据的存放格式6注意:1、整型和长整型

4、数据的存放格式 a)标准C语言中存放格式 b)C51中存放格式long数据0 x12345678存放格式7注意:2、C51的特有数据类型 特殊功能寄存器型特殊功能寄存器型 访问访问MCS-51单片机的特殊功能寄存器。单片机的特殊功能寄存器。分为分为sfr和和sfr16两种类型两种类型:sfr为字节型特殊功能寄存器类型,占一个内存为字节型特殊功能寄存器类型,占一个内存单元,可以访问单元,可以访问MCS-51内部的所有特殊功能寄存内部的所有特殊功能寄存器;器;sfr16为双字节型特殊功能寄存器类型,占两个为双字节型特殊功能寄存器类型,占两个字节单元,可以访问字节单元,可以访问MCS-51内部的所有

5、两个字节内部的所有两个字节的特殊功能寄存器。的特殊功能寄存器。8注意:2、C51的特有数据类型 位类型位类型 访问访问MCS-51单片机的可寻址的位单元。在单片机的可寻址的位单元。在内存中都只占一个二进制位,其值可以是内存中都只占一个二进制位,其值可以是“1”或或“0”。支持两种位类型:支持两种位类型:bit型和型和sbit型。型。bit定义的位变量在用定义的位变量在用C51编译器编译时,不编译器编译时,不同的时候分配的位地址不一样。同的时候分配的位地址不一样。sbit定义的位变量必须与定义的位变量必须与MCS-51单片机的一单片机的一个可以位寻址的位单元联系在一起,在个可以位寻址的位单元联系

6、在一起,在C51编译编译器编译时,其位地址是不可变化的。器编译时,其位地址是不可变化的。94.3 C51的变量与存储类型的变量与存储类型存储种类存储种类 数数据类型说明符据类型说明符 存储器类型存储器类型 变变量量名名1=初值初值,变,变量名量名2=初值初值;1.数据类型说明符数据类型说明符2.变量名变量名3.存储种类存储种类格式:分别是自动分别是自动(auto)、外部、外部(extern)、静态、静态(static)和寄存器和寄存器(register)104.3 C51的变量与存储类型的变量与存储类型4.存储器类型存储器类型存储器类型存储器类型描描 述述 data直接寻址的片内直接寻址的片内

7、RAM低低128B,访问速度快,访问速度快 bdata片内片内RAM的可位寻址区的可位寻址区(20H2FH),允许字节和位混合访问,允许字节和位混合访问 idata间接寻址访问的片内间接寻址访问的片内RAM,允许访问全部片内,允许访问全部片内RAM pdata用用Ri间接访问的片外间接访问的片外RAM低低256B xdata用用DPTR间接访问的片外间接访问的片外RAM,允许访问全部,允许访问全部64KB片外片外RAM code程序存储器程序存储器ROM64KB空间空间指明变量所处的单片机的存储器区域与访问方式。指明变量所处的单片机的存储器区域与访问方式。1112存储模式存储模式(1)SMAL

8、L模式。SMALL模式称为小编译模式,在SMALL模式下,编译时变量被默认在片内RAM中,存储器类型为data。(2)COMPACT模式。COMPACT模式称为紧凑编译模式,在COMPACT模式下,编译时变量被默认在片外RAM的低256B空间,存储器类型为pdata。(3)LARGE模式。LARGE模式称为大编译模式,在LARGE模式下,编译时变量被默认在片外RAM的64B空间,存储器类型为xdata。指定通过#pragma预处理命令13【例例4-2】C51变量定义情况。变量定义情况。char data varl;/*在片内在片内RAM低低128B定义用直接寻址方式访问的字符型变量定义用直接寻

9、址方式访问的字符型变量var1*/int idata var2;/*在片内在片内RAM256B定义用间接寻址方式访问的整型变量定义用间接寻址方式访问的整型变量var2*/auto unsigned long data var3;/*在片内在片内RAM128B定义用直接寻址方式访问的自动无符号长整型变量定义用直接寻址方式访问的自动无符号长整型变量var3*/extern float xdata var4;/*在片外在片外RAM64KB空间定义用间接寻址方式访问的外部实型变量空间定义用间接寻址方式访问的外部实型变量var4*/int code var5;/*在在ROM空间定义整型变量空间定义整型变

10、量var5*/unsigned char bdata var6;/*在片内在片内RAM位寻址区位寻址区20H2FH单元定义可字节处理和位处理的无符号字符型单元定义可字节处理和位处理的无符号字符型变量变量var6*/#pragma small /*变量的存储模式为变量的存储模式为SMALL*/char k1;/*k1变量的存储器类型默认为变量的存储器类型默认为data*/int xdata m1;/*m1变量的存储器类型为变量的存储器类型为xdata*/#pragma compact /*变量的存储模式为变量的存储模式为compact*/char k2;/*k2变量的存储器类型默认为变量的存储器

11、类型默认为pdata*/int xdata m2;/*m2变量的存储器类型为变量的存储器类型为xdata*/4.3.2 C51的特殊功能寄存器变量的特殊功能寄存器变量sfr或或sfr16 特殊功能寄存器变量名特殊功能寄存器变量名=地址;地址;【例例4-3】特殊功能寄存器的定义。特殊功能寄存器的定义。sfr PSW=0 xd0;sfr SCON=0 x98;sfr TMOD=0 x89;sfr P1=0 x90;sfr16 DPTR=0 x82;sfr16 T0=0X8A;格式:格式:14为了与一般变量相区别,特殊功能寄存器变量名一般用大写为了与一般变量相区别,特殊功能寄存器变量名一般用大写字母

12、表示。地址一般用直接地址形式。为了使用方便,特殊字母表示。地址一般用直接地址形式。为了使用方便,特殊功能寄存器变量名取名时一般与相应的的特殊功能寄存器名功能寄存器变量名取名时一般与相应的的特殊功能寄存器名相同。相同。4.3.3 C51的位变量的位变量bit -定义一般的位变量定义一般的位变量 bit 位变量名位变量名;【例例4-4】bit型变量的定义。型变量的定义。bit data a1;/*正确正确*/bit bdata a2;/*正确正确*/bit pdata a3;/*错误错误*/bit xdata a4;/*错误错误*/格式:格式:注意:注意:定义的位变量定义的位变量必须必须位于片内数

13、据存储器的位于片内数据存储器的位寻址区。位寻址区。15【例例4-19】sbit型变量的定义。型变量的定义。sbit OV=0 xd2;sbit CY=0 xd7;unsigned char bdata flag;sbit flag0=flag0;sfr P1=0 x90;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;“reg51.h”或或“reg52.h”“#include”sbit-定义定义位地址确定的位变量位地址确

14、定的位变量 sbit 位变量名位变量名=位地址位地址;格式:格式:16174.3.4 C51的指针变量 使用指针可以方便有效地表达复杂的数据结构;可以动态地分配存储器,直接处理内存地址。分为“存储器型指针”和“一般指针”两种。1)存储器型指针存储器型指针 定义时指明了所指向的数据的存储器类型。char xdata *p2;2)一般指针)一般指针定义时没有指明所指向的数据的存储器类型。4.4 绝对地址的访问绝对地址的访问1.使用使用C51运行库中预定义宏运行库中预定义宏#include 。CBYTE以字节形式对code区寻址,DBYTE以字节形式对data区寻址,PBYTE以字节形式对pdata

15、区寻址,XBYTE以字节形式对xdata区寻址,CWORD以字节形式对code区寻址,DWORD以字形式对data区寻址,PWORD以字节形式对pdata区寻址,XWORD以字节形式对xdata区寻址。访问形式如下:访问形式如下:宏名宏名地址地址18#include#include#define uchar unsigned char#define uint unsigned int void main(void)uchar var1;uint var2;var1=XBYTE0 x0005;var2=XWORD0 x0002;while(1);绝对地址对存储单元的访问例子。19#define

16、uchar unsigned char#define uint unsigned int void func(void)uchar data var1;uchar pdata *dp1;uint xdata *dp2;uchar data *dp3;dp1=0 x30;dp2=0 x1000;*dp1=0 xff;*dp2=0 x1234;dp3=&var1;*dp3=0 x20;4.4.2 通过指针访问204.4.3.使使用用C51扩展关键字扩展关键字_at_存储器类型 数据类型说明符 变量名 _at_ 地址常数;#define uchar unsigned char#define uint

17、 unsigned int data uchar x1 _at_ 0 x40;xdata uint x2 _at_ 0 x2000;void main(void)x1=0 xff;x2=0 x1234;while(1);格式:格式:214.5 C51中的函数中的函数C51程序与标准程序与标准C语言类似,程序也由若干函数组成,程语言类似,程序也由若干函数组成,程序也由主函数序也由主函数main()开始,并在主函数中结束,除了主开始,并在主函数中结束,除了主函数而外,也有标准库函数和用户自定义函数。标准库函数而外,也有标准库函数和用户自定义函数。标准库函数是函数是C51编译器提供的,不需要用户进行

18、定义,可以直编译器提供的,不需要用户进行定义,可以直接调用。用户也可自己定义函数。它们的使用方法与标接调用。用户也可自己定义函数。它们的使用方法与标准准C语言基本相同。但语言基本相同。但C51针对的是针对的是51系列单片机,系列单片机,C51的函数在有些方面还是与标准的函数在有些方面还是与标准C语言不同,参数传递和返语言不同,参数传递和返回值与标准回值与标准C语言中是不一样的,而且语言中是不一样的,而且C 51又对标准又对标准 C语语言作了相应的扩展。言作了相应的扩展。扩扩展有:选择存储模式;指定一个展有:选择存储模式;指定一个函数作为一个中断函数;选择所用的寄存器组;指定重函数作为一个中断函

19、数;选择所用的寄存器组;指定重入等。入等。1.C51函数的参数传递一种是通过寄存器R0R7传递参数;第二种是通过固定存储区传递。参数类型charintlong/float通用指针第1个R7R6、R7R4R7R1、R2、R3第2个R5R4、R5R4R7R1、R2、R3第3个R3R2、R3无R1、R2、R323表表4.6 传递参数用到的寄存器传递参数用到的寄存器2.C51函数的返回值函数的返回值函数返回值通常用寄存器传递 返回值类型寄 存 器说 明BitC由位运算器C返回(unsigned)charR7在R7返回单个字节(unsigned)intR6、R7高位在R6,低位在R7(unsigned)

20、longR4R7高位在R4,低位在R7floatR4R732位IEEE格式通用指针R1、R2、R3存储类型在R3,高位在R2,低位在R1243.C51函数的存储模式函数的存储模式(1)SMALL模式。SMALL模式称为小编译模式,在SMALL模式下,编译时函数参数和变量被默认在片内RAM中,存储器类型为data。(2)COMPACT模式。COMPACT模式称为紧凑编译模式,在COMPACT模式下,编译时函数参数和变量被默认在片外RAM的低256B空间,存储器类型为pdata。(3)LARGE模式。LARGE模式称为大编译模式,在LARGE模式下,编译时函数参数和变量被默认在片外RAM的64B空

21、间,存储器类型为xdata。函数定义时后面再相应的参数(small,compact或large)来指明,系统隐含为SMALL模式。2526【例例4-9】C51函数的存储模式例子。函数的存储模式例子。int func1(int x1,int y1)large /*函数的存储模式为函数的存储模式为LARGE*/int z1;z1=x1+y1;return(z1);/*x1,y1,z1变量的存储器类型默认为变量的存储器类型默认为xdata*/int func2(int x2,int y2)/*函数的存储模式隐含为函数的存储模式隐含为SMALL*/int z2;z2=x2-y2;return(z2);

22、/*x2,y2,z2变量的存储器类型默认为变量的存储器类型默认为data*/4.C51的中断函数的中断函数定义函数时后面用了interrupt m修饰符,,则把该函数定义成中断函数。系统对中断函数编译时会自动加上程序头段和尾段,并按MCS-51系统中断的处理方式把它安排在程序存储器中的相应位置。m的取值为031,对应的中断情况如下:0外部中断01定时/计数器T02外部中断13定时/计数器T14串行口中断5定时/计数器T227编写MCS-51中断函数需要注意如下几点。(1)中断函数不能进行参数传递(2)中断函数没有返回值(3)在任何情况下都不能直接调用中断函数(4)如果在中断函数中调用了其他函数

23、,则被调用函数所使用的寄存器必须与中断函数相同(5)C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容(6)C51编译器从绝对地址8m+3处产生一个中断向量(7)中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明 28【例例4-10】编写一个用于统计外中断0的中断次数的中断服务程序。extern int x;void int0()interrupt 0 using 1 x+;29对于using n修饰符的使用,应注意以下几点:(1)加入using n后,C51在编译时自动在函数的开始处和结束处加入以下指令。PUSH PSW MOV PSW,#与寄存器组号n相关的常

24、量POP PSW (2)using n修饰符不能用于有返回值的函数。5.C51函数的寄存器组函数的寄存器组定义时带using n修饰符,其中n的取值为03 void func3(void)using 1 306.C51的重入函数的重入函数C51函数定义时,通过后面带reentrant修饰符把函数声明为重入函数 char int func4(char a,char b)reentrantchar c;c=a+b;return(c)31习 题 1、2、3、5、8、932怎样学习单片机怎样学习单片机教学目标教学目标掌握单片机原理与应用系统设计技能需要具备需要具备单片机硬件硬件、软件软件、接口接口、开

25、发工具开发工具四方面知识硬件系统软件系统接口系统开发工具开发工具第1章 概述 硬件系统硬件系统(CPU,RAM,IO,T/C,INT,UART)存储器输入/输出单元定时/计数器中断系统串行通信第1章 概述 软件系统软件系统C51语言程序汇编语言程序第1章 概述 接口系统接口系统(LED,KEY,AD,DA,IO扩展)键盘电路数码管数码管键盘键盘模数转换模数转换数模转换数模转换可编程接口可编程接口第1章 概述 单片机自身没有编程开发能力,必须借助软件开发开发工具工具编写调试应用软件。单片机实验箱软件开发工具第1章 概述 开发工具开发工具PROTEUS单片机仿真软件单片机仿真软件 第1章 概述 K

26、eil C51简介 Keil C51是是51单片机软件开单片机软件开发的发的C语言和汇编语言环境,可语言和汇编语言环境,可以进行纯软件仿真;也可以与以进行纯软件仿真;也可以与Proteus软件联合进行仿真。软件联合进行仿真。开发工具开发工具 Keil集成开发环境软件集成开发环境软件第1章 概述 仿真运行效果第1章 概述 学好这门课程的建议多练多实践(计算机是“玩”出来的,只学不练用不好计算机,单片机也一样),仿真设计或实验板都行课前预习、课后复习、勤做练习、及时提问强化记忆(在理解的基础上该记的东西一定要记,不记忆一些基本和必要的内容就谈不上应用)多看案例和阅读编写程序(相关参考书非常多)网上有很多学习单片机的网站,视频 第1章 概述 单片机单片机电源模块电源模块按键按键音乐输出音乐输出LED显示显示数码管显示数码管显示红外红外遥控遥控继电器继电器控制控制串行串行模块模块关于实验板第1章 概述 谢谢您的聆听谢谢您的聆听

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

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

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

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