教学课件PPT 89C51单片机的C51程序设计_第1页
教学课件PPT 89C51单片机的C51程序设计_第2页
教学课件PPT 89C51单片机的C51程序设计_第3页
教学课件PPT 89C51单片机的C51程序设计_第4页
教学课件PPT 89C51单片机的C51程序设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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,r0r0 c51语言:语言: 语法同标准语法同标准c c语言。开发效率高,可读性强,是目前使用最为广泛的单语言。开发效率高,可读性强,是目前使用最为广泛的单 片机开发语言。一条片机开发语言

3、。一条c c语言通常需要由多条机器语言组成。语言通常需要由多条机器语言组成。 机器语言机器语言(machine language) ) 有三类有三类 汇编语言汇编语言 ( (assemble) ) 高级语言高级语言 ( (high level language) ) 4.1 c51程序设计语言概述程序设计语言概述 1.1.降低学习难度,仅需要掌握存储器接口;降低学习难度,仅需要掌握存储器接口; 2.2.打破不同单片机之间的界限;打破不同单片机之间的界限; 3.3.程序可读性强、可移植性强、开发效率高。程序可读性强、可移植性强、开发效率高。 1.单片机的程序存储器做得越来越大、越来越便宜。单片机

4、的程序存储器做得越来越大、越来越便宜。 2.2.单片机的主频越来越高,现在单片机的主频越来越高,现在5151单片机很多都可以做到单片机很多都可以做到 40m/80m/100m40m/80m/100m,而且还有很多是单周期的。,而且还有很多是单周期的。 是否存在不好之处?是否存在不好之处? c51设计单片机的好处:设计单片机的好处: 1.生成机器语言代码冗余,占用较多程序存储单元;生成机器语言代码冗余,占用较多程序存储单元; 2.程序的执行效率不高,导致运行速度慢程序的执行效率不高,导致运行速度慢 。 4.2 c51程序设计基础程序设计基础 c51存储类型存储类型对应对应89c51单片机存储器空

5、间单片机存储器空间说明说明 data直接寻址片内数据存储器(直接寻址片内数据存储器(128字节)字节)访问速度快访问速度快 xdata片外数据存储器(片外数据存储器(64k字节)字节)对应对应movx dptr访问访问 code程序存储器(程序存储器(64k字节)字节)对应对应movc dptr访问访问 bdata可位寻址片内数据存储器(可位寻址片内数据存储器(16字节,字节,128位)位)允许位和字节混合访问允许位和字节混合访问 idata间接寻址片内数据存储器(间接寻址片内数据存储器(256字节)字节)可访问片内全部可访问片内全部ram空间空间 pdata分页寻址片外数据存储器(分页寻址片

6、外数据存储器(256字节)字节)对应对应movx r0访问访问 4.2.1 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字节的常量数组字节的

7、常量数组*/ 4.2 c51程序设计基础程序设计基础 4.2 c51程序设计基础程序设计基础 4.2.2 特殊功能寄存器的特殊功能寄存器的c51定义定义 特殊功能寄存器的定义方法:特殊功能寄存器的定义方法: sfr 特殊功能寄存器名特殊功能寄存器名 = 地址常数;地址常数; 例如:例如:sfr p0 = 0 x80; /*定义定义p0口地址为口地址为80h*/ 为了在为了在c51程序中能够直接访问位于内部数据存储器中程序中能够直接访问位于内部数据存储器中 的的21字节字节sfr以及其中以及其中11字节可位选址的位,字节可位选址的位,c51语言提供语言提供 了与标准了与标准c语言不兼容的定义方法

8、,扩充了关键字语言不兼容的定义方法,扩充了关键字“sfr”和和 “sbit”,利用这种扩充的关键字可以在,利用这种扩充的关键字可以在c51程序中直接操作程序中直接操作 21字节的特殊功能寄存器和字节的特殊功能寄存器和11字节可位寻址的位。字节可位寻址的位。 方法三方法三:sbit 位变量名位变量名 = 特殊功能寄存器地址特殊功能寄存器地址位位置;位位置; 例如:例如:sbit p10 = 0 x900; 方法一方法一:sbit 位变量名位变量名 = 位地址常数;位地址常数; 例如:例如:sbit ov = 0 xd2; 特殊功能寄存器中可位寻址位的定义有三种方法:特殊功能寄存器中可位寻址位的定

