C51单片机的C语言程序设计.ppt
《C51单片机的C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《C51单片机的C语言程序设计.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/1/161第第1010章章 80C5180C51的的C C语言程序设计语言程序设计单片机单片机C语言概述语言概述10.1C51的的数据类型数据类型与运算与运算10.2C51流程流程控制语句控制语句10.3C51的的指针类型指针类型10.4C51的的函数函数10.5C51编程编程实例实例10.62023/1/16210.1 单片机单片机C语言概述语言概述 10.1.1 C5110.1.1 C51程序开发过程程序开发过程 编译器能自动完成变量的存储单元的分配编译器能自动完成变量的存储单元的分配 对常用功能模块和算法编制相应的函数,方便移植对常用功能模块和算法编制相应的函数,方便移植 采用
2、采用C51C51的优点的优点 C C语言具有良好的可读性、可移植性和基本的硬件操作能力。语言具有良好的可读性、可移植性和基本的硬件操作能力。C51C51程序开发过程程序开发过程 编写源程序编写源程序 建立工程,加入源程序建立工程,加入源程序 编译生产目标程序编译生产目标程序 仿真调试、写存储器仿真调试、写存储器2023/1/1632023/1/16410.1.2 C5110.1.2 C51程序结构程序结构#include#include#include#include void void delaymsdelayms(unsigned)(unsigned);void main(void)voi
3、d main(void)unsigned char i unsigned char i;P1=0 x01P1=0 x01;dodo for(i=0for(i=0;i=7i=7;i+)i+)delaymsdelayms(5000)(5000);P1=P11P1=P11;if(P1=0 x0)P1=0 x01if(P1=0 x0)P1=0 x01;while(1)while(1);void void delaymsdelayms(unsigned x)(unsigned x)unsigned char j unsigned char j;while(x-)while(x-)for(j=0 for(
4、j=0;j123j123;j+)j+);2023/1/16510.2.1 C5110.2.1 C51的数据类型的数据类型10.2 C51的数据类型与运算的数据类型与运算 数据类型决定其数据类型决定其取值范围取值范围、占用、占用存储器的大小存储器的大小及可参与及可参与哪种运算。哪种运算。数据类型数据类型长度长度(位位)取值范围取值范围字符型字符型signed char8-128 127unsigned char80 255整整 型型signed int16-32768 32767unsigned int160 65535长整型长整型signed long32-21474883648 214748
5、83647unsigned long320 4294967295浮点型浮点型float321.75494E-38 3.402823E+38位位 型型bit10,1sbit10,1访问访问SFRsfr80 255sfr16160 655352023/1/166尽可能采用无符号格式尽可能采用无符号格式bitbit用用于于定定义义位位变变量量的的名名字字,编编译译器器会会对对其其分分配配地地址(址(RAMRAM的的20H20H 2FH 2FH 区域区域)sbitsbit用用于于定定义义位位变变量量的的名名字字和和地地址址,地地址址是是确确定定的的且不用编译器分配(且不用编译器分配(SFRSFR及及R
6、AMRAM的的20H20H2FH 2FH 区域区域)C51C51编译器在编译时会自动进行类型转换编译器在编译时会自动进行类型转换 几点说明:几点说明:2023/1/16710.2.2 C5110.2.2 C51数据的存储类型数据的存储类型C51C51的存储的存储器器类型类型存储器类型存储器类型长度(位)长度(位)对应单片机存储器对应单片机存储器bdata1片内片内RAM位寻址区,共位寻址区,共128位。(亦能字节访问)位。(亦能字节访问)data8直接寻址,共直接寻址,共128字节。字节。idata8间接寻址,共间接寻址,共256字节。字节。pdata8片外片外RAM分页间址,共分页间址,共2
7、56字节。(字节。(MOVX Ri)xdata16间接寻址,共间接寻址,共64k字节。(字节。(MOVX DPTR)code16ROM间接寻址,共间接寻址,共64k字节。(字节。(MOVC A,A+DPTR)2023/1/168经经常常使使用用的的变变量量应应该该置置于于片片内内RAMRAM中中,要要用用bdatabdata、datadata、idataidata来定义。来定义。不不经经常常使使用用的的变变量量或或规规模模较较大大的的变变量量应应该该置置于于片片外外RAMRAM中中,要用要用pdatapdata、xdataxdata来定义。来定义。默认存储器类型由编译控制命令的存储模式指令限制
8、。默认存储器类型由编译控制命令的存储模式指令限制。存储模式存储模式默认存储类型默认存储类型特特 点点SMALLdata 小模式。小模式。变量默认在片内变量默认在片内RAM。空间小,速度块。空间小,速度块。COMPACTpdata紧凑模式。变量默认在片外紧凑模式。变量默认在片外RAM的页(的页(256字节,页号由字节,页号由P2口决定)。口决定)。LARGExdata大模式。大模式。变量默认在片外变量默认在片外RAM的的64KB范围。空间大,速度慢。范围。空间大,速度慢。2023/1/16910.2.3 80C5110.2.3 80C51硬件结构的硬件结构的C51C51定义定义特殊功能寄存器的声
9、明特殊功能寄存器的声明 sfrsfr 特殊功能寄存器名特殊功能寄存器名 =地址常数;地址常数;格式:格式:例如:例如:sfr SCON=0 x98sfr SCON=0 x98;sfr P0=0 x80sfr P0=0 x80;2023/1/1610特殊功能寄存器中特殊功能寄存器中特定位特定位的声明的声明 sbitsbit 位变量名位变量名=特殊功能寄存器名特殊功能寄存器名 位的位置(位的位置(0 07 7)例如:例如:sfrsfr PSW PSW =0 xD00 xD0;sbitsbit OV OV =PSW2PSW2;sbitsbit 位变量名位变量名 =字节地址字节地址 位的位置(位的位置
10、(0 07 7)例如:例如:sbitsbit OV OV =0 xD020 xD02;sbitsbit CY CY =0 xD070 xD07;sbitsbit 位变量名位变量名 =位地址位地址 例如:例如:sbitsbit OV OV =0 xD20 xD2;sbitsbit CY CY =0 xD70 xD7;2023/1/1611内部内部RAMRAM中可位寻址对象的定义中可位寻址对象的定义 先先定义变量的数据类型和存储类型定义变量的数据类型和存储类型 例如:例如:intint bdatabdata ibaseibase;char char bdatabdata array4 array4
11、;再再利用利用sbitsbit进行声明进行声明 例如:例如:sbitsbit mybit0=ibase0 mybit0=ibase0;sbitsbit mybit15=ibase15 mybit15=ibase15;sbitsbit ary07=array07 ary07=array07;sbitsbit ary37=array37 ary37=array37;访问示例:访问示例:ibase=-1ibase=-1;array2=array2=a a;array2=array2=0 02023/1/1612算术运算符和算术表达式算术运算符和算术表达式 10.2.4 C5110.2.4 C51的运
12、算符和表达式的运算符和表达式 基本算术运算符基本算术运算符 例如:例如:+加法运算符;加法运算符;-减法(取负)运算符;减法(取负)运算符;*乘法运算符;乘法运算符;/除法运算符;除法运算符;%取余数运算符取余数运算符。示例:示例:25.0/20.025.0/20.0 =1.25 1.25 25/2025/20 =1 125%2025%20 =5 5 取负运算优先级最高。取负运算优先级最高。2023/1/1613自增、自减运算符(自增、自减运算符(仅能用于变量仅能用于变量)例如:例如:+自增运算符;自增运算符;-自减运算符;自减运算符;类型转换运算符类型转换运算符 自动转换,顺序:自动转换,顺
13、序:bitcharintlongfloatbitcharintlongfloat 强制类型转换,如:(强制类型转换,如:(doubledouble)a a 2023/1/1614关系运算符关系运算符和和关系表达式关系表达式 关系运算符关系运算符 小于;小于;=大于;大于;=大于等于;大于等于;=等于;等于;!=不等于。不等于。关系表达式关系表达式关系表达式的值为逻辑值:真(关系表达式的值为逻辑值:真(1 1)和假()和假(0 0)2023/1/1615逻辑运算符逻辑运算符和和逻辑表达式逻辑表达式 逻辑运算符逻辑运算符&逻辑与逻辑与|逻辑或逻辑或 !逻辑非逻辑非 逻辑表达式逻辑表达式逻辑表达式的
14、值为逻辑值:真(逻辑表达式的值为逻辑值:真(1 1)和假()和假(0 0)例:例:5|05|0结果为结果为1 1,2&02&0结果为结果为0 0。2023/1/1616位运算符位运算符&按位与按位与|按位或按位或 按位异或按位异或 按位取反按位取反 右移右移 例:例:P1=P11P1=P11表示对表示对P1P1口的所有位左移口的所有位左移1 1位位 2023/1/1617赋值和复合赋值运算符赋值和复合赋值运算符 复合赋值运算符复合赋值运算符 +=+=加法赋值;加法赋值;-=-=减法赋值;减法赋值;*=乘法赋值;乘法赋值;/=/=除法赋值;除法赋值;%=%=取模赋值;取模赋值;符号符号“=”称为
15、赋值运算称为赋值运算符符 =右移位赋值;右移位赋值;&=&=逻辑与赋值;逻辑与赋值;|=|=逻辑或赋值;逻辑或赋值;=逻辑异或赋值;逻辑异或赋值;=逻辑非赋值;逻辑非赋值;例:例:a*a*=5 5相当于相当于a a =a*5a*5;b&b&=0 x800 x80相当于相当于b b =b&0 x80b&0 x80。2023/1/161810.3 C51流程控制语句流程控制语句 10.3.1 C5110.3.1 C51选择语句选择语句 条件语句条件语句ifif(条件表达式)语句(条件表达式)语句 例如:例如:if if(p1p1!=0=0)c c =2020;ifif(条件表达式)语句(条件表达式
16、)语句1 1 else else 语句语句2 2 例如:例如:if if(p1p1!=0=0)c c =2020;else c else c =0 0;2023/1/1619ifif(条件表达式(条件表达式1 1)语句)语句1 1 else if else if(条件表达式(条件表达式2 2)语句)语句2 2 else if else if(条件表达式(条件表达式3 3)语句)语句3 3 else if else if(条件表达式(条件表达式n n)语句)语句n n else else 语句语句n+1 n+1 2023/1/1620开关语句开关语句switch switch(表达式)(表达式)
17、case case 常量表达式常量表达式1 1:语句:语句1 1;breakbreak;case case 常量表达式常量表达式2 2:语句:语句2 2;breakbreak;case case 常量表达式常量表达式n n:语句:语句n n;breakbreak;default default:语句:语句n+1n+1;2023/1/162110.3.2 C5110.3.2 C51循环语句循环语句 whilewhile语句语句 一般形式为:一般形式为:whilewhile(条件表达式)语句;(条件表达式)语句;如果条件表达式的结果一开始就为假,则后面的语句一如果条件表达式的结果一开始就为假,则后
18、面的语句一次也不能执行。次也不能执行。Do-whileDo-while语句语句 一般形式为:一般形式为:dodo语句语句 whilewhile(条件表达式);(条件表达式);任何条件下,循环体语句至少会被执行一次。任何条件下,循环体语句至少会被执行一次。2023/1/1622forfor语句语句一般形式为:一般形式为:forfor(初值表达式初值表达式;条件表达式条件表达式;更新表达式更新表达式)语句)语句ifif语句与语句与gotogoto语句结合语句结合 当型循环当型循环 形式为:形式为:looploop:ifif(表达式)(表达式)语句语句 gotogoto loop loop;2023
19、/1/1623直到型循环直到型循环 形式为:形式为:looploop:语句语句 ifif(表达式)(表达式)gotogoto loop loop;continuecontinue是一种循环中断语句,它并不跳出循环体;是一种循环中断语句,它并不跳出循环体;breakbreak语句只能跳出它所处的那一层循环;语句只能跳出它所处的那一层循环;gotogoto语句可以用于跳出多重循环(从内层到外层)。语句可以用于跳出多重循环(从内层到外层)。注意:注意:2023/1/162410.4 C51的指针类型的指针类型 有一个变量有一个变量a a,利用,利用&a&a表示变量表示变量a a的地址的地址 。则语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 单片机 语言程序设计
限制150内