- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机应用技术 (C语言版)第4章 C51程序设计入门 第4章 单片机C语言及程序设计 4.1 C51的基本数据类型 4.2 C51变量的存储区域 4.3 C51的运算符 4.4 数组 本章内容完全是结合单片机来讲解,也就是补充C语言在单片机方面的概念、数据定义和函数定义等。 通过本章学习,使读者能够比较顺利地编写C51程序。 1、 C51概述 “C51”概念:把“单片机C语言”称为“C51”,也称为“Keil C”。 用C51编写单片机程序,与用ANSI C编写程序的不同之处是,需要根据单片机存储器结构及内部资源,定义相应的数据类型和变量。 其它的语法规定、程序结构及程序设计方法,都与ANSI C相同。 2、 C语言编程的优势 在编程方面,使用C51较汇编语言有诸多优势: 1)编程容易 2)容易实现复杂的数值计算 3)容易阅读与交流 4)容易调试与维护程序 5)容易实现模块化开发 6)程序可移植性好 用汇编语言编写程序时,必须考虑其存储器的结构,尤其要考虑其片内数据存储器、特殊功能寄存器是否正确合理的使用,以及按照实际地址端口数据的处理。 3、 C51扩展的关键字 由于单片机在结构及编程上的特殊要求,C51有自己的特殊关键字,称之为C51扩展的关键字,下面给出常用的C51扩展的关键字。 _at_ bdata bit code data idata interrupt pdata reentrant sbit sfr sfr16 xdata 这些关键字在后面会陆续接触到,此处先不给出它们的含义。 4.1 C51基本数据类型 1、数据类型:数据的不同格式。 2、数据类型分类:基本型(表4.1)、构造类型(数组、结构体、共同体、枚举)、指针类型和空类型 在计算机中不能随意给一个变量赋任意的值,因为变量在单片机的内存中要占空间的,变量不同,所占的空间不同。 为了合理利用单片机的内存空间,在编程时要设定合适的数据类型。 补充: C51特殊功能寄存器与位变量的定义(P82) 主要内容 1、 8位特殊功能寄存器的定义 2、 16位特殊功能寄存器的定义 3、 sbit型位变量的定义 4、 bit型位变量的定义 1、 8位特殊功能寄存器的定义 定义的一般格式为: sfr 特殊功能寄存器名 = 地址常数 地址常数范围:0x80~0xff。 特殊功能寄存器定义例子(见reg51.h、reg52.h等文件): sfr P0=0x80; //定义P0寄存器 sfr P1=0x90; //定义P1口寄存器 sfr PSW=0xd0; //定义PSW sfr IE=0xa8; //定义IE 2、 16位特殊功能寄存器的定义 定义的一般格式为: sfr16 特殊功能寄存器名=地址常数 地址常数范围:0x80~0xff。 例如(见reg51.h、reg52.h等文件): sfr16 DPTR=0x82; sfr16 T2=0xcc; //含TL2和TH2 几点说明: 1)定义特殊功能寄存器中的地址必须在0x80~0xff范围内。 2)定义特殊功能寄存器,必须放在函数外面作为全局变量。 3)用sfr或sfr16每次只能定义一个特殊功能寄存器。 4)用sfr或sfr16定义的是绝对定位的变量(因为名字是与确定地址对应的),具有特定的意义,在应用时不能像一般变量那样随便使用。 3、 sbit型位变量的定义 特殊功能寄存器的位声明 一般格式为: sbit 位变量名 = 位地址表达式 这里的位地址表达式有三种形式: 直接位地址 特殊功能寄存器名带位号 字节地址带位号 a、用直接位地址定义位变量 定义特殊功能寄存器的位。例如: sbit P0_0=0x80; sbit P1_1=0x91; sbit RS0=0xd3; //定义PSW的第3位 sbit ET0=0xa9; //定义IE的第1位 b、特殊功能寄存器名带位号定义 定义格式为: sbit 位变量名 = 特殊功能寄存器名^ 位号常数 这里的位号常数为0~7。例如: sbit P0_3=P0^3; sbit P1_4=P1^4; sbit OV=PSW^2; //定义PSW的第2位 sbit ES=IE^4; //定义IE的第4位 c、寄存器地址带位号定义位变量 定义格式为: sbit
文档评论(0)