第10章80C51的C语言程序设计.ppt
《第10章80C51的C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第10章80C51的C语言程序设计.ppt(44页珍藏版)》请在三一办公上搜索。
1、2023/11/18,1,第10章 80C51的C语言程序设计,单片机C语言概述,10.1,C51的数据类型与运算,10.2,C51流程控制语句,10.3,C51的指针类型,10.4,C51的函数,10.5,C51编程实例,10.6,2023/11/18,2,10.1 单片机C语言概述,10.1.1 C51程序开发过程,编译器能自动完成变量的存储单元的分配 对常用功能模块和算法编制相应的函数,方便移植,采用C51的优点,C语言具有良好的可读性、可移植性和基本的硬件操作能力。,C51程序开发过程,编写源程序 建立工程,加入源程序 编译生产目标程序 仿真调试、写存储器,2023/11/18,3,2
2、023/11/18,4,10.1.2 C51程序结构,#include#include void delayms(unsigned);void main(void)unsigned char i;P1=0 x01;do for(i=0;i=7;i+)delayms(5000);P1=P11;if(P1=0 x0)P1=0 x01;while(1);,void delayms(unsigned x)unsigned char j;while(x-)for(j=0;j123;j+);,2023/11/18,5,10.2.1 C51的数据类型,10.2 C51的数据类型与运算,数据类型决定其取值范围
3、、占用存储器的大小及可参与哪种运算。,2023/11/18,6,尽可能采用无符号格式bit用于定义位变量的名字,编译器会对其分配地址(RAM的20H2FH 区域)sbit用于定义位变量的名字和地址,地址是确定的且不用编译器分配(SFR及RAM的20H2FH 区域)C51编译器在编译时会自动进行类型转换,几点说明:,2023/11/18,7,10.2.2 C51数据的存储类型,C51的存储器类型,2023/11/18,8,经常使用的变量应该置于片内RAM中,要用bdata、data、idata来定义不经常使用的变量或规模较大的变量应该置于片外RAM中,要用pdata、xdata来定义默认存储器类
4、型由编译控制命令的存储模式指令限制,2023/11/18,9,10.2.3 80C51硬件结构的C51定义,特殊功能寄存器的声明,sfr 特殊功能寄存器名=地址常数;,格式:,例如:sfr SCON=0 x90;sfr P0=0 x80;,2023/11/18,10,特殊功能寄存器中特定位的声明,sbit 位变量名=特殊功能寄存器名位的位置(07)例如:sfr PSW=0 xD0;sbit OV=PSW2;,sbit 位变量名=字节地址位的位置(07)例如:sbit OV=0 xD02;sbit CY=0 xD07;,sbit 位变量名=位地址 例如:sbit OV=0 xD2;sbit CY
5、=0 xD7;,2023/11/18,11,内部RAM中可位寻址对象的定义,先定义变量的数据类型和存储类型 例如:int bdata ibase;char bdata array4;,再利用sbit进行声明 例如:sbit mybit0=ibase0;sbit mybit15=ibase15;sbit ary07=array07;,访问示例:ibase=-1;array2=a;,2023/11/18,12,算术运算符和算术表达式,10.2.4 C51的运算符和表达式,基本算术运算符 例如:+加法运算符;-减法(取负)运算符;*乘法运算符;/除法运算符;%取余数运算符。,示例:25.0/20.0
6、=1.25 25/20=125%20=5,取负运算优先级最高。,2023/11/18,13,自增、自减运算符(仅能用于变量)例如:+自增运算符;-自减运算符;,类型转换运算符 自动转换,顺序:bitcharintlongfloat 强制类型转换,如:(double)a,2023/11/18,14,关系运算符和关系表达式,关系运算符 大于;=大于等于;=等于;!=不等于。,关系表达式关系表达式的值为逻辑值:真(1)和假(0),2023/11/18,15,逻辑运算符和逻辑表达式,逻辑运算符&逻辑与;|逻辑或;!逻辑非。,逻辑表达式逻辑表达式的值为逻辑值:真(1)和假(0),例:5|0结果为1,2&
7、0结果为0,2023/11/18,16,位运算符,&按位与;|按位或;按位异或;按位取反;右移。,例:P1=P11表示对P1口的所有位左移1位,2023/11/18,17,赋值和复合赋值运算符,复合赋值运算符+=加法赋值;-=减法赋值;*=乘法赋值;/=除法赋值;%=取模赋值;,符号“=”称为赋值运算符,=右移位赋值;&=逻辑与赋值;|=逻辑或赋值;=逻辑异或赋值;=逻辑非赋值,例:a*=5相当于a=a*5;b&=0 x80相当于b=b&0 x80。,2023/11/18,18,10.3 C51流程控制语句,10.3.1 C51选择语句,条件语句,if(条件表达式)语句 例如:if(p1!=0
8、)c=20;,if(条件表达式)语句1 else 语句2 例如:if(p1!=0)c=20;else c=0;,2023/11/18,19,if(条件表达式1)语句1 else if(条件表达式2)语句2 else if(条件表达式3)语句3 else if(条件表达式n)语句n else 语句n+1,2023/11/18,20,开关语句,switch(表达式)case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式n:语句n;break;default:语句n+1;,2023/11/18,21,10.3.2 C51循环语句,while语句,
9、一般形式为:while(条件表达式)语句;,如果条件表达式的结果一开始就为假,则后面的语句一次也不能执行。,do-while语句,一般形式为:do语句 while(条件表达式);,任何条件下,循环体语句至少会被执行一次。,2023/11/18,22,for语句,一般形式为:for(初值表达式;条件表达式;更新表达式)语句,if语句与goto语句结合,当型循环 形式为:loop:if(表达式)语句 goto loop;,2023/11/18,23,直到型循环 形式为:loop:语句 if(表达式)goto loop;,continue是一种循环中断语句,它并不跳出循环体;break语句只能跳出它
10、所处的那一层循环;goto语句可以用于跳出多重循环(从内层到外层)。,注意:,2023/11/18,24,10.4 C51的指针类型,有一个变量a,利用&a表示变量a的地址。则语句 p=&a;把a的地址赋给了指针变量p,则“p指向了变量a”。,*P表示变量a的内容,指针变量的定义 char data*p/*定义指针变量*/p=30H/*为指针变量赋值,30H为片内RAM地址*/x=*p/*30H单元的内容送给变量x*/,2023/11/18,25,定义时未指定它所指向的对象的存储器类型,10.4.1 一般指针,一般指针占3个字节第一字节存放该指针的默认存储器类型编码(见表)第二字节存放该指针的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 80 C51 语言程序设计
链接地址:https://www.31ppt.com/p-6614829.html