




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章普通I O及第一个汇编工程 主要内容通用I O接口基本概念及连接方法MC68HC908GP32的并行I O端口汇编工程文件组织I O口的输入和输出电流以及端口上拉问题 4 1通用I O接口基本概念及连接方法 I O接口 即输入输出接口 是微控制器同外界进行交互的重要通道 这些接口千变万化 种类繁多 有显而易见的人机交互接口 如操纵杆 键盘 显示器 也有无人介入的接口 如网络接口 机器设备接口 通用I O GPIO GeneralPurposeI O 是I O的最基本形式 它是一组输入或输出引脚 有时也称为并行I O parallelI O 输入引脚有三种不同的连接方式 带上拉电阻的连接 带下拉电阻的连接和 悬空 连接 返回 输出引脚的基本接法作为通用输出引脚 MCU内部程序向该引脚输出高电平或低电平来驱动器件工作 即开关量输出 如图4 2所示 其中O1引脚是发光二极管LED的驱动引脚 当O1引脚输出高电平时 LED不亮 当O1引脚输出低电平时 LED点亮 O2引脚接蜂鸣器驱动电路 当O2脚输出高电平时 蜂鸣器响 O2脚输出低电平时 蜂鸣器不响 这里只是原理性说明 关于电流方向与大小等问题 作为进一步讨论放在4 4节 4 2MC68HC908GP32的并行I O端口 MC68HC908GP32单片机有5个普通I O口 分别是A口 B口 C口 D口 E口 它们中的大部分具有双功能 本节仅讨论它们作为普通I O功能时的编程方法 A口的8根引脚与键盘中断模块的引脚复用 这里只讨论A口作为普通I O口的功能 1 A口的寄存器A口作为普通I O口时 具有三个寄存器 它们是 A口数据方向寄存器 DDRA A口数据寄存器 PTA A口上拉电阻允许寄存器 PTAPUE A口数据方向寄存器 DataDirectionRegisterA DDRA A口数据方向寄存器 DDRA 的地址是 0004 DDRA的第7 0位分别记为DDRA7 DDRA0 这些位分别控制着A口引脚PTA7 PTA0是输入还是输出 若DDRAx 0 则引脚PTAx为输入 若DDRAx 1 则引脚PTAx为输出 复位时DDRA为 00 记忆要点 数据方向寄存器的一位 0 定义输入 1 定义输出 4 2 1A口 A口数据寄存器 PTA 的地址是 0000 PTA的第7 0位分别记为PTA7 PTA0 若A口的某一引脚PTAx被定义成输出 程序使A口数据寄存器PTA的相应位PTAx 0 则引脚PTAx输出 低电平 程序使PTAx 1 则引脚PTAx输出 高电平 若A口的某一引脚PTAx被定义成输入 程序通过读取A口数据寄存器PTA 获得输入情况 0表示输入为 低电平 1表示输入为 高电平 记忆要点 输出时 数据寄存器的一位 0 输出低电平1 输出高电平输入时 数据寄存器的一位 0 代表外部输入低电平1 代表外部输入高电平 A口数据寄存器 PortADataRegister PTA 嵌入式技术基础与实践 课件 A口上拉电阻允许寄存器 PTAPUE 的地址是 000D PTAPUE的第7 0位分别记为PTAPUE7 PTAPUE0 若A口的某一引脚PTAx被定义成输入 则可通过置PTAPUE的相应位PTAPUEx为1来定义其内接上拉电阻 即引脚PTAx已经通过内部电阻与电源VDD相接 此时若引脚PTAx若通过开关接地 则开关闭合时为低电平 那么寄存器PTA的相应位PTAx 0 开关断开时为高电平 寄存器PTA的相应位PTAx 1 通过读取寄存器PTA获得开关状态 记忆要点 在引脚被定义成输入时 可通过上拉电阻允许寄存器定义有无内部上拉电阻 0 没有内部上拉电阻1 有内部上拉电阻 A口上拉电阻允许寄存器 PortAInputPullupEnableRegister PTAPUE 下图给出了A口作为普通I O使用时 一个外部引脚的相应内部逻辑电路框图 当DDRAx 1时 读地址 0000就是读PTAx 当DDRAx 0时 读地址 0000就是读引脚PTAx电平 2 A口逻辑电路框图 B口的8根引脚与8路A D转换模块的引脚复用 这里只讨论B口作为普通I O口的功能 1 B口的寄存器B口作为普通I O口时 具有二个寄存器 它们是 B口数据方向寄存器 DDRB 和B口数据寄存器 PTB B口数据方向寄存器 DataDirectionRegisterB DDRB B口数据方向寄存器 DDRB 的地址是 0005 DDRB的第7 0位分别记为DDRB7 DDRB0 这些位分别控制着B口引脚PTB7 PTB0是输入还是输出 若DDRBx 0 则引脚PTBx为输入 若DDRBx 1 则引脚PTBx为输出 复位时DDRB为 00 记忆要点 数据方向寄存器的一位 0 定义输入 1 定义输出 4 2 2B口 B口数据寄存器 PTB 的地址是 0001 PTB的第7 0位分别记为PTB7 PTB0 若B口的某一引脚PTBx被定义成输出 程序使B口数据寄存器PTB的相应位PTBx 0 则引脚PTBx输出 低电平 程序使PTBx 1 则引脚PTBx输出 高电平 若B口的某一引脚PTBx被定义成输入 程序通过读取B口数据寄存器PTB 获得输入情况 0表示输入为 低电平 1表示输入为 高电平 注意 B口被定义成输入时 没有内部上拉电阻 B口数据寄存器 PortBDataRegister PTB 下图给出了B口作为普通I O使用时 一个外部引脚的相应内部逻辑电路框图 2 B口逻辑电路框图 4 2 3C口 D口和E口 作为通用I O口使用时 C口 D口的功能以及用法与A口类似 E口与B口类似 表4 1描述了C D E这3个通用I O口 4 3汇编工程文件组织 通用程序文件 芯片相关的程序文件 GP32映像寄存器名定义头文件 GP32ASM h 芯片初始化文件 MCUinit s 中断处理子程序与中断向量表文件 Vectors08 s 硬件对象控制文件 小灯驱动头文件 LED h 小灯驱动文件 LED s 总头文件 Includes h 通用函数文件 GeneralFun s 主函数文件 Main s PrgFrame prj PrgFrame prj工程中芯片相关类的程序文件包括 GP32映像寄存器名定义头文件 GP32ASM h 芯片初始化文件 MCUinit s 和中断处理子程序与中断向量表文件 Vectors08 s 1 GP32ASM h本文件为MC908GP32MCU映象寄存器名定义头文件 它是GP32的汇编工程的映像寄存器名与其地址的对应表 2 MCUinit s芯片初始化文件 主要包含与芯片有关的设置 如总线频率 看门狗模块的使用等 1 芯片相关的程序文件 3 Vectors08 s该文件包含了中断处理程序和中断矢量表 中断处理程序是当中断发生后执行的子程序 中断子程序在返回时需要使用RTI指令 中断矢量表实质是在MCU的矢量区写入一些常量值 这些常量值就是相应的中断处理程序的入口地址 当系统发生中断时 从中断向量表获得相应的中断处理子程序的入口地址 使程序流转向中断服务例程 执行相应的中断处理动作 处理结束后 从中断返回 Vectors08 s 中断处理子程序与中断向量表 功能 1 定义中断处理子程序 2 放置中断向量表 说明 该文件与芯片具体型号有关 1 芯片型号MC68HC908GP32 2 注意本文件内容的顺序不能变动 此处为用户中断处理子程序的存放处 未定义的中断处理子程序 本子程序不能删除isrDummy RTI 中断矢量表 用户若需开放某中断 可修改下表中的相应项目 interruptserviceroutine isr中断处理程序 areamemory abs org0 xffdc 中断向量表起始地址 注意 与芯片型号有关 vectab wordisrDummy 时基中断 wordisrDummy AD转换中断 wordisrDummy 键盘中断 wordisrDummy SCI发送中断 wordisrDummy SCI接收中断 wordisrDummy SCI错误中断 wordisrDummy SPI发送中断 wordisrDummy SPI错误中断 wordisrDummy TIM2溢出中断 wordisrDummy TIM2通道1输入捕捉 输出比较中断 wordisrDummy TIM2通道0输入捕捉 输出比较中断 wordisrDummy TIM1溢出中断 wordisrDummy TIM1通道1输入捕捉 输出比较中断 wordisrDummy TIM1通道0输入捕捉 输出比较中断 wordisrDummy CGM的PLL锁相状态变化中断 wordisrDummy IRQ引脚中断 wordisrDummy SWI指令中断 wordMainInit RESET 见主程序定位处 复位被认为是一种特殊中断 2 硬件对象控制文件MCU工程编程是面向硬件对象的 PrgFrame prj工程用普通I O口控制小灯 LED 闪烁 1 LED h文件 LED h 中包含小灯控制引脚宏定义 LED h 小灯驱动头文件 小灯控制引脚宏定义Light P PTA 灯 Light 接在PTA口Light D DDRA 相应的方向寄存器Light Pin 1 所在的引脚 2 LED s文件 LED s 中包含 文件描述 文件中的子程序的索引 硬件对象及其与MCU的连接描述 头文件 小灯控制所需用到的头文件和小灯控制引脚定义及小灯控制子程序中用到的其他常量声明可全部存放在 LED h 中 LED s 只要包含该头文件即可 小灯驱动子程序定义 每个子程序前要有相应的程序描述 包括子程序名 子程序的功能 入口和出口 必要时加上相关说明 LED s 小灯驱动 本文件包含 1 LEDinit 定义控制小灯的MCU的I O引脚为输出 2 LED L A 驱动小灯 亮 暗 硬件连接 1 本处的小灯是一个发光二极管 由MCU的I O引脚控制 2 控制引脚为高电平时 小灯 暗 反之 小灯 亮 小灯驱动头文件 include LED h LEDinit 定义控制小灯的MCU引脚为输出 功能 定义控制小灯的MCU引脚为输出 并使小灯初始为暗 入口 无 出口 无 堆栈深度 2 LEDinit BSET Light Pin Light D 令小灯引脚为输出BSET Light Pin Light P 初始时 小灯 暗 RTS LED L A 驱动小灯 亮 暗 功能 根据A的值控制小灯的亮和暗 入口 A A L 小灯亮 A A 小灯暗 出口 无 堆栈深度 2 LED L A CMP A BNELED L A 1BSET Light Pin Light P 小灯 暗 BRALED L A ExitLED L A 1 CMP L BNELED L A Exit 入口非 L A 程序无响应BCLR Light Pin Light P 小灯 亮 LED L A Exit RTS 3 通用程序文件通用程序文件中可以定义一些与硬件无关 可以在不同工程项目中直接引用的子程序 它还可以是与这些通用子程序文件相对应的头文件 在工程PrgFrame prj中 有通用子程序文件GeneralFun s 它定义了延时子程序DelayHX 这个程序不依赖于任何硬件模块 只是完成一个延时动作 工程PrgFrame prj中 还有一个比较特殊的文件 总头文件 Includes h 它也属于通用程序文件 Includes h用于声明全局变量和包含主程序文件中需要的头文件 宏定义等 它使得主函数文件能够尽量避免改动 结构更加清晰 在Includes h中声明内存变量 通常称为 开辟内存变量 内存变量的初始化在主程序开始部分完成 4 主程序文件一个汇编工程中包含一个汇编主程序文件 文件名固定为main s 汇编主程序的主体是程序的主干流程 要尽可能简洁 清晰 流程中的各个环节由子程序去完成 主程序仅仅是完成对子程序的调用 返回 TXS HX 1 SP 2 系统初始化JSRMCUinit 初学时跳过此处 3 模块初始化JSRLEDinit 1 I O口小灯控制引脚初始化 程序总循环入口MainLoop LDA L 小灯亮JSRLED L ALDHX 02FF 延时JSRDelayHXLDA A 小灯暗JSRLED L ALDHX 02FF 延时JSRDelayHXJMPMainLoop 包含本工程的其他文件 include GeneralFun s 通用子程序 include MCUinit s 芯片初始化 include LED s 小灯驱动 包含中断处理子程序与中断向量表文件 Vectors08 s include Vectors08 s 中断处理子程序与中断向量表 4 4进一步讨论 4 4 1I O口的输入和输出电流1 输出电流输出电流是由芯片提供给外围设备 驱动外围设备 电流通过芯片引脚从芯片内 流出 也称为拉电流 如果输出电流大于驱动设备的工作电流 就需要串联一个限流电阻 相反地 输出电流小于驱动设备的工作电流 需要增加放大电路 提高驱动电流 2 输入电流外部电流通过芯片引脚向芯片内 流入 称为输入电流 如果芯片主动接纳外部电流 这种输入电流称为吸收电流 芯片被动接纳外部电流 这种输入电流称为灌电流 在实际使用I O口时 如果有输入电流要特别注意I O口所能承受的最大值 例如 用I O口驱动四位一体数码管 数码管的具体介绍参见第10章 如下图4 6所示 如果引脚分配是 a h接PTA0 PTA7口 CS0 CS3接PTC0 PTC3口 如果希望第0位显示数字时 CS0置低 即PTC0为低 PTA口为相应的数 则PTA口输出电流 芯片通过PTC0口吸收电流 假如数码管上某段亮所需的驱动电流是10mA 1段亮时 PTC0的吸收电流是10mA 但是如果8段都亮 PTC0的吸收电流将会是80mA 而微控制器的I O口通常只有10 20mA的吸纳电流能力 如GP32的PTC0口的吸纳电流上限为15mA 基于这种情况 实际通过PTC0的电流是15mA 也就是数码管每段上通过的电流只有2mA左右 远远小于其工作电流 最终数码管显示的亮度很低 同时 如果使用这种连接方法 工作时间长 很容易损坏芯片 对于图4 6所示的电路的改进方法是 MCU的I O端仅仅作为控制作用 将输入电流流向吸纳电路大的器件 如由NPN达林顿晶体管构成的MC1413芯片 MC1413采用NPN达林顿复合晶体管的结构 因此有很高的电流增益和很高的输入阻抗 可直接接受MOS或CMOS集成电路的输出信号 并把电压信号转换成足够大的电流信号驱动各种负载 该电路内含有7个集电极开路反相器 也称OC门 MC1413电路结构和引脚排列如图4 7所示 它采用16引脚的双列直插式封装 每一驱动器输出端均接有一释放电感负载能量的抑制二极管 每一路的驱动电流最高可达500mA 图4 7MC1413管脚图 图4 9改进后的4连排共阴极8段数码管连接图 4 4 2端口上拉问题1 端口需要上拉的情况 当TTL电路驱动COMS电路时 如果TTL电路输出的高电平低于COMS电路的最低高电平 一般为3 5V 这时就需要在TTL的输出端接上拉电阻 以提高输出高电平的值 OC门电路必须加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北省定州市辅警招聘考试试题题库含答案详解(a卷)
- 2025年K2学校STEM课程实施与科学教育改革研究报告
- 初中美术九年级上册统编教案
- 偏头痛诊治攻略2025
- 世界人口日人口发展现状老龄化探讨提升出生人口素质课件
- 初中数学九年级下册统编教案 7.6用锐角三角函数解决问题(第1课时)
- 2025届高考物理大一轮复习课件 第六章 第31课时 专题强化:动力学和能量观点的综合应用
- DeepSeek大模型教育领域解决方案
- 江苏省苏州市2024-2025学年七年级下学期生物期末模拟试卷 (含解析)
- 相似三角形测试题及答案
- 2023年北京市先农坛体育运动技术学校招聘笔试真题
- 教学课件英语人教版(2024版)七年级初一上册Unit 1 You and Me Section A 1a1d
- 2024年高考真题-政治(江苏卷) 含答案
- 病毒TCID50测定方案
- 水闸安全鉴定报告书
- 国家开放大学专科《机械制图》形考任务1-4试题及答案
- 四年级下册数学方程题100道及答案
- 湖南省工程建设地方标准分布式光伏工程验收标准
- 2024-2030年中国苯乙烯-马来酸酐共聚物行业市场发展趋势与前景展望战略分析报告
- 军队文职人员招聘(军需保管员)历年考试真题试题库(含答案)
- 2024北京海淀区初三一模英语试卷和答案
评论
0/150
提交评论