9、义有三种方法: 方法二方法二:sbit 位变量名位变量名 = 特殊功能寄存器名特殊功能寄存器名位位置;位位置; /*必须先用必须先用sfr定义特殊功能寄存器名定义特殊功能寄存器名*/ 例如:例如:sfr psw = 0 xd0; sbit cy = psw7; 4.2 c51程序设计基础程序设计基础 说明:说明: 1.1.我们并不需要动手使用我们并不需要动手使用sfrsfr和和sbitsbit定义每一个特殊功能寄存器定义每一个特殊功能寄存器 和位,因为在和位,因为在c51c51编译器里提供了一个编译器里提供了一个“reg51.h”reg51.h”的头文件,的头文件, 在该头文件里已经定义好所有

10、特殊功能寄存器和可寻址位在该头文件里已经定义好所有特殊功能寄存器和可寻址位 2.2.只要在程序开始处增加一条包含指令只要在程序开始处增加一条包含指令“#include ” #include ” 4.2 c51程序设计基础程序设计基础 4.2.3绝对地址单元的绝对地址单元的c51访问访问 4.2 c51程序设计基础程序设计基础 unsigned char data rval; /定义变量定义变量rval,位于内部数据存储器,位于内部数据存储器 rval=cbyte0 x0002; /将程序存贮器的将程序存贮器的0002h地址单元的值赋给地址单元的值赋给rval rval=dbyte 0 x32;

11、 /将内部数据存储器的将内部数据存储器的32h地址单元的值赋给地址单元的值赋给rval rval=xbyte 0 x0002; /将外部数据存储器的将外部数据存储器的0004h地址单元的值赋给地址单元的值赋给rval 说明:说明: 1.c511.c51编译器里头文件编译器里头文件“absacc.habsacc.h”定义有多个地址直针,包定义有多个地址直针,包 括括cbytecbyte、dbytedbyte、pbytepbyte、xbytexbyte、cwordcword、dworddword、pwordpword、 xwordxword,可以通过单元地址直接访问程序存储器、内部数据存,可以通过

12、单元地址直接访问程序存储器、内部数据存 储器、分页寻址外部数据存储器、外部数据存储器。储器、分页寻址外部数据存储器、外部数据存储器。 2.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/ /除法(或求模)除

13、法(或求模) 5 5+自加自加 6 6-自减自减 7 7% %求余求余 4.2 c51程序设计基础程序设计基础 表表4-3 4-3 关系运算符关系运算符 序号序号 关系运算符关系运算符含义含义 1 1 大于大于 2 2=大于等于大于等于 3 3 小于小于 4 4=小于等于小于等于 5 5= = =等于等于 6 6!=!=不等于不等于 4.2 c51程序设计基础程序设计基础 表表4-4 逻辑运算符逻辑运算符 序号序号 逻辑运算符逻辑运算符含义含义 1 uchar code table6=0,1,4,9,16,25; number = dbyte0 x20; switch(number) case

14、 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程序举例程序举例 10049 100200 100 xx xx xx y 当 当 当 #incl

15、ude #define uchar unsigned char void main(void) uchar data x,y; x = dbyte0 x30; if(x=100) y=0 x20; else if(x100) y=x; else y=x-49 dbyte0 x30 = y; while(1); 例例2:设变量:设变量x以无符号单字节数形式存放在内部以无符号单字节数形式存放在内部ram 30h单单 元,函数元,函数y与与x有如下关系,试编制程序,根据有如下关系,试编制程序,根据x的大小求出的大小求出y并并 放回原单元。放回原单元。 4.3 c51程序举例程序举例 #include

16、 #define uchar unsigned char void 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个有符号个有符号 数逐一取出,

17、若为正数则放回原单元,若为负数则求补后放回。数逐一取出,若为正数则放回原单元,若为负数则求补后放回。 #include #define uchar unsigned char #define uint unsigned char void 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; xddr+; 4.3 c51程序举例程序举例 例例5:假定有两个无符号

18、二进制数分别存放于内部:假定有两个无符号二进制数分别存放于内部ram 40h和和 41h单元,编写程序求这两个数的和,并将和存放在单元,编写程序求这两个数的和,并将和存放在42h单元。单元。 #include #define uchar unsigned char uchar sum(uchar x1, uchar x2); void main(void) uchar number1; uchar number2; uchar val; number1 = dbyte0 x40; number2 = dbyte0 x41; val = sum(number1,number2); dbyte0 x42 = val; whilie(1); uchar sum(uchar x1, uchar x2) uchar x; x= x1+x2; return x; 4.3 c51程序举例程序举例 例例6:假定:假定p1口连接有口连接有8只供阴极发光二极管,试编写程序,以只供阴极发光二极管,试编写程序,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论