




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
复习 嵌入式应用基础 第1章 嵌入式系统 EmbeddedSystem 含义 面向测控对象 嵌入到实际应用系统中 实现嵌入式应用的计算机称之为嵌入式计算机系统 简称嵌入式系统 第1章 相关术语 重点 并行通信 将数据的各位同时在多根并行传输线上进行传输 数据的各位同时由源到达目的地 适合近距离 高速通信 常用有4位 8位 16位 32位等同时传输串行通信 数据在单线上按时间先后一位一位地传送 其优点是节省传输线 但是数据传送速度较慢 在嵌入式系统中 串行通信一词一般特指用串行通信接口SCI SerialCommunicationInterface 与RS232芯片连接的通信方式 I2C USB等也是串行通信 但它们有专用名词 串行外设接口 SPI SerialPeripheralInterface 主从控制I2C InterIntegratedCircuit I2C总线是一种由PHILIPS公司开发的两线式串行总线 用于连接MCU及其外围设备 中断 指中央处理器CPU正在处理某件事情的时候 外部发生了某一事件 请求CPU迅速去处理 CPU暂时中断当前的工作 转入处理所发生的事件 处理完后 再回到原来中断的地方 继续原来的工作 这样的过程称为中断 4 图中断响应和处理过程 如果单片机没有中断系统 单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上 采用中断技术完全消除了单片机在查询方式中的等待现象 大大地提高了单片机的工作效率和实时性 第1章 第1章 2 1 1Freescale单片机 基本命名规则 书P17 指产品状态 存储器类型标志 芯片内核 型号标志 存储器大小 工作温度范围标志 封装标志 特别说明 FreescaleHC08芯片以前命名中包含了 68HC 部分 如 MC908GP32芯片以前的名称是MC68HC908GP32 在很多资料中对于HC08芯片都沿用了这种方法 第2章 2 2 4GP32存储器组织 CPU08可寻址64K地址空间 地址范围是 0000 FFFF 在寻址范围内分成多个不同区段 每个区段的作用不同 MC68HC908GP32单片机的存储器组织及地址分配见 表2 第2章 RAM区域及其作用RAM的地址范围 0040 023F 共512字节 这个区域既是用户RAM 也是堆栈RAM 空间较小 必须合理安排初始堆栈指针和用户数据 有192字节的RAM属于第0页 范围 0040 00FF 第0页寻址方便 复位时SP 00FF 实际编程时 堆栈使用的地址空间是 023F 更低地址方向 用户数据使用的地址空间是 0040 更高地址方向 要给堆栈留有足够的空间 否则运行时可能产生错误 第2章 第3章 M68HC08系列单片机的各种型号CPU均使用HC08CPU 有时也将HC08CPU称为CPU08 它具有如下特点 目标代码与M68HC05系列单片机向上兼容 具有16位堆栈指针SP 具有16位变址寄存器HX 8MHzCPU内部总线频率 64KB程序 数据存储器空间 16种寻址方式 不经过累加器A的存储器之间数据直接传送 快速8位 8位乘法指令 快速16位与8位相除指令 增强的BCD指令 模块化结构 可扩展的内部总线定义可使寻址范围超过64KB 低功耗的STOP WAIT模式 第3章 HC08中有5个寄存器 重点 第3章 指令是对数据的操作 通常把指令中所要操作的数据称为操作数 HC08CPU所需的操作数可能来自 寄存器 指令代码 存储单元 而确定指令中所需操作数的各种方法称为寻址方式 AddressingMode 寻址方式越多 指令系统的功能就越强 灵活性也越大 MC68HC08系列单片机的寻址方式共有16种 比MC68HC05单片机增加了8种 书P35详释 重点 第3章 取数指令LDA LDX 单字节 LDHX 双字节 LDA 43将数据43存到累加器A中LDX 43将数据43存到寄存器X中LDHX 0f43将数据 0f43存到寄存器HX中 其中 H 0f X 43存数指令STA STX STHXSTA 43将累加器A中的数据存到地址 43的位置中STX 43将寄存器X中的数据存到地址 43的位置中STHX 43将寄存器H中的数据存到地址 0043的位置中将寄存器X中的数据存到地址 0044的位置中 第3章 重点 内在寻址方式 INH Inherentaddressingmode INCA 即 A A 1 立即寻址方式 IMM Immediateaddressingmode LDA FC 即 A FC 直接寻址方式 DIR Directaddressingmode LDA 60 即 A 60 扩展寻址方式 EXT Extendedaddressingmode LDA 023D无偏移量变址方式 IX LDA X 即 A HX 八位偏移量变址方式 IX1 STA 80 X 即 A HX 80 十六位偏移量变址方式 IX2 Indexed 16 bitoffsetaddressingmode 相对变址寻址方式 REL Relativeaddressingmode BRAA1存储器 直接地址 直接地址寻址方式 DD MOVN1 N2 即 N2 N1 存储器 直接地址 变址 变址加1的寻址方式 DIX MOV 80 X 即 HX 80 HX HX 1 存储器 立即数 直接地址寻址方式 IMD MOV 86 N1 即 N1 86 存储器 变址 直接地址 变址加1的寻址方式 IX D MOVX 80 即 80 HX HX HX 1 第3章 思考 说明以下指令的寻址方式LDA 01LDA XMOVY ZSTA 01 XLDA 01 关于堆栈 第3章 取数指令LDA LDX 单字节 LDHX 双字节 存数指令STA STX STHX堆栈操作指令 重点 PSHA PSHH PSHX 其中 SP指针相应移动 总指向下一个堆栈地址PULA PULH PULX寄存器间数据传送指令TAP TAX 重点 TXSH X 1 SPTSXSP 1 HX存储器间数据传送指令MOV 第3章 思考2 RAM中一段地址的内容如下 3203 FD A000 23 A001 F2 A002 3E A003 15 A004 AA A005 55 A006 32 A007 00分析下列语句执行过程中寄存器A HX值的改变 执行后对RAM内存空间的影响 1 LDA A005 A A005 地址内容 55STA A007 A007 地址内容 552 LDHX A001 HX A001 其中H A0 X 01LDA 5 X A A001 5 地址内容 32STX A003 A003 地址内容 01 第3章 思考1 问 MCU晶振频率8MHZ 计算执行下面的语句时候所需的时间 不用包含ldhx 0及rts指令运行的时间 delayldhx 0loopnop 执行1个周期nop 执行1个周期aix 1 执行2个周期cphx C000 执行3个周期bneloop 执行3个周期rts 第3章 思考1 重点 问 MCU晶振频率8MHZ 计算执行下面的语句时候所需的时间 不用包含ldhx 0及rts指令运行的时间 delayldhx 0loopnop 执行1个周期nop 执行1个周期aix 1 执行2个周期cphx C000 执行3个周期bneloop 执行3个周期rts答案 一个时钟周期 1 8MHz 0 125ms 查书表格每条指令执行周期 一次循环执行1 1 2 3 3 10个周期 C000 49152次循环 则共执行 49152次 X 一次10个周期 491520个周期 耗时491520X0 125ms 61 44ms 第3章 思考3 写程序 将内存地址的 0040 0080内容复制到 0090 00D0中 提示 子程序用到两个寄存器 累加器A和变址寄存器HX 在进入子程序时候要先将它们压入堆栈 在出子程序时候要将他们出堆栈 第3章 思考3 写程序 将内存地址的 0040 0080内容复制到 0090 00D0中 提示 子程序用到两个寄存器 累加器A和变址寄存器HX 在进入子程序时候要先将它们压入堆栈 在出子程序时候要将他们出堆栈 ENTERPSHHPSHXPSHA 入栈LDHX 0040LOOPLDA X 取 0040地址处的内容给ASTA 50 X 将A的内容复制到 0040 50 0090处AIX 1CPX 81 循环从 0040 0081BNELOOPPULAPULXPULH 出栈RTS 第4章 I O接口 即输入输出接口 是微控制器同外界进行交互的重要通道 这些接口千变万化 种类繁多 有显而易见的人机交互接口 如操纵杆 键盘 显示器 也有无人介入的接口 如网络接口 机器设备接口 通用I O GPIO GeneralPurposeI O 是I O的最基本形式 它是一组输入或输出引脚 有时也称为并行I O parallelI O 正逻辑 VCC 高电平 1GND 低电平 0引脚作为输入时 MCU通过读取IO口寄存器获取引脚高 1 低 0 电平引脚作为输出时 MCU通过设置IO口寄存器向引脚输出 第4章 输出引脚的基本接法作为通用输出引脚 MCU内部程序向该引脚输出高电平或低电平来驱动器件工作 即开关量输出 如图4 2所示 其中O1引脚是发光二极管LED的驱动引脚 当O1引脚输出高电平时 LED不亮 当O1引脚输出低电平时 LED点亮 O2引脚接蜂鸣器驱动电路 当O2脚输出高电平时 蜂鸣器响 O2脚输出低电平时 蜂鸣器不响 第4章 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章 A口数据寄存器 PortADataRegister PTA 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 代表外部输入高电平 第4章 小灯驱动 include LED h LEDinit 定义控制小灯的MCU引脚为输出 功能 定义控制小灯的MCU引脚为输出 并使小灯初始为暗 入口 无 出口 无 堆栈深度 2 LEDinit BSET Light Pin Light D 令小灯引脚为输出BSET Light Pin Light P 初始时 小灯 暗 RTS LED h 小灯驱动头文件 小灯控制引脚宏定义Light P PTA 灯 Light 接在PTA口Light D DDRA 相应的方向寄存器Light Pin 1 所在的引脚 第4章 思考 重点 如何点亮 用C语言如何实现 C语言的数据类型有基本类型和构造类型两大类 基本数据类型如表5 1所示 注 08C语言的double类型长度为4字节 构造类型有数组 结构 联合 枚举 指针和空类型 结构和联合是基本数据类型的组合 枚举是一个被命名为整型常量的集合 空类型字节长度为0 主要有两个用途 一是明确地表示一个函数不返回任何值 二是产生一个同一类型指针 可根据需要动态地分配给其内存 第5章 第5章 运算符C语言的运算符与大多数计算机语言基本相同 分为算术 逻辑 关系和位运算及一些特殊的操作符 表5 2列出了C语言的部分运算符及使用方法举例 见书P84 由于任意非0值都解释为值 所以条件中可以省略对0的冗余比较 表5 3给出了08C位操作语句编译后的所对应的指令 从表中可以看出编译器在编译时 已经做了优化 将这些C语句变成了08CPU中的位指令 达到和汇编相同的执行效率 08C中除了上述的位操作的方法外 还可以综合共用体和位域等多种数据类型 很直观地实现位操作 关于这部分的讲述读者参考本章的进一步讨论部分 第5章 重点 7 1 1基本概念 异步串行通信的格式SCI通常采用NRZ数据格式 即 standardnon return zeromark spacedataformat 译为 标准不归零传号 空号数据格式 不归零 的最初含义是 用正 负电平表示二进制值 不使用零电平 mark space 即 传号 空号 分别是表示两种状态的物理名称 逻辑名称记为 1 0 下图给出了8位数据 无校验情况的传送格式 第7章 第7章 波特率 baudrate 每秒内传送的位数 波特率单位是位 秒 记为bps 通常情况下 波特率的单位可以省略 通常使用的波特率有300 600 900 1200 1800 2400 4800 9600 19200 38400 单工 Simplex 数据传送是单向的 一端为发送端 另一端为接收端 这种传输方式中 除了地线之外 只要一根数据线就可以了 有线广播就是单工的 全双工 Full duplex 数据传送是双向的 且可以同时接收与发送数据 这种传输方式中 除了地线之外 需要两根数据线 站在任何一端的角度看 一根为发送线 另一根为接收线 一般情况下 MCU的异步串行通信接口均是全双工的 半双工 Half duplex 数据传送也是双向的 但是在这种传输方式中 除了地线之外 一般只有一根数据线 任何一个时刻 只能由一方发送数据 另一方接收数据 不能同时收发 在freescale的HC08系列MCU中 监控模式的通信就采用这种方式 第7章串行通信的传输方式 7 2 2SCI的基本编程原理 返回 7 3GP32SCI模块寄存器 SCI的寄存器MC68HC908GP32的SCI有7个寄存器 地址为 0013 0019 1 SCI波特率寄存器 SCIBaudRateRegister SCBR SCBR的作用是设置串行通信的波特率 其地址是 0019 D7 D6 D3 未定义 D5 D4 SCP 波特率预分频位 SCIBaudRatePrescalerBits SCP1 SCP0 00011011PD 13413 D2 D0 SCR 波特率选择位 SCIBaudRateSelectBits 定义波特率另一分频值 记为 BD 定义如下 SCR2 1 0 000001010011100101110111BD 1248163264128设fSCI为串行通信时钟源频率 fSCI fBUS或CGMXCLK 取决于CONFIG2的SCIBDSRC 一般设定SCIBDSRC 1 SCI用内部总线时钟 则fSCI fBUS 则波特率的定义公式为 Bt fBUS 64 PD BD 已知fbus 2 4576MHZ SCBR 0b00100001 求波特率为多少 Bt 2457600 64 4 2 4800 1 SCI波特率寄存器 SCIBaudRateRegister SCBR 重点 2 SCI控制寄存器1 SCIControlRegister1 SCC1 SCC1的地址是 0013 定义为 D7D6D5D4D3D2D1D0 3 SCI控制寄存器2 SCIControlRegister2 SCC2 SCC2的地址是 0014 定义为 4 SCI控制寄存器3 SCIControlRegister3 SCC3 SCC3的地址是 0015 定义为 第7章 发送数据是通过判断状态寄存器SCS1的第7位 SCTE 进行的 而接收数据是通过判断状态寄存器SCS1的第5位 SCRF 进行的 不论是发送还是接收 均使用SCI数据寄存器SCDR 发送时 将要发送的数据送入SCDR即可 接收时 从SCDR中取出的即是收到的数据 串行发送A中的数BRCLR7 SCS1 SCS1 7 0 为0则等待STASCDR SCS1 7 1 可以发送数据 查询方式接收一个串行数据 接收的数据放入寄存器A中BRCLR5 SCS1 SCS1 5 0 为0则等待LDASCDR SCS1 5 1 可以取出数据 第8章4 4键盘的结构 键盘的识别方法 书P163 8 2汇编语言键盘中断模块编程实例 4 4键盘与单片机接法示例 8 2 1按键识别与键盘定义子程序 1 键值计算方法按上图的接法可以得出键值表 如下图 键值可以通过扫描法获得 由键值通过查表法编程得到定义值 书P165 2 键盘编程汇编语言子程序 第9章9 1数码管编程实例 9 1 1扫描法LED显示编程原理8段数码管一般由8个发光二极管 Llight emittingdiode LED 组成 每一个位段就是一个发光二极管 一个8段数码管分别由a b c d e f g位段 外加上一个小数点的位段h 或记为dp 组成 实物外型见下图 数码管 8段数码管可分为共阳极和共阴极两种 如下图所示 共阴极8段数码管的信号端高电平有效 只要在各个位段上加上相应的信号即可使相应的位段发光 共阳极的8段数码管则相反 在相应的位段加上低电平即可使该位段发光 b 共阳极 4连排数码管同时显示原理 4连排数码管 利用CS3 CS2 CS1 CS0控制各个数码管的位选信号 每个时刻只能让一个数码管有效 即CS3 CS2 CS1 CS0只能有一个为0 例如令CS3 0 CS2 CS1 CS0 111 则数据线上的数据体现在第一个数码管上 其他则不受影响 要让各个数据管均显示需要的数字 则必须逐个使相应位选信号为0 其他位选信号为1 并将要显示的一位数字送到数据线上 这种方法叫 位选线扫描法 虽然每个时刻只有一个数码管有效 但只要延时适当 由于人眼的 视觉暂留效应 约100ms左右 看起来则是同时显示的 4连排共阴极8段数码管 9 1 2接口实例 一个4连排共阴极8段数码管的编程实例 在硬件连接上 利用MCU的B口控制8个位段 数据 用C口的低四位控制数码管的位选信号 图中 PTB7 0分别接h a位段 PTC3 0分别过1K电阻与CS3 0位选端相接 这样PTB3就控制最左边一个数码管的显示 PTC0则控制最右边一个数码管的显示 接在位选线上的1K电阻是限流电阻 避免电流过大烧坏数码管 思考 重点 按照书P178图9 4的连接 若要使第1个数码管显示数字0 其它数码管不显示 则应该在PTC0 3 PTB0 7端口各自输出什么电平信号 思考 重点 按照书P178图9 4的连接 若要使第1个数码管显示数字0 其它数码管不显示 则应该在PTC0 3 PTB0 7端口各自输出什么电平信号 1 片选CS3 0 CS2 CS1 CS0 1即 PTC3 0 PTC2 1 0 12 输出abcdef点亮即输出高电平1 即PTB 0b00111111思考2 如果要输出数字1234 该如何显示 第9章 读LCD显示程序 第12章 MC68HC08系列的单片机可以提供多个独立的定时器 例如 GP32芯片有两个定时器 分别叫定时器1 定时器2 它们的工作原理是一的 下面的说明均以定时器1为例 HC08系列的单片机定时器的核心是一个处于不断加1的16位计数寄存器 简称为计数器 该计数器的时钟频率由外部晶振时钟 也可以是由锁相环模块得到的总线时钟 经过预定的分频因子分频得到 设定定时间隔 在定时器内部有个控制和状态寄存器 通过对它某些位的设置 就可以确定多少时间计数器加1 即定时间隔 设定溢出时间长度 在定时器内部有个预置寄存器 当计数器的值等于预置寄存器的值时 称为计数器溢出 当计数器溢出时 计数器的值被赋0 同时将计数器溢出标志等状态置于控制和状态寄存器中 定时器的计数器溢出 在定时器内部有个预置寄存器 当计数器的值等于预置寄存器的值时 称为计数器溢出 第12章 MC68HC908GP32MCU定时器基本功能及主要特征 HC08系列的单片机定时器具有输入捕捉 输出比较 PWM 脉冲输出 DMA直接存储器访问等功能 以下简要给出MC68HC908GP32的定时器的主要特征 每个定时器具有两路独立的输入捕捉 输出比较通道 带缓冲 Buffered 和不带缓冲 Unbuffered 的脉宽调制波 七种可编程选择的分频因子 预置计数 计数器停止或清除 16位输入捕捉和通道寄存器 定时器溢出中断 每路通道的输入捕捉 输出比较中断 12 2定时器模块的编程基础 书P252 D7 TOF位 定时器溢出标志位 当16位计数寄存器T1CNT中的值达到设定值 在16位预置寄存器T1MOD中 时 TOF 1 同时T1CNT 0000 D6 TOIE位 定时器溢出中断允许位 TimerOverflowInterruptEnableBit 该位用来设置是否允许定时器溢出中断 TOIE 1 允许定时器溢出中断 TOIE 0 不允许定时器溢出中断 12 2 1定时器模块的3个基本寄存器 1 T1状态和控制寄存器 Timer1StatusandControlRegister T1SC T1SC的地址 0020 定义为 第12章 1 T1状态和控制寄存器 Timer1StatusandControlRegister T1SC D5 TSTOP位 定时器计数停止位 TimerCountStopBit 该位用来控制计数器的计数停止和恢复 对该位写入1 定时器的计数寄存器将保持当前的值 停止计数 D4 TRST位 定时器复位位 TimerResetBit 向该位写入1将清除定时器的计数寄存器和设定的分频因子 该位通常为0 D3 未定义 D2 D0 PS2 PS0位 定时器分频因子选择位 TimerPrescalerSelectBits 这三位定义定时器的分频因子 记为 p 定义如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论