




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章单片机的C语言程序设计 单片机的编程语言 1 为什么要编程 2 常用的编程语言 汇编语言 C语言3 两类语言的特点 汇编语言 利用助记符代替2进制数 便于理解 程序设计依靠硬件 C语言 可读性好 易于理解 4 目前使用的是KEIL Vision2集成开发环境 基于Windows操作系统的MCS 51系列单片机的集成开发环境之一 集项目管理 源程序的编辑 汇编 编译 连接 程序的仿真 运行调试功能于一体 应用最广泛 5 单片机软件开发流程 5 1单片机的C语言C51语言 全称KeilC51语言 专用于51系列单片机软件程序开发的一种高级语言 1 C51与汇编语言相比的优势 编程效率高 程序的可移植性好 可读性好 可维护性好 便于应用程序的模块化设计 相对于汇编语言简单易学 便于使用 2 C51与ANSIC的差异 C51可直接对单片机的硬件进行操作 开发工具齐全 C51对数据类型有增加 变量的存储模式不同 C51具有较强的位操作功能 C51对库函数进行了扩充 5 2C51的数据类型和存储类型1 C51的数据类型 表5 1C51支持的数据类型 1 字符型 char 占1字节 2 整型 int 占2字节 3 长整型 long 占4字节 4 浮点型 float 占4字节 5 位标量 bit 占1个2进制位 此数据类型的参数及变量存放在片内RAM20H 2FH的位寻址区 6 特殊功能寄存器 sfr 占1个字节 见表5 2 用于声明8位特殊功能寄存器 7 16位特殊功能寄存器 sfr16 占2个字节 用于声明16位特殊功能寄存器 8 特殊功能位 sbit 占1个2进制位 此数据类型的参数及变量存放在片内RAM80H FFH中可位寻址的特殊功能寄存器中 bit和sbit的异同点 共同点都用于声明位变量 不同点是位变量存放的区域不同 表5 280C51单片机的特殊功能寄存器的地址 例5 1用C51控制并口输出 使并口P0的第0位引脚交替0和1变化 include 包含特殊功能寄存器声明头文件sbitP10 P1 0 特殊功能位声明delay 延时函数 unsignedinti 0 声明变量i为无符号整形数 初值赋为0while i 10000 i 以i为循环计数器进行循环main 主程序 P1 1 给并口P1赋初值 P1 0 P1 7 10000000delay 调用延时函数while 1 无限循环 P10 0 置P1 0 0delay 调用延时函数P10 1 置P1 0 1delay 调用延时函数 2 C5中的变量的存储类型图5 1典型MCS 51系列单片机的内存组织示意图 C51共有6个存储类型 每个类型的格式及所在的存储器区如下 data存储类型 定义在片内RAM的00H 7FH区 该区是单片机处理速度最快的内存空间 bdata存储类型 定义在片内RAM的20H 2FH区 即片内RAM的位寻址区 共有16字节128个位 该区可按字节 字节单元的地址是20H 2FH 进行寻址 也可按位 位地址是00H 7FH 进行寻址 idata存储类型 可以进行间接寻址 定义在整个片内RAM区 对80C51而言是00H FFH的空间 xdata存储类型 定义在片外RAM区 最大64K 地址从0000H FFFFH pdata存储类型 也是定义在整个片外RAM区 它按页 256字节 页 寻址 最大256页 按此存储类型定义的变量要比按xdata存储类型定义的变量处理速度快 code存储类型 定义ROM区 最大64K 地址从0000H FFFFH 该区域的变量只能读取不能改写 由此也可以看出 单片机的存储器采用哈佛结构 声明变量存储类型的格式为 1 数据类型存储器类型变量名称 inta 默认data型 在片内RAM区定义整型变量a unsignedchardatavector 在片内RAM区定义一个无符号字符型变量 bitbdataflags 在片内RAM位寻址区定义一个位变量flags 2 数据类型存储器类型变量名称 数值unsignedcharxdatasum 0 声明无符号字符型变量sum的存储类型为xdata 且赋初值为0 存放在片外数据存储区 3 C51的存储模式 3种 Small存储模式 也称小模式 默认的存储类型是data 程序中所有的参数及局部变量存放在片内RAM的00H 7FH区 另外所有对象 包括堆栈 都必须嵌入片内RAM 这种存储模式适合于变量不多的小型应用程序 这里需要注意栈长 因为实际栈长依赖于函数调用嵌套层数 Compact存储模式 也称紧凑模式 默认的存储类型是pdata 参数及局部变量存放在片外RAM中 通过 R0和 R1间接访问 栈空间位于片内RAM中 Large存储模式 也称大模式 默认的存储类型是xdata 参数及局部变量存放在片外RAM中 使用数据指针DPTR进行寻址 访问效率较低 尤其对两个或多个字节的变量 这种数据类型的访问机制直接影响代码的长度 由于单片机的资源较少 所以在程序设计时应尽可能考虑变量类型的定义 换句话说 能用字符型实现时就不要用整形来实现 5 3C51的常量和变量 1 常量整型常量浮点型常量字符型常量字符串型常量位标量常量 0或1 只占1位存储空间2 变量C51定义变量的格式为 数据类型存储类型变量名称当然 也可以象其它高级语言一样不用加存储类型 由于单片机资源有限 为了减小变量在内存中所占空间 在定义变量时 尽量选择所占空间小的数据类型 例5 2编程计算1 2 3 9 10 并比较不同数据类型对程序占用资源的影响情况 main int chari 1 s 0 while i 10 s s i i while 1 5 4C51的预处理指令1 include指令 将头文件包含到源程序中来 2 define指令 宏定义指令 用一个标识符代表一个数据或一个字符串 一次定义 多次使用 3 条件编译指令 可以实现程序的部分语句根据条件进行编译 5 5C51的位运算1 定义 对变量或输入输出接口的某一位 或某一个单独的引脚 进行单独操作 2 方法 针对整个字节的逻辑操作使用C51扩展的位处理指令 5 6C51的程序结构每一个应用程序由一个主函数和若干个子函数构成 程序从主函数开始执行 在主函数中可以调用子函数 最后在主函数结束 5 7C51的函数1 函数概述 函数的类型函数名形参表可重入函数说明符reentrant中断函数说明符interruptm工作寄存器组选择说明符usingn 2 中断函数典型的中断函数定义格式 函数类型函数名 interruptm m值的含义见表5 4 例5 3 处理外部中断的简单程序 3 可重入函数定义 在函数体内可以直接调用自身的一种函数 典型的可重入函数定义格式 函数类型函数名 形参表 reentrant可重入函数占用内存空间大 执行速度慢 5 8C51对内存的直接访问和操作 C51可以通过变量的形式访问内存 C51编译器提供了包含在头文件absacc h中的一组宏定义来对内存的code data xdata等区域的地址单元进行访问和操作 使C语言程序对内存字节单元或字单元的访问和操作变得非常简单 在头文件absacc h中常用的宏定义如下 defineCBYTE 单元的绝对地址 对code字节单元的定义 寻址整个ROM区 defineDBYTE 单元的绝对地址 对data字节单元的定义 寻址data区 definePBYTE 单元的绝对地址 对pdata字节单元的定义 用MOVX R0 A指令寻址xdata区的00H FFH区域 defineXBYTE 单元的绝对地址 对xdata字节单元的定义 用MOVX DPTR A指令寻址xdata区 异同点 共同点都是对字节单元的访问和操作 不同点是访问和操作的区域不同 例5 4有若干个数的ASCII码存放在片内RAM从31H开始的内存单元中 将它们分别转换成十六进制数 存储到片内RAM的40H开始的单元中 ASCII码的个数存储在30H单元 请用C51编程 5 9C51的应用程序开发方法 图5 6C51的应用程序开发方法一般步骤 5 10C51并口应用编程举例 并口数据输入语句 X Pn 其操作是把并口Pn n 0 3 的数据输入至变量X中 这里需要注意的是变量X必须是字符型 并口数据输出语句 Pn X 其操作是把变量X的值或已定义为X的常量输出至并口Pn n 0 3 例5 5设计一个MCS 51系列单片机最小系统 从并行口P3输入8位二进制无符号整数数据 要求单片机对所输入的数据进行判断 如果输入的数据小于32 则使P1 0为低电平 控制低限报警指示灯亮 如果输入的数据大于192 则使P1 1为低电平 控制高限报警指示灯亮 试编程实现上述功能 解题思路 已知条件 P3来的是无符号整数 求解 若P3值小于32 则P1 0 0 低限报警指示灯亮 若P3值小于192 则P1 1 0 高限报警指示灯亮 否则两个报警指示灯均灭 电路原理图 根据已知条件和求解要求 可以画出简单的电路原理图 注意 复位电路 时钟电路和工作电源可用方框图标注即可 由于P1 0或P1 1为低电平亮 因此 指示灯接限流电阻后接工作电源 祥见图5 7 图5 7P3口输入并行字节数据高低限报警应用系统电路图 图5 8P3口输入并行字节数据高低限报警应用系统程序流程图 本程序设计需要注意的问题 并口的 P 必须要大写 由于单片机Reset后四个并口的初值均为FFH 所以在本程序中不需要初始化 使用宏定义声明报警的上 限值的目的是为了程序便于修改 因为本程序小 可以不这样做 程序清单如下 include definelow limit32 定义低限报警值 definehigh limit192 定义高限报警值unsignedcharx 定义x为无符号字符型变量sbitP10 P1 0 定义特殊功能位P10sbitP11 P1 1 定义特殊功能位P11main P10 1 P1 0初始化P11 1 P1 0初始化while 1 无限循环 x P3 输入P3值if xhigh limit P11 0 判断P3值是否大于高限报警值 大于则P11 0elseP11 1 P3值不大于高限报警值 则P11 1 例5 6设计一个MCS 51系列单片机最小系统 有一个按钮开关链接到并口的一个引脚 要求单片机接收开关动作信号并进行计数 按钮开关每按一次 单片机进行一次计数值加1 计数的结果通过并口输出来控制4个小灯的亮灭 用4个小灯的亮灭以二进制数表示计数的结果 当计数值达到15时将计数器清0 以后再重新计数过程 解题思路 已知条件 某个并口引脚上接一个按键 每按一次按键 单片机设定的计数器加1 求解 设计一个最小系统 并在某并口将计数器值以二进制输出至四个指示灯 1 亮 0 灭 计数器大于15时清零 电路原理图 根据已知条件和求解要求 可以画出简单的电路原理图 注意 复位电路 时钟电路和工作电源用方框图标注即可 原理图可以是图5 10 也可以把图5 10中的反相器74LS240去掉 限流电阻的另一端接地 得到新电路原理图 图5 10记录并显示按键次数应用系统电路图 图5 11记录并显示按键次数应用系统程序流程图 程序清单如下 includesbitP36 P3 6 voiddelay 延迟函数声明main charn 0 定义计数器变量while 1 无限循环 if P36 0 如果有键按下 voiddelay 调用延迟函数 目的是解决外界干扰产生的误操作if P36 0 确实有键按下 n if n 15 n 0 如果计数器值大于15 则清零 P1 n 计数器值输出while P36 0 等待按键抬起 vioddelay unsignedchari j for j 20 j 1 j for j 20 j 1 j 例5 7设计一个单片机应用系统 要求P3口的8个引脚分两组与两个拔码开关连接 每个拔码开关具有4个开关 通过开关的不同状态可以模拟0 15之间的数据输入 这样就有两个0 15之间的数据输入到单片机 要求单片机应用系统对这两个输入的数据求和 并用两个数码管按十进制显示出两个输入数据的和 解题思路 已知条件 提供了2个4位拨码开关 可以看成单刀开关 2个4位拨码开关与某个并口的8个引脚连接 即每个开关与1个引脚连接 开关的另外一端接地 拨码开关拨到接地端时 输入引脚的数据为 0 拨到另外一端时 输入引脚的数据为 1 这里需要注意的是 如果拨码开关接P0口 要加上拉电阻 接其它并口时不需要加上拉电阻 原因是P1 P2 P3口有内部上拉电阻 求解 将2个4位拨码开关的状态分别作为一个数据输入 在机器内相加后输出 并在七段数码管上显示 即个位和十位分别显示 电路原理图 根据已知条件和求解要求 可以画出简单的电路原理图 复位电路 时钟电路和工作电源用方框图标注即可 图5 13求两个输入数据和及用数码管显示的单片机应用系统电路图 图5 14求两个输入数据和及用数码管显示的单片机应用系统程序流程图 程序清单如下 includ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职工食堂评审方案(3篇)
- 酒店公司前厅管理方案(3篇)
- 商场开店推广方案模板(3篇)
- 与餐饮企业合作创新创业项目商业计划书
- 粮食出口控制方案(3篇)
- 电商营销数据洞察与分析创新创业项目商业计划书
- 中学生数学期中测试卷及详解
- 汽车线上购车节主题策划创新创业项目商业计划书
- 渔产品健康烹饪课程创新创业项目商业计划书
- 学生餐厅食堂管理方案(3篇)
- 鼻饲的注意事项及护理要点
- 高危妊娠5色分级管理
- 2024慢性鼻窦炎诊断和治疗指南解读课件
- 员工自愿自己缴纳社保协议书范本
- 临时场地租赁协议书范本
- HRBP工作总结与计划
- 心理危机干预中的伦理问题探讨-深度研究
- 中国大唐集团公司基建工程质量标准及工艺要求(安装部分)
- 金沙县殡仪馆项目可行性研究报告
- 2025年度土地利用现状测绘合同模板3篇
- 《糖尿病健康讲座》课件
评论
0/150
提交评论