第10章 单片机C语言程序设计
更新时间:2023-05-24 02:58:01 阅读量: 实用文档 文档下载
- 第10章推荐度:
- 相关推荐
第10章 单片机C语言程序设计单片机C语言概述C51的数据类型与运算 C51数据的存储类型和存储模式 C51程序基本结构与相关语句 C51的函数 单片机资源的C51编程实例
51单片机系统开发常用工具软件keil C51
本章知识点 单片机C语言概述
C51的数据类型与运算 C51数据的存储类型和存储模式 C51程序基本结构与相关语句 C51的函数 单片机资源的C51编程实例 51单片机系统开发常用工具软件keil C51
10.1 单片机C语言概述
随着单片机硬件性能的不断提高和应 用技术的不断发展,开发者越来越注重 目标系统的开发成效,而开发成效在很 大程度上取决于程序本身的编写效率。 为了适应这种要求,出现了单片机高级 语言—C语言。
10.1.1 C语言的特点及程序结构单片机的C语言编译器:德国的KEIL C51开发平台、加拿 大DAVEDUNFIELD的MICRO-C51、美国Franklin软件公 司的Franklin C51等。目前最流行的是Keil C51编译器。 一.C语言的特点 1.语言简洁、紧凑,使用方便、灵活。 2.运算符丰富。 3.数据结构丰富。具有现代化语言的各种数据结构。 4.可进行结构化程序设计。 5.可以直接对计算机硬件进行操作。 6.生成的目标代码质量高,程序执行效率高。 7.可移植性好。
二.C语言的程序结构C语言程序采用函数结构,每个C语言程序由一个 或多个函数组成,在这些函数中至少应包含一个主函数 main(),也可以包含一个main()函数和若干个其它的功 能函数。不管main()函数放于何处,程序总是从main() 函数开始执行,执行到main()函数结束则结束。
10.1.2 C语言与MCS-51单片机用C51语言和汇编语言主要不同之处在于: 用汇编语言编写51单片机程序必须要考虑其存储器 结构,尤其必须考虑其片内数据存储器与特殊功能寄存 器的使用以及按实际地址处理端口数据。而用C51语言 编写的51单片机应用程序,则不用具体组织、分配存储 器资源和处理端口数据。但在C51语言编程中,对数据 类型与变量的定义,必须要与单片机的存储结构相关联, 否则编译器不能正确地映射定位。
C51语言与标准C语言程序区别:(1)C51中定义的库函数和标准C语言定义的 库函数不同。后者是按通用微型计算机来定义的, 而C51中的库函数是按MCS-51单片机相应情况来 定义的; (2)数据类型有一定的区别。在C51中增加 了几种针对MCS-51单片机特有的数据类型;
(3)C51中变量的存储模式与MCS-51单片机 的存储器紧密相关;
(4)C51中的输入输出是通过MCS-51串行口 来完成的,输入输出指令执行前必须要对串行口 进行初始化;(5)C51中有专门的中断函数。
10.2 C51的数据类型与运算10.2.1 C51
的数据类型 分为基本数据类型和扩展(组合)数据类型。基本数据类 型除了标准C中的字符型(char)、整型(int)、长整型 (long)、单精浮点型(float)、双精浮点型(double)外,还 有特殊功能寄存器型(sfr和sfr16两种)和位类型(bit和sbit 两种)。扩展数据类型包括数组、指针型(*)以及结构 (struct)和联合(union)等。
表10-1 KEIL C51编译器支持的基本数据类型 基本数据类型 说明符 长度 取值范围
无符号字符型有符号字符型 无符号整型 有符号整型 无符号长整型
unsigned charsigned char unsigned int signed int unsigned long
1字节1字节 2字节 2字节 4字节
0~255-128~+127 0~65535 -32768~+32767 0~4294967295
有符号长整型单精度浮点型 位 型 位 型 特殊功能寄存器型 特殊功能寄存器型
signed longfloat bit sbit sfr sfr16
4字节4字节 1位 1位 1字节 2字节
-2147483648~+2147483647±1.175494E38~±3.402823E+38 0或 1 0或 1 0~255 0~65535
一.字符型charsigned char:用于定义带符号字节数据,其字节的 最高位为符号位,“0”表示正数,“1”表示负数,补码 表示,所能表示的数值范围是-128~+127; unsigned char:用于定义无符号字节数据或字符, 可以存放一个字节的无符号数,也可以存放西文字符, 取值范围为0~255。
二.int整型 分singed int和unsigned int。默认为signed int。 它们的长度均为两个字节,用于存放一个双字节数据。 对于signed int,用于存放两字节带符号数,补码表示, 数的范畴为-32768~+32767。对于unsigned int,用于 存放两字节无符号数,数的范围为0~65535。 三.long长整型 分singed long和unsigned long。默认为signed long。它们的长度均为四个字节,用于存放一个四字节 数据。对于signed long,用于存放四字节带符号数, 补码表示,数的范畴为-2147483648~+2147483647。 对于unsigned long,用于存放四字节无符号数,数的 范围为0~4294967295。
四.float浮点型 长度为四个字节,包含指数和尾数两部分。最高位 为符号位,“1”表示负数,“0”表示正数。单片机中 使用浮点应注意以下三点: ① 由于单片机中没有专门的浮点运算硬件,因此 在运算时会比较慢。 ② 由于51单片机本身是8位的,因此在计算中不 可能达到太高的精度。 ③ 与单精浮点相比,双精浮点型(double)具有更 高的计算精度,但计算时间会更长,速度更慢,C51不 支持双精浮点型。
五.特殊功能寄存器型 分sfr和sfr16两种类型。 sfr:字节型特殊功能寄存器类型,占一个内存单元。 利用它可以访问MCS-51内部的所有特殊功能寄存器;
sfr16:双字节型特殊功能寄存器类型,占用两个字 节单元。利用它可以访问MCS-51内部的所有两个字节 的特殊功能寄存器,如DPTR。头文件reg51.h:包含了
所有特殊功能寄存器和对其 相应位的定义,通过在程序开头用#include reg51.h语 句包含头文件可以很容易地进行新的扩展。
【例10-1】特殊功能寄存器型数据定义。sfr SCON=0X98; sbit SM0=0X9F; sbit SM1=0X9E; sbit SM2=0X9D; sbit REN=0x9C; sbit TB8=0X9B; sbit RB8=0X9A; //定义 SCON //定义 SCON 的各位
sbit TI=0X99;sbit RI=0X98;
六.位类型功能:用于访问MCS-51单片机中的可寻址的位单元。
bit型:定义的位变量在C51编译器编译时,在不同的 时候位地址是可以变化的。sbit型:定义的位变量必须与MCS-51单片机的一个 可以寻址位单元或可位寻址的字节单元中的某一位联系 在一起。在C51编译器编译时,其对应的位地址是不可 变化的。
隐式转换:出现在运算中数据类型不一致时,按下 列转换的优先级顺序: bit char int long float signed unsigned 例:当char型与int型进行运算时,先自动对char 型扩展为int型,然后与int型进行运算,运算结果为 int型。 强制类型转换符“()”:对数据类型进行人为 的强制转换。
10.2.2 关于指针型数据指针(*)是一种特殊的数据类型,指向变量的地 址,实质上指针就是存储单元的地址。 在C51中它的长度一般为1~3个字节。根据所指 的变量类型不同,可以是字符型指针(char *)、整型 指针(int *)、长整型指针(long *)、浮点型指针(float *)及结构指针(struct *)与联合指针(union *)。
1. 一般指针 一般指针的声明和使用均与标准C 相同,不过同时还能说明指针的存储类型,例如: long * state; //为一个指向long型整数的指针, 而state本身则依存储模式存放。 char * xdata ptr; //ptr为一个指向char数据的指 针,而ptr本身放于外部RAM区。 一般指针本身用3个字节存放,分别为存储器类 型、高位偏移量、低位偏移量。
2. 存储器指针
基于存储器的指针说明时即指
定了存储类型,例如:char data * str; //str指向data区中char型数据。 int xdata * pow; //pow指向外部RAM的int型 整数。 存放时,只需一个字节或2个字节就够了,因
为只需存放偏移量。
10.2.3 C51的运算符 运算符:完成某种特定运算的符号。C51常见 的运算符有算术运算符、赋值运算符、关系运算符、 逻辑运算符、按位运算符和联合(复合赋值)运算符。 除此之外,还有一些用于完成特殊任务的运算符, 如逗号运算符、条件运算符、指针与地址运算符。
正在阅读:
第10章 单片机C语言程序设计05-24
我家的锅碗瓢盆进行曲作文500字07-01
伊苏-起源攻略男主角、女主角、钩爪男完整流程攻略(含全物品)+男主角强化说明(含图文)12-08
对大学英语教学改革走向的思考05-11
2011年党校党章考试试题及答案05-14
矿长安全承诺书03-25
游龙湾记作文500字07-01
液化石油气钢瓶不准充装的规定通用版05-08
雨霖铃,柳永02-19
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 单片机
- 程序设计
- 语言
- 2001年济南房地产市场调研分析报告
- 生命与健康的权利.pps
- 1桩机(正式打桩)静压混凝土预制桩、钢桩施工记录表2012.1.1-2012.1.5
- 签订施工合同注意事项
- 2013学年人教版第一学期七年级第二学段质量抽测语文试卷(含答案)
- 高中高中化学选修五教案全册教案
- 中国电子镇流器市场需求分析与前景预测报告(2014-2019)
- 基于ARM核的Bootloader代码的分析与设计
- 铁路隧道施工组织设计
- 小学教师教材教法考试数学试卷
- 加油站安全管理分析与改进
- 全国2006年7月高等教育自学考试商品流通概论试题及答案
- 2013年初级质量工程师考试相关知识模拟试题及答案
- 基础教育儿童健康成长的关键
- 七年级地理下册综合测试卷
- 九年级英语 Unit 12 Life is full of the unexpected 课堂练习题
- 资产损失管理办法
- 2012全国高考英语真题与答案解析打包下载
- 最新多次召开会议研究并向全校师生广泛进行了宣传
- GUANGZHOU INV 2008中期报告