版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4章章 C51程序设计程序设计1.C511.C51存储类型存储类型2.2.特殊功能寄存器的特殊功能寄存器的C51C51定义定义3.3.绝对地址单元的绝对地址单元的C51C51访问访问4.4.集成开发环境集成开发环境uVision2uVision2本章学习要求:本章学习要求:单片机原理及应用单片机原理及应用4.1 C51程序设计语言概述程序设计语言概述4.1 C51程序设计语言概述程序设计语言概述机器语言:机器语言:用二进制代码表示的指令,也是用二进制代码表示的指令,也是CPUCPU唯一能够接受的指令形式唯一能够接受的指令形式. .如如:MOV A:MOV A,R0R0;机器语言(机器码)为
2、:;机器语言(机器码)为:1110_1000b1110_1000b MOV R1 MOV R1,A A;机器码为:;机器码为:1111_1001b1111_1001b汇编语言:汇编语言: 汇编语言就是用助字符表示的指令,与机器语言指令一一对应。汇编语言就是用助字符表示的指令,与机器语言指令一一对应。如:两个寄存器相加汇编语言指令:如:两个寄存器相加汇编语言指令:ADD AADD A,R0R0C51语言:语言:语法同标准语法同标准C C语言。开发效率高,可读性强,是目前使用最为广泛的单语言。开发效率高,可读性强,是目前使用最为广泛的单片机开发语言。一条片机开发语言。一条C C语言通常需要由多条机
3、器语言组成。语言通常需要由多条机器语言组成。 机器语言机器语言(Machine Language) )有三类有三类 汇编语言汇编语言 ( (Assemble) ) 高级语言高级语言 ( (High Level Language) )4.1 C51程序设计语言概述程序设计语言概述1.1.降低学习难度,仅需要掌握存储器接口;降低学习难度,仅需要掌握存储器接口;2.2.打破不同单片机之间的界限;打破不同单片机之间的界限;3.3.程序可读性强、可移植性强、开发效率高。程序可读性强、可移植性强、开发效率高。1.单片机的程序存储器做得越来越大、越来越便宜。单片机的程序存储器做得越来越大、越来越便宜。2.2
4、.单片机的主频越来越高,现在单片机的主频越来越高,现在5151单片机很多都可以做到单片机很多都可以做到40M/80M/100M40M/80M/100M,而且还有很多是单周期的。,而且还有很多是单周期的。是否存在不好之处?是否存在不好之处?C51设计单片机的好处:设计单片机的好处:1.生成机器语言代码冗余,占用较多程序存储单元;生成机器语言代码冗余,占用较多程序存储单元;2.程序的执行效率不高,导致运行速度慢程序的执行效率不高,导致运行速度慢 。4.2 C51程序设计基础程序设计基础C51存储类型存储类型对应对应89C51单片机存储器空间单片机存储器空间说明说明data直接寻址片内数据存储器(直
5、接寻址片内数据存储器(128字节)字节)访问速度快访问速度快xdata片外数据存储器(片外数据存储器(64K字节)字节)对应对应MOVX DPTR访问访问code程序存储器(程序存储器(64K字节)字节)对应对应MOVC DPTR访问访问bdata可位寻址片内数据存储器(可位寻址片内数据存储器(16字节,字节,128位)位)允许位和字节混合访问允许位和字节混合访问idata间接寻址片内数据存储器(间接寻址片内数据存储器(256字节)字节)可访问片内全部可访问片内全部RAM空间空间pdata分页寻址片外数据存储器(分页寻址片外数据存储器(256字节)字节)对应对应MOVX R0访问访问4.2.1
6、 C51变量变量/常量存储类型常量存储类型C51存储类型定义举例:unsigned char data x,y,z; /*在内部在内部RAM区定义了区定义了3个无符号字节型变量个无符号字节型变量x,y,z*/unsigned int data i,j,k; /*在内部在内部RAM区定义了区定义了3个无符号整型变量个无符号整型变量i,j,k*/unsigned char code pfb10 = 0,1,4,9,16,25,36,49,64,81 /*在程序存储器里定义了在程序存储器里定义了10字节的常量数组字节的常量数组*/ 4.2 C51程序设计基础程序设计基础4.2 C51程序设计基础程序
7、设计基础4.2.2 特殊功能寄存器的特殊功能寄存器的C51定义定义特殊功能寄存器的定义方法:特殊功能寄存器的定义方法: sfr 特殊功能寄存器名特殊功能寄存器名 = 地址常数;地址常数; 例如:例如:sfr P0 = 0 x80; /*定义定义P0口地址为口地址为80H*/ 为了在为了在C51程序中能够直接访问位于内部数据存储器中程序中能够直接访问位于内部数据存储器中的的21字节字节SFR以及其中以及其中11字节可位选址的位,字节可位选址的位,C51语言提供语言提供了与标准了与标准C语言不兼容的定义方法,扩充了关键字语言不兼容的定义方法,扩充了关键字“sfr”和和“sbit”,利用这种扩充的关
8、键字可以在,利用这种扩充的关键字可以在C51程序中直接操作程序中直接操作21字节的特殊功能寄存器和字节的特殊功能寄存器和11字节可位寻址的位。字节可位寻址的位。 方法三方法三:sbit 位变量名位变量名 = 特殊功能寄存器地址特殊功能寄存器地址位位置;位位置; 例如:例如:sbit P10 = 0 x900;方法一方法一:sbit 位变量名位变量名 = 位地址常数;位地址常数; 例如:例如:sbit OV = 0 xD2;特殊功能寄存器中可位寻址位的定义有三种方法:特殊功能寄存器中可位寻址位的定义有三种方法:方法二方法二:sbit 位变量名位变量名 = 特殊功能寄存器名特殊功能寄存器名位位置;
9、位位置; /*必须先用必须先用sfr定义特殊功能寄存器名定义特殊功能寄存器名*/ 例如:例如:sfr PSW = 0 xD0; sbit CY = PSW7;4.2 C51程序设计基础程序设计基础说明:说明:1.1.我们并不需要动手使用我们并不需要动手使用sfrsfr和和sbitsbit定义每一个特殊功能寄存器定义每一个特殊功能寄存器和位,因为在和位,因为在C51C51编译器里提供了一个编译器里提供了一个“reg51.h”reg51.h”的头文件,的头文件,在该头文件里已经定义好所有特殊功能寄存器和可寻址位在该头文件里已经定义好所有特殊功能寄存器和可寻址位2.2.只要在程序开始处增加一条包含指
10、令只要在程序开始处增加一条包含指令“#include ” #include ” 4.2 C51程序设计基础程序设计基础4.2.3绝对地址单元的绝对地址单元的C51访问访问 4.2 C51程序设计基础程序设计基础unsigned char data rval; /定义变量定义变量rval,位于内部数据存储器,位于内部数据存储器rval=CBYTE0 x0002; /将程序存贮器的将程序存贮器的0002H地址单元的值赋给地址单元的值赋给rvalrval=DBYTE 0 x32; /将内部数据存储器的将内部数据存储器的32H地址单元的值赋给地址单元的值赋给rvalrval=XBYTE 0 x0002
11、; /将外部数据存储器的将外部数据存储器的0004H地址单元的值赋给地址单元的值赋给rval说明:说明:1.C511.C51编译器里头文件编译器里头文件“absacc.habsacc.h”定义有多个地址直针,包定义有多个地址直针,包括括CBYTECBYTE、DBYTEDBYTE、PBYTEPBYTE、XBYTEXBYTE、CWORDCWORD、DWORDDWORD、PWORDPWORD、XWORDXWORD,可以通过单元地址直接访问程序存储器、内部数据存,可以通过单元地址直接访问程序存储器、内部数据存储器、分页寻址外部数据存储器、外部数据存储器。储器、分页寻址外部数据存储器、外部数据存储器。2
12、.2.使用这些指针之前,必须要在程序中增加一条包含指令使用这些指针之前,必须要在程序中增加一条包含指令“includeabsacc.hinclude”。4.2 C51程序设计基础程序设计基础4.2.4 C51运算符与常用语句运算符与常用语句 4.2 C51程序设计基础程序设计基础表表4-2 4-2 算术运算符算术运算符序号序号算术运算符算术运算符含义含义1 1+ +加法加法2 2- -减法减法3 3* *乘法乘法4 4/ /除法(或求模)除法(或求模)5 5+自加自加6 6-自减自减7 7% %求余求余4.2 C51程序设计基础程序设计基础表表4-3 4-3 关系运算符关系运算符序号序号关系运
13、算符关系运算符含义含义1 1 大于大于2 2=大于等于大于等于3 3 小于小于4 4=小于等于小于等于5 5= = =等于等于6 6!=!=不等于不等于4.2 C51程序设计基础程序设计基础表表4-4 逻辑运算符逻辑运算符序号序号逻辑运算符逻辑运算符含义含义1&逻辑与逻辑与2|逻辑或逻辑或3!逻辑非逻辑非表表4-5 位运算符位运算符序号序号位运算符位运算符含义含义1&按位与按位与2|按位或按位或3按位异或按位异或4取反取反5右移右移4.2 C51程序设计基础程序设计基础表表4-6 常用语句常用语句序号序号语句语句含义含义1=赋值语句赋值语句2if条件语句条件语句3表达式表达式1
14、 ? 表达式表达式2 : 表达式表达式3条件运算符条件运算符4switch/case多分支语句多分支语句5while循环语句循环语句6do-while循环语句循环语句7for循环语句循环语句8函数函数模块化程序设计模块化程序设计4.2 C51程序设计基础程序设计基础表表4-6 常用语句常用语句序号序号语句语句含义含义1=赋值语句赋值语句2if条件语句条件语句3表达式表达式1 ? 表达式表达式2 : 表达式表达式3条件运算符条件运算符4switch/case多分支语句多分支语句5while循环语句循环语句6do-while循环语句循环语句7for循环语句循环语句8函数函数模块化程序设计模块化程序
15、设计4.3 C51程序举例程序举例例例1:设变量放在片内:设变量放在片内RAM 20H单元,其取值范围为单元,其取值范围为0-5,要,要求编制一段程序,查出变量的平方值,并放入片内求编制一段程序,查出变量的平方值,并放入片内RAM 21H单单元。元。分析:该例需要掌握如何访问一个指定地址的存储单元。分析:该例需要掌握如何访问一个指定地址的存储单元。/ #include #include #define uchar unsigned charvoid main(void)uchar number;uchar code table6=0,1,4,9,16,25;number = DBYTE0 x2
16、0;switch(number) case 0 : DBYTE0 x21=table0;continue; case 1 : DBYTE0 x21=table1;continue; case 2 : DBYTE0 x21=table2;continue; case 3 : DBYTE0 x21=table3;continue; case 4 : DBYTE0 x21=table4;continue; case 5 : DBYTE0 x21=table5;continue; default : break; while(1); 4.3 C51程序举例程序举例10049100200100 xxxx
17、xxy当当当#include #define uchar unsigned charvoid main(void)uchar data x,y;x = DBYTE0 x30;if(x=100) y=0 x20;else if(x100) y=x;else y=x-49DBYTE0 x30 = y;while(1);例例2:设变量:设变量x以无符号单字节数形式存放在内部以无符号单字节数形式存放在内部RAM 30H单单元,函数元,函数y与与x有如下关系,试编制程序,根据有如下关系,试编制程序,根据x的大小求出的大小求出y并并放回原单元。放回原单元。4.3 C51程序举例程序举例#include #
18、define uchar unsigned charvoid main(void)uchar data x,y;x=DBYTE0 x50;y=DBYTE0 x51;if(xy) DBYTE0 x60 = x;else DBYTE0 x60=y;while(1); 例例3:试编写程序,将片内:试编写程序,将片内RAM 50H和和51H单元两个无符号单单元两个无符号单字节数中较小的数存放到字节数中较小的数存放到60H单元。单元。4.3 C51程序举例程序举例例例4:把外部数据:把外部数据RAM中从地址中从地址2000H单元开始的单元开始的100个有符号个有符号数逐一取出,若为正数则放回原单元,若为
19、负数则求补后放回。数逐一取出,若为正数则放回原单元,若为负数则求补后放回。 #include #define uchar unsigned char#define uint unsigned intvoid main(void) uchar data numb = 0; uchar data i; uint data xadd = 0 x2000; for (i=0; i100; i+) if(XBYTExadd0) numb=(XBYTExadd)+1; XBYTExadd = numb; xadd+; 4.3 C51程序举例程序举例例例5:假定有两个无符号二进制数分别存放于内部:假定有两个无符号二进制数分别存放于内部RAM 40H和和41H单元,编写程序求这两个数的和,并将和存放在单元,编写程序求这两个数的和,并将和存放在42H单元。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 固定资产管理台账与盘点报表
- 电工(高级)资格证考试通关考试题库含答案详解(能力提升)
- 教育培训机构公益承诺函7篇
- 品牌形象管理与推广操作工具集
- 2021年基金从业资格考试《证券投资基金基础知识》试题及答案
- 2025年璧山县留置保安员笔试真题附答案解析
- 2025年电工(高级)资格证考试真题汇编含答案详解(达标题)
- 设备模板租赁合同(3篇)
- 电工(高级)资格证考试模拟题库讲解带答案详解(达标题)
- 起诉合同资料模板(3篇)
- 2026年班组建设年度工作计划
- 船舶协议装运合同
- 新年活动策划团建方案(3篇)
- 员工代收工资协议书
- 协会捐赠协议书范本
- 高中数学建模竞赛试题及答案
- 奥诺康多烯酸软胶囊课件
- (正式版)DB61∕T 5053-2023 《湿陷性黄土地区建筑边坡治理技术规程》
- 江苏省淮安市2024-2025学年七年级上学期期末语文试题(含答案解析)
- 《环境法(第七版)》课件全套 周珂
- 10万头肉牛屠宰及精深加工生产线建设项目可行性研究报告
评论
0/150
提交评论