第4章89C51单片机的C51程序设计说明书.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 C51程序设计 1.C51存储类型 2.特殊功能寄存器的C51定义 3.绝对地址单元的C51访问 4.集成开发环境uVision2 本章学习内容: 单片机原理及应用 4.1 C51程序设计语言概述 4.1 C51程序设计语言概述 机器语言: 用二进制代码表示的指令,也是CPU唯一能够接受的指令形式. 如:MOV A,R0;机器语言(机器码)为:1110_1000b MOV R1,A;机器码为:1111_1001b 汇编语言: 汇编语言就是用助记符表示的指令,与机器语言指令一一对应。 如:两个寄存器相加汇编语言指令:ADD A,R0 C51语言: 语法同标准C语言。开发效率高,可读性强,是目前使用最为广泛的单片机开发语言。一条C语言通常需要由多条机器语言组成。 机器语言(Machine Language) 有三类 汇编语言 (Assemble) 高级语言 (High Level Language) 4.1 C51程序设计语言概述 1.降低学习难度,仅需要掌握存储器接口; 2.打破不同单片机之间的界限; 3.程序可读性强、可移植性强、开发效率高。 1.单片机的程序存储器做得越来越大、越来越便宜。 2.单片机的主频越来越高,现在51单片机很多都可以做到40M/80M/100M,而且还有很多是单周期的。 是否存在不好之处? C51设计单片机的好处: 1.生成机器语言代码冗余,占用较多程序存储单元; 2.程序的执行效率不高,导致运行速度慢 。 4.2 C51程序设计基础 C51存储类型 对应89C51单片机存储器空间 说明 data 直接寻址片内数据存储器(128字节) 访问速度快 xdata 片外数据存储器(64K字节) 对应MOVX @DPTR访问 code 程序存储器(64K字节) 对应MOVC @DPTR访问 bdata 可位寻址片内数据存储器(16字节,128位) 允许位和字节混合访问 idata 间接寻址片内数据存储器(256字节) 可访问片内全部RAM空间 pdata 分页寻址片外数据存储器(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 pfb[10] = {0,1,4,9,16,25,36,49,64,81} /*在程序存储器里定义了10字节的常量数组*/ 4.2 C51程序设计基础 4.2 C51程序设计基础 4.2.2 特殊功能寄存器的C51定义 特殊功能寄存器的定义方法: sfr 特殊功能寄存器名 = 地址常数; 例如:sfr P0 = 0x80; /*定义P0口地址为80H*/ 为了在C51程序中能够直接访问位于内部数据存储器中的21字节SFR以及其中11字节可位选址的位,C51语言提供了与标准C语言不兼容的定义方法,扩充了关键字“sfr”和“sbit”,利用这种扩充的关键字可以在C51程序中直接操作21字节的特殊功能寄存器和11字节可位寻址的位。 方法三:sbit 位变量名 = 特殊功能寄存器地址^位位置; 例如:sbit P10 = 0x90^0; 方法一:sbit 位变量名 = 位地址常数; 例如:sbit OV = 0xD2; 特殊功能寄存器中可位寻址位的定义有三种方法: 方法二:sbit 位变量名 = 特殊功能寄存器名^位位置; /*必须先用sfr定义特殊功能寄存器名*/ 例如:sfr PSW = 0xD0; sbit CY = PSW^7; 4.2 C51程序设计基础 说明: 1.我们并不需要动手使用sfr和sbit定义每一个特殊功能寄存器和位,因为在C51编译器里提供了一个“reg51.h”的头文件,在该头文件里已经定义好所有特殊功能寄存器和可寻址位 2.只要在程序开始处增加一条包含指令“#include reg51.h” 4.2 C51程序设计基础 4.2.3绝对地址单元的C51访问 4.2 C51程序设计基础 unsigned char data rval; //定义变量rval,位于内部数据存储器 rval=CBYTE[0

文档评论(0)

zxiangd + 关注
实名认证
内容提供者

本人从事教育还有多年,在这和大家互相交流学习

1亿VIP精品文档

相关文档