教学课件第10章 基于C语言的单片机程序设计.ppt
-
资源ID:25034015
资源大小:1.22MB
全文页数:102页
- 资源格式: PPT
下载积分:40金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
教学课件第10章 基于C语言的单片机程序设计.ppt
PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 资料下载:/ziliao/ PPT课件下载:/kejian/ 范文下载:/fanwen/ 试卷下载:/shiti/ 教案下载:/jiaoan/ 字体下载:/ziti/ 教学课件第10章 基于C语言的单片机程序设计2022-7-9第十章 基于C语言的单片机程序设计qC51特点。qC51基本语法要素。qC51的变量扩充。qC51访问单片机硬件资源方法。2022-7-9广东松山职业技术学院课件制作组本章主要内容本章主要内容 10.1 概概 述述 10.2 C51语言语法要素语言语法要素 10.3 C51存储类型与存储模式存储类型与存储模式 10.4 C51单程序设计实例单程序设计实例2022-7-9广东松山职业技术学院课件制作组10.1 绪论绪论一一 C语言优点语言优点(2 2)可移植性好)可移植性好 (3 3)表达能力强)表达能力强 (4 4)表达方式灵活。)表达方式灵活。 (5 5)可进行结构化程序设计)可进行结构化程序设计 (6 6)可以直接操作计算机硬件)可以直接操作计算机硬件 (7 7)生成的目标代码质量高)生成的目标代码质量高(1 1) C C 语言简洁,使用方便灵活语言简洁,使用方便灵活2022-7-9广东松山职业技术学院课件制作组10.1 绪论绪论二二 C语言缺点语言缺点(1)如不能自动检查数组的边界,如不能自动检查数组的边界,(2)各种运算符的优先级别太多,各种运算符的优先级别太多,(3)某些运算符具有多种用途等。某些运算符具有多种用途等。 但总的来说,C语言的优点还还超过了它的缺点。 经验表明,程序设计员学会使用经验表明,程序设计员学会使用C语言之后,就语言之后,就会对它爱不释手,尤其是单片机应用系统的程序设会对它爱不释手,尤其是单片机应用系统的程序设计人员更是如此。计人员更是如此。2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 为叙述方便,通常将为叙述方便,通常将C语言编写的语言编写的MCS51单单片机程序简称片机程序简称C51程序,而将基于程序,而将基于x86的的C语言语言统称为标准统称为标准C语言,本书也沿用这一称呼。语言,本书也沿用这一称呼。C51语法要素与标准语法要素与标准C语言语法要素基本相同,包括语言语法要素基本相同,包括C语言运算符、语言运算符、C语言数据结构、语言数据结构、C语言语句结语言语句结构等。构等。2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 为叙述方便,通常将为叙述方便,通常将C语言编写的语言编写的MCS51单单片机程序简称片机程序简称C51程序,而将基于程序,而将基于x86的的C语言语言统称为标准统称为标准C语言,本书也沿用这一称呼。语言,本书也沿用这一称呼。C51语法要素与标准语法要素与标准C语言语法要素基本相同,包括语言语法要素基本相同,包括C语言运算符、语言运算符、C语言数据结构、语言数据结构、C语言语句结语言语句结构等。构等。2022-7-9广东松山职业技术学院课件制作组一一 运算符运算符算术运算符算术运算符关系运算符关系运算符逻辑运算符逻辑运算符位运算符位运算符赋值运算符赋值运算符复合运算符等。复合运算符等。各种运算符的定义及优先级见表各种运算符的定义及优先级见表10-1。1. 运算符概述运算符概述10.2 C51C51语言语法要素语言语法要素2022-7-9广东松山职业技术学院课件制作组2022-7-9广东松山职业技术学院课件制作组2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素一一 运算符运算符例例10-1 a+=b 等价于等价于a=(a+b)例例10-2 x*=a+b 等价于等价于x=(x*(a+b)例例10-3 a&=b 等价于等价于a=(a&b)例例10-4 a=4 等价于等价于a=(a4) 2. 运算符举例运算符举例2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型1、变量与常量、变量与常量变量变量:在程序执行过程中其值可以改变的,在程序执行过程中其值可以改变的,常量常量:在程序运行过程中其值是不能改变。在程序运行过程中其值是不能改变。 常量还可以用常量还可以用define宏定义指令定义成宏定义指令定义成其它容易记忆的符号或名称。其它容易记忆的符号或名称。 2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型1、变量与常量、变量与常量#define PI 3.1415926#define ADC *(volatile*)0 xc005 2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型2. 基本数据类型基本数据类型 基本数据类型有整型、实型、字符型、指针型等。基本数据类型有整型、实型、字符型、指针型等。不同的数据类型,编译器分配的存储单元不同,详细不同的数据类型,编译器分配的存储单元不同,详细见表见表10-2。 2022-7-9广东松山职业技术学院课件制作组2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型2. 基本数据类型基本数据类型 有整型、实型、字符型、指针型等。不同的数据类有整型、实型、字符型、指针型等。不同的数据类型,编译器分配的存储单元不同,详细见表型,编译器分配的存储单元不同,详细见表10-2。 (1 1). .整型数据整型数据(16bit)(16bit) 整型变量就是用关键字整型变量就是用关键字intint定义的变量符号,定义的变量符号,比如:比如: int R; int R;2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型(2).(2).实型数据实型数据(32bit)(32bit) 实型数据结构就是定义一个实数变量或常量。实实型数据结构就是定义一个实数变量或常量。实型数据用型数据用floatfloat关键字定义比如:关键字定义比如:float R=3.125;float R=3.125;2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型 实使用关键字实使用关键字charchar定义。定义。(3 3). .字符型数据字符型数据(8bit)char a;2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型 实使用关键字实使用关键字charchar定义。定义。(3 3). .字符型数据字符型数据(8bit)char a;(4).指针型数据指针型数据 指针也即地址的概念,是表示一个变量所在存储指针也即地址的概念,是表示一个变量所在存储器地址编号。器地址编号。2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型(4).指针型数据指针型数据 指针是指针是C51C51的灵魂和精华,具有灵活的应用及功的灵魂和精华,具有灵活的应用及功能,在能,在C51C51中,一些操作只有指针操作才能完成。比中,一些操作只有指针操作才能完成。比如:如:unsigned char xdata unsigned char xdata * *ADC=0 xc005ADC=0 xc005;ADC=0 x00ADC=0 x00;2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型 用用unsigned charunsigned char定义一个无符号的指针变量定义一个无符号的指针变量ADCADC,它所指的地址单元为它所指的地址单元为xdataxdata空间的空间的0 xc0050 xc005地址单元。地址单元。 第第2 2条指令条指令ADC=0 x00ADC=0 x00指令是为指令是为0 xc0050 xc005这个地址单这个地址单元送数据元送数据0 x000 x00,假设,假设A/DA/D转换的启动地址为转换的启动地址为c005Hc005H,则,则运行这条语句之后将启动运行这条语句之后将启动I/OI/O口的口的A/DA/D转换器开始工作。转换器开始工作。2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素二二 、C51数据类型数据类型 用构造型数据包括数组、结构体、共用体等,用构造型数据包括数组、结构体、共用体等,C51C51构造型数据类型与标准构造型数据类型与标准C C语言完全相同,包括定义、语言完全相同,包括定义、引用等,详参考文献,此不在赘述。引用等,详参考文献,此不在赘述。3. 构造型数据构造型数据2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 三、程序表达式与结构三、程序表达式与结构?是程序的重要组成部分是程序的重要组成部分?由运算对象、运算符组成由运算对象、运算符组成?运算对象一般包含常量、变量、函数和表达式等运算对象一般包含常量、变量、函数和表达式等? C C语言提供比较丰富的运算符号语言提供比较丰富的运算符号, ,有算术运算符、有算术运算符、 逻辑运算符以及特殊运算符。逻辑运算符以及特殊运算符。?为编写程序提供了方便,可以精简程序代码,为编写程序提供了方便,可以精简程序代码, 提高程序执行效率。提高程序执行效率。2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 三、程序表达式与结构三、程序表达式与结构 算法表达式就是用一般的算术符号表达的式子,如算法表达式就是用一般的算术符号表达的式子,如加、减、乘、除等。加、减、乘、除等。 如:如:1. 算术表达式算术表达式2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 三、程序表达式与结构三、程序表达式与结构1. 算术表达式算术表达式 这是一个求表示与这是一个求表示与z z轴垂直的圆的方程,它在轴垂直的圆的方程,它在C C语语言的表示为言的表示为: : double z0 double z0,z1z1;z0=z0=(x+ax+a)* *(x+ax+a)+ +(y+by+b)* *(y+by+b) z1=sqrt z1=sqrt(z0z0);); (x+ax+a)* *(x+ax+a)+ +(y+by+b)* *(y+by+b)是()是(x+ax+a)平方平方+ +(y+by+b)平方的表达式,开方在)平方的表达式,开方在C51C51中可以引用中可以引用sqrtsqrt库函数实现。库函数实现。2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 三、程序表达式与结构三、程序表达式与结构2. 赋值表达式赋值表达式 赋值表达式是将常量、常数赋给变量的表达式,赋值表达式是将常量、常数赋给变量的表达式,其格式如下:其格式如下: 如:如: a=12 a=12; b=PI b=PI; c ca+ba+b c=+1 c=+1; / /等效为等效为c=c+1c=c+1;2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 三、程序表达式与结构三、程序表达式与结构3.逻辑表达式逻辑表达式 逻辑表达式是用一些逻辑运算赋连接,逻辑表达式是用一些逻辑运算赋连接,通过一通过一系列逻辑后其值只有系列逻辑后其值只有真真或或假假,两种结果,两种结果, 有逻辑与有逻辑与(&)、逻辑或、逻辑或(|)、逻辑非、逻辑非()等运算。等运算。如:如: key_val=P1; key_val=key_val&0 xf0; if(!(key_val=0 xf0) 2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构 程序语句就是一些指令实现实体。程序语句就是一些指令实现实体。 C C语言的语句经过编译之后将编成计算机语言的语句经过编译之后将编成计算机CPUCPU能能识别并执行的机器代码。合理利用识别并执行的机器代码。合理利用C C语言程序的语句语言程序的语句结构,能使程序更简洁,执行效率更高。结构,能使程序更简洁,执行效率更高。1. 选择执行结构选择执行结构一种是switch语句一种使if语句2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构 1).if()语句()语句 如:如: if(SS60)if(SS60) SS+; SS+;2)if()() 语句语句1 else 语句语句2 如:如:ifif(SS60SS60) SS+SS+; else SS=0else SS=0;2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构 3)if(表达式(表达式1) 语句语句1 else if (表达式(表达式2) 语句语句2else if (表达式(表达式3) 语句语句3else if (表达式(表达式4) 语句语句n2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构4)if语句的嵌套使用语句的嵌套使用if() if() if() if(key_val=K1) FUC-; if(FUC=0) FUC=0 x64; 2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构(2)switch语句语句switchswitch是多分支选择语句,又叫开关语句。是多分支选择语句,又叫开关语句。其语法结构为:其语法结构为:switch(表达式表达式)case 常量表达式常量表达式1:语句:语句1 case 常量表达式常量表达式2:语句:语句2case 常量表达式常量表达式n: 语句语句ndefault:语句语句n+12022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素(2)switch语句语句switch(key_val) case K1: led(1,0 x3f) /键盘键盘1 _nop_();(); break; case K2: led(2,0 x26) /键盘键盘2 _nop_();(); break; case K3: led(1,0 x5b);); _nop_();(); break; default: break;2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素2. 循环执行结构循环执行结构一个常见的循环程序如下:一个常见的循环程序如下:while(1) P0=0 xfe; delay(10); P0=0 xff; delay(10); 四、四、C51语句结构语句结构2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构(1) while循环结构循环结构while(条件表达式条件表达式)语句语句while(x60)x-;功能:如果功能:如果(条件表达式条件表达式)为真,则执行后面的语句,为真,则执行后面的语句,如:如:2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构(2)do- while循环结构循环结构do语句语句 while(条件表达式)(条件表达式)功能:先执行功能:先执行语句语句,再判断,再判断(条件表达式条件表达式),如果为,如果为真,则停止执行。真,则停止执行。do a-;while(!a)2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构(3)for循环结构循环结构for(表达式(表达式1;表达式;表达式2;表达式;表达式3)语句)语句如:如:for(i=0;iN;i+) xi=0; 2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构(3)for循环结构循环结构 用用for语句代替语句代替while语句可以实现更长时间延语句可以实现更长时间延时,如:时,如: void delay(x)unsigned char I,j,k;for (i=0;ix;i+)for (j=0;j200;j+)for (k=0;k200;k+););2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构(3)for循环结构循环结构 用用for语句代替语句代替while语句可以实现更长时间延语句可以实现更长时间延时,如:时,如: void delay(x)unsigned char I,j,k;for (i=0;ix;i+)for (j=0;j200;j+)for (k=0;k200;k+);); 可以使用公式可以使用公式ijxt大至计算延时时大至计算延时时间,其中间,其中t为编译后的汇编指令周期时间为编译后的汇编指令周期时间。2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构(4)终止循环语句)终止循环语句 break:终止本语句循环,跳出循环体:终止本语句循环,跳出循环体 continue:终止本次循环,不跳出循环体:终止本次循环,不跳出循环体2022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构3. 预处理指令预处理指令(1)define语句语句 define语句通常用来定义简洁、易记的符号或字语句通常用来定义简洁、易记的符号或字符用以表示复杂的常数,如:符用以表示复杂的常数,如: #define ADC *(volatile*)0 xc0052022-7-9广东松山职业技术学院课件制作组10.2 C51C51语言语法要素语言语法要素 四、四、C51语句结构语句结构(2)include语句语句 这是一条文件包含语句,它告诉编译器被包含的这是一条文件包含语句,它告诉编译器被包含的文件在具体的位置,如文件在具体的位置,如#include “stc8958.h”#include #include “stc8958.h”先在当前编译的文件所在的先在当前编译的文件所在的目录(路径)寻找目录(路径)寻找stc8958.h,如果找不到再到编译器默,如果找不到再到编译器默认的认的include目录去找目录去找 #include 则直接到到编译器默认的则直接到到编译器默认的include目录寻找。目录寻找。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式 这一节将解决这一节将解决C语言访问单片机内部资源的问题,语言访问单片机内部资源的问题,通过扩充若干关键字,使得通过扩充若干关键字,使得C51能够访问单片机任意能够访问单片机任意位置存储器。具体如下表:位置存储器。具体如下表:2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式datadata所声明的变量位于所声明的变量位于80518051片内低片内低128B RAM128B RAM区区idataidata所声明的变量可使用所声明的变量可使用RiRi间接寻址间接寻址pdatapdata所声明的变量在页间接寻址区可使所声明的变量在页间接寻址区可使 用用MOVX RiMOVX Ri寻址寻址bdatabdata声明的变量位于声明的变量位于8051 RAM 16B8051 RAM 16B位寻址区位寻址区xdataxdata声明的对象或变量位于外部声明的对象或变量位于外部64KB64KB数据存储区,数据存储区,可使用可使用MOVX A DPTRMOVX A DPTR寻址;寻址;codecode所声明对象位于程序存储器中,可使用所声明对象位于程序存储器中,可使用MOVC AMOVC A,A+DPTRA+DPTR指令寻址。指令寻址。一、一、C51存储类型存储类型2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式C51有三种存储器模式:有三种存储器模式:二、二、C51存储模式存储模式 SMALL模式LARGE模式模式COMPACT模式2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式二、二、C51存储模式存储模式 1.SMALL1.SMALL模式模式 SMALL模式下的程序,非寄存器传递的参模式下的程序,非寄存器传递的参数和无明确存储器类型说明的变量位于可直接数和无明确存储器类型说明的变量位于可直接寻址的内部寻址的内部RAM低区的低区的128B中,参数的传递和中,参数的传递和变量的访问具有最高的效率。变量的访问具有最高的效率。2.COMPACT模式模式 COMPACTCOMPACT模式下的程序,函数参数的传递和无明模式下的程序,函数参数的传递和无明确存储器类型说明的变量都定位在分页寻址的外部数确存储器类型说明的变量都定位在分页寻址的外部数据存储区中,页长度为据存储区中,页长度为256B256B。页内存储单元使用寄存。页内存储单元使用寄存器器R0R0或则间接寻址或则间接寻址( (用用MOVX R0MOVX R0或或MOVX RiMOVX Ri指令指令) ),具,具有较高的访问效率。有较高的访问效率。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式二、二、C51存储模式存储模式 3.LARGE.LARGE模式模式模式模式 LARGELARGE模式下的程序,参数且无存储器类型的变模式下的程序,参数且无存储器类型的变量位于量位于64KB64KB外部数据存储区中,对数据对象的访问使外部数据存储区中,对数据对象的访问使用数据指针用数据指针DPTR(DPTR(用用MOVX DPTRMOVX DPTR指令指令) )间接寻址,其目间接寻址,其目标代码具有最大长度和最低的执行效率。标代码具有最大长度和最低的执行效率。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式二、二、C51存储模式存储模式 无论编译器使用何种存储器模式,都可使用存储无论编译器使用何种存储器模式,都可使用存储器类型关键字器类型关键字datadata、idataidata、pdatapdata、xdataxdata、和、和CodeCode对变量进行明确的存储空间定位,从而使程序可灵活对变量进行明确的存储空间定位,从而使程序可灵活地使用地使用MCS51MCS51系统的所有存储器资源。系统的所有存储器资源。 内部数据存储器的访问要比外部数据存储器的访内部数据存储器的访问要比外部数据存储器的访问速度快得多,因此频繁使用的变量可置于内部数问速度快得多,因此频繁使用的变量可置于内部数据存储器中,大块的或较少使用的数据可置于外部数据存储器中,大块的或较少使用的数据可置于外部数据存储器中,表格和常数可置于程序存储器中。据存储器中,表格和常数可置于程序存储器中。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式三、三、SFR特殊功能寄存器声明特殊功能寄存器声明 众所周知,只有汇编语言才具备直接访问众所周知,只有汇编语言才具备直接访问CPUCPU寄寄存器的操作,标准存器的操作,标准C C语言不具备该功能。为了能使语言不具备该功能。为了能使C51C51能完成对能完成对8051 CPU8051 CPU的寄存器(特殊功能寄存器)如的寄存器(特殊功能寄存器)如P P口、定时器、中断寄存器等操作,必须对变量类型做口、定时器、中断寄存器等操作,必须对变量类型做一扩充。实现对一扩充。实现对SFRSFR的扩充操作使用的扩充操作使用SFR/SFR16SFR/SFR16实现,实现,其格式如下:其格式如下: SFR SFR 寄存器名寄存器名= =直接地址值直接地址值 SFR16 SFR16 寄存器名寄存器名= =直接地址值。直接地址值。 其中其中SFRSFR定义一个定义一个8bit8bit寄存器,寄存器,SFR16SFR16定义一个定义一个16bit16bit寄存器。寄存器。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式三、三、SFR特殊功能寄存器声明特殊功能寄存器声明 如:如:SFR TMOD=0X80;SFR TMOD=0X80;SFR16 DPTR=0X81;SFR16 DPTR=0X81; void main void main(voidvoid) TMOD=0 x02 TMOD=0 x02; DPTR=0 x1000 DPTR=0 x1000; TMOD=0 x02TMOD=0 x02便被编译成汇编语句便被编译成汇编语句MOV TMODMOV TMOD,#02H#02H,DPTR=0 x1000DPTR=0 x1000被编译成被编译成MOV DPHMOV DPH,#10H#10H,MOV DPLMOV DPL,#00H#00H。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式四、寄存器位声明四、寄存器位声明 位的声明具有三种格式:位的声明具有三种格式:1、sbit位名特殊功能寄存器名位名特殊功能寄存器名位常数位常数 位名实际上为位名实际上为C51C51的位变量,通常定义成持的位变量,通常定义成持殊功能寄存器位的名字,殊功能寄存器位的名字,位常数为位常数为07之间的整型数。之间的整型数。 特殊功能寄存器名必须是用特殊功能寄存器名必须是用sfrsfr已经定义好已经定义好的变量。这种定义形式适用于对巳定义好的可位的变量。这种定义形式适用于对巳定义好的可位寻址的持殊功能寄存器声明位变量。寻址的持殊功能寄存器声明位变量。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式四、寄存器位声明四、寄存器位声明 1、sbit位名特殊功能寄存器名位名特殊功能寄存器名位常数位常数 举例:举例:例例10-5 10-5 用特殊功能寄存器名定义特殊功能位,用特殊功能寄存器名定义特殊功能位, sfr PSWoxd0; sfr IE0 xA8; sbitOVPSW2; sbit CYPSW72022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式四、寄存器位声明四、寄存器位声明 1、sbit位名特殊功能寄存器名位名特殊功能寄存器名位常数位常数 举例:举例:例例10-610-6 用特殊功能寄存器的直接地址定义待用特殊功能寄存器的直接地址定义待 殊功能位。殊功能位。 sbit OVsbit OV0 xd060 xd06 sbit CY sbit CY0 xd070 xd07 sbit EA sbit EA0 xA870 xA872022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式四、寄存器位声明四、寄存器位声明 2. sbit 位名直接地址位名直接地址整型常量整型常量 直接地址必须位于直接地址必须位于0 x800 xff0 x800 xff之间,且必之间,且必须是可位寻址的特殊功能位的地址。须是可位寻址的特殊功能位的地址。举例:举例: 例例10-710-7 用位绝对地址定义特殊功能位。用位绝对地址定义特殊功能位。 sbit OVsbit OV0 xd060 xd06 sbit CY sbit CY0 xd070 xd07 sbit EA sbit EA0 xa870 xa872022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式四、寄存器位声明四、寄存器位声明 3. sbit 位名位地址位名位地址 其中;位绝对地址值必须位于其中;位绝对地址值必须位于0 x80-0 xff0 x80-0 xff之间,之间,且必须是可位寻址的特殊功能寄存器位地址且必须是可位寻址的特殊功能寄存器位地址举例:举例: 例例10-810-8: 用位地址定义特殊功能位。用位地址定义特殊功能位。sbit OV=0 xd2;sbit OV=0 xd2;sbit CY=0 xd7sbit CY=0 xd7;sbit EA=0 xafsbit EA=0 xaf;2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式五五 、可位寻址对象的声明、可位寻址对象的声明 位于内部位于内部RAMRAM低区低区128B128B位寻址区,位寻址区, 用扩充的关键用扩充的关键bdatabdata可将变量置于该地址空间。可将变量置于该地址空间。 对该地址空间的数据对象使用关键字对该地址空间的数据对象使用关键字sbitsbit声声 明一个位变量。明一个位变量。 在使用关键字在使用关键字bdatabdata和和sbitsbit声明对象后,声明对象后, 该变量即可以字节方式访问对象,也可以位该变量即可以字节方式访问对象,也可以位 方式访问。方式访问。 格式:格式:sbit sbit 位名位名= =变量名变量名 位常数位常数2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式五五 、可位寻址对象的声明、可位寻址对象的声明 举例举例 例例10-910-9 unsigned char bdata abc; char bdata arry5; sbit f1abc0; sbit f2abc1; sbit f3abc12; sbit f4arry00; sbit f5=arry45; f1=1; f4=0;2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式五五 、可位寻址对象的声明、可位寻址对象的声明 格式中,变量名必须是使用格式中,变量名必须是使用bdatabdata声明的变声明的变量类型,位常数依据变量类型而定,如为量类型,位常数依据变量类型而定,如为charchar,则位常数取则位常数取0707,如为,如为unsigned charunsigned char,则位常数,则位常数取取015015,如为,如为longlong则位常数取则位常数取031031。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式六、位标量的声明六、位标量的声明 bit bit数据类型(位标量),长度为一位二进数据类型(位标量),长度为一位二进制位。制位。bitbit数据类型既可声明变量,也可声明函数据类型既可声明变量,也可声明函数传递参数和函数返回值。数传递参数和函数返回值。 举例:举例:例10 -10 bit变量声明。 bit a; bit b; 例10-11 bit型形参与返回值的声明 bit sample1(unsigned char a,bit b) return(b);2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式六、位标量的声明六、位标量的声明 bitbit型数据使用中应注意:型数据使用中应注意:(1 1)不能声明指向)不能声明指向bitbit型对象的指针(如型对象的指针(如bit bit * *b b););(2 2)不能声明)不能声明bitbit型数组(如型数组(如 bit arry5bit arry5););(3 3)允许给)允许给bitbit型变量定义存储器类型,但型变量定义存储器类型,但bitbit型变型变量总是被编译器放入一个位段,因此存储器类型被限量总是被编译器放入一个位段,因此存储器类型被限制为制为datadata和和idataidata,声明其它存储器类型导致编译时,声明其它存储器类型导致编译时出错。出错。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式七、函数的中断七、函数的中断 汇编语言可以很方便的手工设定中断矢量,完汇编语言可以很方便的手工设定中断矢量,完成中断转移。标准成中断转移。标准C语言是不具备自动中断主函数语言是不具备自动中断主函数的功能,为了能使用的功能,为了能使用C语言完成中断操作,在语言完成中断操作,在C51中中扩展了扩展了interrupt关键字,使函数具有中断属性,能自关键字,使函数具有中断属性,能自动打断正在运行的函数。动打断正在运行的函数。C51编写中断函数比汇编编写中断函数比汇编语言编写中断程序要简单,其格式如下:语言编写中断程序要简单,其格式如下:void 函数名(void)存储器模式再入interrupt musing n2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式七、函数的中断七、函数的中断 void 函数名(void)存储器模式再入interrupt musing n interrupt m声明中断源号,声明中断源号, using n 声明工作寄存器组,声明工作寄存器组,m、n取值范围为取值范围为0-32之间的整数。之间的整数。 对对8051单片机而言,单片机而言,m取取0-4,分别对应单片,分别对应单片机的外部中断机的外部中断0、定时器、定时器0、外部中断、外部中断1、定时器、定时器1、串口中断;串口中断;n取取0-3,分别对应单片机的工作寄存,分别对应单片机的工作寄存器组器组0-3。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式七、函数的中断七、函数的中断 例例10-1210-12:void timer0(void) interrupt 1 using 0例例10-1210-12中定义的是中定义的是80518051单片机定时器单片机定时器0 0的中的中断函数。当定时器断函数。当定时器0 0发生益处中断时,自动执行上述发生益处中断时,自动执行上述函数体,完成中断操作之后自动返回函数中断处。函数体,完成中断操作之后自动返回函数中断处。2022-7-9广东松山职业技术学院课件制作组10.3 C51C51存储器类型与存储器模式存储器类型与存储器模式七、函数的中断七、函数的中断 中断函数规则:中断函数规则:(1 1)C51C51中断函数自动完成入栈和出栈操作;中断函数自动完成入栈和出栈操作;(2 2)中断函数不允许带任何传递参数,否则)中断函数不允许带任何传递参数,否则编编 译出错;译出错;(3 3)中断函数中使用)中断函数中使用returnreturn语句返回