单片机C51教学课件共50页.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机C51教学课件共50页.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 C51 教学 课件 50
- 资源描述:
-
1、第1章 C51数据类型与运算一、C51数据类型C51数据类型与标准C数据类型的最大不同之处:位型。位型(bit)字符型(char)整型(int)长整型(long)浮点型(float)双精度浮点型(double)数组类型(array)结构体类型(struct)共用体(union)枚举(enum)基本类型构造类型指针类型空类型数据类型第1章 C51数据类型与运算C51数据类型的取值范围:数据类型长度(bit)长度(byte)值域范围bit10,1unsigned char810255signed char81128127unsigned int162065535signed int162 3276
2、832767unsigned float32404294967295signed float324 21474836482147483647float3241.176E-383.40E+38(6位数字)double6481.176E-383.40E+38(10位数字)一般指针243存储空间065535第1章 C51数据类型与运算二、C51数据存储类型 1. C51存储类型与MCS-51单片机存储空间的对应关系 存储类型存储类型与存储空间的对应关系与存储空间的对应关系data直接寻址片内数据存储区,访问速度快(128字节)bdata可位寻址片内数据存储区,允许位与字节混合访问(16字节)idat
3、a间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pdata分页寻址片外数据存储区(256字节),由MOVX Ri访问xdata寻址片外数据存储区(64K字节),有MOVX DPTR访问code寻址代码存储区(64K字节),有MOVC DPTR访问第1章 C51数据类型与运算2. C51存储类型及其大小和值域 存储类型长度(bit)长度(byte)值域范围data810255idata810255pdata810255xdata162065535code162065535第1章 C51数据类型与运算3.51单片机的存储模式 存储模式说 明SMALL 参数及局部变量放入可直接寻
4、址的片内存储器(最大128字节,默认存储类型是data),因此访问十分方便。另外所有对象,包括栈,都必须嵌入片内RAM。栈长很关键,因为实际栈长依赖于不同函数的嵌套层数COMPACT 参数及局部变量放入分页片外存储区(最大256字节,默认的存储类型是pdata),通过寄存器R0和R1间接寻址,栈空间位于内部数据存储区中LARGE 参数及局部变量直接放入片外数据存储区(最大64KB,默认存储类型为xdata),使用数据指针DPTR来进行寻址。用此数据指针访问的效率较低,尤其是对二个或多个字节的变量,这种数据类型的访问机制直接影响代码的长度,另一不方便之处在于这种数据指针不能对称操作第1章 C51
5、数据类型与运算三、C51定义SFR定义方法:两个关键字:sfr和sbit1.定义特殊功能寄存器用sfr例如:sfr PSW=0 xD0;/*定义程序状态字PSW的地址为D0H*/sfr TMOD=0 x89;/*定义定时器/计数器方式控制寄存器TMOD的地址为89H*/sfr P1=0 x90;/*定义P1口的地址为90H*/2.定义可位寻址的特殊功能寄存器的位用sbit例如:sbit CY=0 xD7;/*定义进位标志CY的地址为D7H*/sbit AC=0 xD06;/*定义辅助进位标志AC的地址为D6H*/sbit RS0=0 xD03;/*定义RS0的地址为D3H*/ 第1章 C51数
6、据类型与运算标准SFR在reg51.h、reg52.h 等头文件中已经被定义,只要用文件包含做出申明即可使用。例如:#include ”reg51.h”sbit P10=P10;sbit P12=P12;main()P10=1;P12=0;PSW=0 x08;第1章 C51数据类型与运算四、C51定义并行口 单片机内部并行口用sfr定义,外部并行口的定义如何定义?用指针定义,指针的定义在absacc.h头文件中例如:#include “absacc.h”#define PA XBYTE0 xffecmain()PA=0 x3A; /*将数据3AH写入地址为0 xffec的存储单元或I/O端口*
7、/XBYTE是一个指针,它将PA定义为一个外部并行口,其地址是FFECH。第1章 C51数据类型与运算五、C51定义位变量使用关键字bit例如:bit lock;/*将lock定义为位变量*/bit dirention;/*将direction定义为位变量*/ 注意:不能定义位变量指针;也不能定义位变量数组。第1章 C51数据类型与运算六、C51运算符、表达式及其规则 1.算术运算符 加法运算符 减法运算符乘法运算符除法运算符 模运算或取余运算符为自增运算符为自减运算符。 关系运算符 小于 小于等于 大于 大于等于 等于! 不等于doublefloatintcharlongunsigned高低
8、这四个运算符的优先级相同,处于高优先级这两个运算符的优先级相同,处于低优先级 逻辑运算符 & 逻辑与| 逻辑或! 逻辑非 位运算符 & 按位与相当于ANL指令| 按位或 相当于ORL指令按位异或相当于XRL指令 按位取反相当于CPL指令 右移相当于RR指令 赋值运算符 赋值运算符就是赋值符号“=” 复合赋值运算符 十种:, , , , ,。按优先级顺序结合运算。例如:a+=b 等价于a=(a+b)x*=a+b 等价于x=(x*(a+b)a&=b 等价于a=(a&b)a=4 等价于a=(a=1) c=10; else if (a=2) c=20; else if (a=3) c=30; else
9、 if (a=4) c=40; else c=0; 第2章 C51流程控制语句 switch/case语句语句switch/case语句的一般形式如下:语句的一般形式如下:switch(表达式)(表达式) case 常量表达式常量表达式1:语句:语句1; break;case 常量表达式常量表达式2:语句:语句2; break;case 常量表达式常量表达式n:语句:语句n; break;default :语句:语句n+1;第2章 C51流程控制语句流程控制语句例例7.1:单片机:单片机P1口的口的P1.0和和P1.1各接一个开关各接一个开关K1、K2,P1.4、P1.5、P1.6和和P1.7
10、各接一只发光二极管。有各接一只发光二极管。有K1和和K2的不同状态来的不同状态来确定哪个发光二极管被点亮。确定哪个发光二极管被点亮。K2K1亮的二极管亮的二极管00L101L210L311L4第2章 C51流程控制语句流程控制语句方法一:用方法一:用if语句实现语句实现#include “reg51.h”void main()char a;a=P1;a=a&0 x03;/*屏蔽高屏蔽高6位位*/if (a=0) P1=0 x83; else if (a=1) P1=0 x43; else if (a=2) P1=0 x23; else P1=0 x13;第2章 C51流程控制语句方法二:用sw
11、itch/case语句实现#include “reg51.h”void main()char a;a=P1;a=a&0 x03;/*屏蔽高6位*/switch (a) case0:P1=0 x83;break; case1:P1=0 x43;break; case2:P1=0 x23;break;case3:P1=0 x13; 第2章 C51流程控制语句二、循环语句 if语句和goto语句goto语句只能构成简单循环,与if语句一起可以实现当型和直到型循环。 构成当型循环loop:if(表达式)语句goto loop; 构成直到型循环loop:语句 if(表达式)goto loop; 第2章
12、C51流程控制语句 while语句while语句的一般格式:while(表达式)语句 do-while语句do-while语句一般格式: do 语句 while (表达式); for语句for语句的一般形式: for (表达式1;表达式2;表达式3)语句先计算表达式的值,若其值为非0,则执行内嵌语句(循环),若其值为0,则退出while循环。先执行内嵌的语句, 若表达式的值为非0时,则循环;当表达式的值为0时,则结束循环,执行do-while语句下面的语句。 第2章 C51流程控制语句举例:例7.1的程序只能执行一遍,先用循环程序使其无穷循环下去。 用goto语句实现#include “reg
13、51.h”void main()char a;loop:a=P1;a=a&0 x03;/*屏蔽高6位*/switch (a)case0:P1=0 x83;break;case1:P1=0 x43;break;case2:P1=0 x23;break;case3:P1=0 x13;goto loop;第2章 C51流程控制语句 用while语句实现#include “reg51.h”void main()char a;while (1) a=P1; a=a&0 x03;/*屏蔽高6位*/ switch (a) case0:P1=0 x83;break; case1:P1=0 x43;break;
14、 case2:P1=0 x23;break; case3:P1=0 x13; While中的条件恒为1,表示死循环。第2章 C51流程控制语句 用do-while语句实现#include “reg51.h”void main() char a; do a=P1; a=a&0 x03;/*屏蔽高6位*/ switch (a) case0:P1=0 x83;break;case1:P1=0 x43;break;case2:P1=0 x23;break;case3:P1=0 x13; while (1);While中的条件恒为1,表示死循环。第2章 C51流程控制语句 用for语句实现#includ
展开阅读全文