单片机C程序设计基础
单片机C程序设计基础
4.1 C51程序开发概述 4.2 C51数据类型 4.3 C51运算符和表达式 4.4 C51构造数据类型简介 4.5 C51函数 4.6 预处理命令、库函数 4.7 汇编语言与C语言混合编程 4.8 模块化程序设计 4.9 51单片机C程序开发过程
4.1 C51程序开发概述在C语言编程中,对数据类型与变量的定义,必 须要与单片机的存储结构相关联,否则编译器不能 正确地映射定位。 C51编译器能自动完成变量的存储单元的分配, 编程者可以对常用的接口芯片、功能模块和算法编 制通用的驱动函数,可以方便地进行信号处理算法 和程序的移植,从而加快单片机开发速度。 用C语言编写单片机应用程序与编写标准的C语 言程序的不同之处就在于根据单片机存储结构及内 部资源定义相应的C语言中的数据类型和变量,其它 的语法规定、程序结构及程序设计方法都与标准的C 语言程序设计相同。
4.2
C51数据类型
4.2.1 C51的标识符与关键字 C51与任何高级语言一样,有规定的符号、词汇和语 法规则。C51的标识符的意义及用途与标准C相同。 关键字是C51已定义的具有固定名称和特定含义的特 殊标识符,又称保留字,源程序中用户自己命名的标 识符不能和关键字相同。 4.2.2 数据类型 C51常用的基本数据类型有无符号字符型、有符号字 符型、无符号整型、有符号整型、无符号长整型、有 符号长整型、浮点型、指针,这些类型和标准C相同。 需注意在C51编译器中int和short相同,float和double 相同 ,C51扩展的数据类型有bit、sbit、sfr、sfr16 。
1.char 字符类型 char类型的长度是一个字节,通常用于定义处 理字符数据的变量或常量。 分无符号字符类型unsigned char和有符号字 符类型signed char,默认值为signed char类 型。 2.int 整型 int整型长度为两个字节,用于存放一个双字节 数据。 分有符号int整型数signed int和无符号整型数 unsigned int,默认值为signed int类型。
3.long 长整型
long长整型长度为四个字节,用于存放一个四字 节数据。分有符号long长整型signed long和无符 号长整型unsigned long,默认值为signed long类 型。
4.float 浮点型
float浮点型在十进制中具有7位有效数字,是符合 IEEE-754标准的单精度浮点型数据,占用四个 字节。
5.指针型
指针型本身就是一个变量,在这个变量中存放的 是另一个数据的地址。这个指针变量要占据一定 的内存单元,对不同的处理器长度也不尽相同
6.bit 位变量 bit位变量是C51编译器的一种扩充数据类型,利用它 可定义一个位变量,但不能定义位指针,也不能定义 位数组。它的值是一个二进制位,不是0就是1。 它的声明与别的C数据类型
的声明相似,例如: static bit done_flag=0; //位变量位函数 位参数
bit testfunc(bit flag1, bit flag2 ) { ………. return(0); }
//位返回值
所有的bit变量都放在80C51内部存储区的可位 寻址区,而该区域只有16字节长,所以在某个 范围内只能声明最多128个位变量。 C51编译器对bit变量的声明及使用有如下限制: 1)禁止中断的函数(#pragma disable)和使用 一个明确的寄存器组(using n)声明的函数不 能返回一个位值。 2)一个位不能被声明为一个指针 例如: bit*ptr; //无效的 3)不能声明一个bit类型的数组,例如: bit ware[5]; //无效的
7.sfr 特殊功能寄存器 sfr也是一种扩充数据类型,占用一个内存单元, 值域为0~255。利用它可以访问51单片机内部 的所有特殊功能寄存器。 8.sfr16 16位特殊功能寄存器 sfr16占用两个内存单元,值域为0~65535。 sfr16和sfr一样用于操作特殊功能寄存器,所不 同的是它用于操作占两个字节的寄存器,如定 时器T0和T1。 9.sbit 可寻址位 sbit是C51中的一种扩充数据类型,利用它可以 访问芯片内部的RAM中的可寻址位或特殊功能 寄存器中的可寻址位。
当用sbit访问内部数据存储区的可位寻址区,则必须 要有用bdata存储类型声明的变量并且是全局的,即 必须有如下变量声明: int bdata ibase; //可位寻址的整型变量 char bdata array[4];//可位寻址的字符型数组 变量ibase和bary是可位寻址的,因此这些变量的每 个位是可以直接访问和修改的,故可以用sbit关键字 声明新的变量,来访问它们的各个位,例如: sbit Ary07=array[0]^7; //数组元素array[0]的第7位 上面的例子只是声明并不分配位空间。例子中“^”符 号后的表达式指定位的位置,此表达式必须是常数, 其范围由声明的基变量决定
4.2.3
数据的存储器类型
C51变量定义中的存储器类型部分指定了该变量的存储区域, 存储器类型可以由关键字直接声明指定。C51编译器支持的 存储器类型如表
表4-1 C51存储器类型
4.2.4
常量和变量
1.常量 常量是在程序运行过程中不能改变的量,常量 的数据类型只有整型、浮点型、字符型、字符 串型和位标量。常量的数据类型说明方式如下:
1)整型常量可以表示为十进制如123,0,-66等, 也可以表示为十六进制,以0x开头,如0x12,0xf4 等,长整型在数字后面加字母L,如100L、36L等。 2)浮点型常量可分为十进制和指数表示形式。十 进制由数字和小数点组成,如0.456,0.10等整数 和小数部分为0,可以省略但必须有小数点。指数 表示形式为:[±]数字[. 数字]E[±]数字,[ ]中的内 容为可选项,如123e4,82e-3等。
3)字符型常量由双引号内
的字符组成,如”abc”、”123” 等,当引号内没有字符时,为空字符串。在使用特殊字符 时,同样要使用转义字符如双引号。在C中字符串常量是作 为字符类型数组来处理的,在存储字符串时系统会在字符 串尾部加上\0(数字”0”,而非字母”o”)转义字符,作为 字符串的结束符。字符串常量”A”和字符常量’A’,是不同 的,前者在存储时多占一个字节的空间。 2. 变量 变量是可以在程序运行过程中不断变化的量,变量的定义 可以使用所有C51编译器支持的数据类型。格式如下: [存储种类] 数据类型 [存储器类型] 变量名表 在定义格式中除了数据类型和变量名表是必要的,其它都 是可选项。 存储种类有四种:自动(auto),外部(extern),静态 (static)和寄存器(register),缺省类型为自动(auto)。
4.2.5 51单片机硬件结构的C51定义
1.对特殊功能寄存器SFR的定义 51系列单片机内部RAM的80H~FFH区域有21个特殊 功能寄存器,为了对它们能够进行直接访问,C51编 译器利用扩展的关键字sfr和sfr16对这些特殊功能寄 存器进行定义。 8位特殊功能寄存器变量用关键字sfr说明,定义格式 为: sfr SFR名=绝对地址; 在新型51系列单片机中,两个8位特殊功能寄存器经 常组合为16位寄存器使用,当16位寄存器的高端地址 直接位于低端地址之后,就可以定义一个16位特殊功 能寄存器变量,定义格式为: sfr16 SFR名=sfr16低端地址;
2.特殊功能寄存器中特定位的定义 在C51中可以利用关键字sbit定义可独立寻址访问的位变 量,如定义80C51单片机SFR中的一些特定位。定义方法 有多种,分别为 : 1)用字节地址位表示例如:sbit CY=0xd0^7 2)用寄存器名.位定义 例如:sfr PSW=0xd0; sbit CY=PSW^7; 3)用直接位地址表示 例如:sbit OV=0xd2; sbit CY=0xd7; 4)使用头文件reg51.h,再直接用位名称 例如:#include<reg51.h> TR0=1; EA=1;TF0=0; 5)使用头文件及sbit定义符,常用于无位名称的可位寻址位 例如:#inclu …… 此处隐藏:3094字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高中教育]电子线路高频非线性部分2.1
- [高中教育]中班美术活动——我的小手
- [高中教育]常用三极管参数大全
- [高中教育]计算机常见故障及解决办法
- [高中教育]风机基础环水平度控制方法探讨
- [高中教育]机械安全工程(专升本)阶段性作业3
- [高中教育]2009年安徽省高考语文考试说明刍议
- [高中教育]unit5 let's eat公开课教案设
- [高中教育]计算机网络原理课后习题答案
- [高中教育]2016-2022年中国新能源市场研究与投资
- [高中教育]2015-2020年中国会议行业市场评估及投
- [高中教育]经销商大会峰会主持人串词开场白
- [高中教育]2014新版北师大数学三年级上册小熊购物
- [高中教育]七年级第一学期体育与健康全套教案
- [高中教育]第三章:国际金融市场
- [高中教育]六年级下册数学单元测试-2.比例 北师大
- [高中教育]2016年上海海事大学法学院624刑法之《
- [高中教育]中国碳化钙产业竞争现状及未来五年投资
- [高中教育]网络时代,我们怎么玩
- [高中教育]圆锥曲线——高中数学基础知识与典型例
- 高集医院世界艾滋病宣传日活动方案
- 苏教版六年级英语上册期末试卷含答案
- 全民枪战生化英雄模式幽灵怎么玩 生化
- 灿烂的宋元文化一导学案
- 第2章货币资金与应收款项
- 北师大版八年级下册数学第三章《分式》
- 浅析高分子材料成型加工技术
- 华南理工大学2013年度共青团先进集体及
- 教师资格科目二小学教案模板(共合集)
- 工程扩建可研报告
- 中华人民共和国海事局2014年度招录公务
- 提高农村小学生作文能力的教学尝试
- 徒手心肺复苏术操作步骤
- 毛概试题库7-15章
- 2014-2015学年度(上)初中班主任工作计
- 企业驾驶员安全生产责任书
- 第07章 不等式测试题-2016年高考文科数
- 医疗器械经营企业工作程序
- 考研英语必背36篇_彩版_精华
- 初中9月13-15假期作业 (1)




