




已阅读5页,还剩214页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2AVR单片机原理与应用 2 1单片机电路开发过程2 2AVR单片机概述2 3Atmega128硬件体系结构2 4基于Atmega128的电路系统设计 2 1单片机电路开发过程 明确系统 设计硬件电路 编写程序 调试和仿真 下载程序 软硬件联调 功能优化 程序优化 明确系统 系统要求 利用AVR单片机来控制一个红色LED和绿色LED 电路加电后 两个LED均点亮 1s后熄灭 然后点亮绿色的LED 1s以后 绿色的LED熄灭 然后红色的LED点亮1s 最后红色的LED和绿色的LED以1Hz左右的频率闪烁 需要考虑的元器件 AVR单片机一片 DC DC转换模块 发光二极管若干 电容若干 电阻若干 晶振一个 按钮一个等 2 1单片机电路开发过程 设计硬件电路 2 1单片机电路开发过程 编写程序 2 1单片机电路开发过程 调试和仿真 编译项目 2 1单片机电路开发过程 程序下载 下载程序 2 1单片机电路开发过程 返回 2 2AVR单片机概述 ATMEL公司是世界上高级半导体产品设计 制造和行销的领先者 产品包括了微处理器 可编程逻辑器件 非易失性存储器 安全芯片 混合信号及RF射频集成电路 1997年 由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术 共同研发出RISC精简指令集的高速8位单片机 简称AVR 相对于出现较早也较为成熟的51系列单片机 AVR系列单片机片内资源更为丰富 接口也更为强大 同时由于其价格低等优势 在很多场合可以替代51系列单片机 2 2AVR单片机概述 AVR单片机特点 速度快 AVR微处理器以更快的速度运行程序 MIPS MHzAVRRISC 速度优先5个并行数据总线32个累加器单时钟周期8 16 24 32和64 bit算术操作增强的RISC指令集线性地址映射为速度而设计2时钟周期的硬件乘法器嵌入式高速存储器 MIPS即MillionInstructionPerSecond的简写 计算机每秒种执行的百万指令数 是衡量计算机速度的指标 2 2AVR单片机概述 AVR单片机特点 片上资源丰富 AVR微处理器减小PCB尺寸AVR ALLINSIDE高集成度Flash程序存储器EEPROM数据存储器CPU外部存储器接口PWMSRAM数据存储器TWI8 bit定时器硬件乘法器SPI16 bit定时器中断处理U S ART实时时钟上电复位10 bitADC输入捕捉看门狗定时器掉电检测输出比较片内振荡器模拟比较器上拉电阻 2 2AVR单片机概述 AVR单片机特点 代码更少 AVR微处理器减小你的程序代码AVRRISC 为最小代码而设计5个并行数据总线32个累加器4个数据 堆栈指针8 16 24 32和64 bit算术操作增强的RISC指令集线性地址影射适应ANSIC和汇编相比付出代价极小指令集由编译专家建构和调整 2 2AVR单片机概述 AVR单片机特点 代码更少 AVR微处理器降低系统功耗每一个电子都被考虑在内 单时钟周期执行5个并行数据总线6种MCU睡眠模式最小幅度振荡器0泄漏输入1 8 6 0V工作电压 2 2AVR单片机概述 AVR单片机特点 功耗更低 2 2AVR单片机概述 AVR单片机特点 可选择型号种类多 MEGAAVRATmegaxxx 16KB 128KB 针对需要大程序容量的复杂应用ClassicAVRAT90Sxxxx 1KB 8KB 针对需要大吞吐量 低功耗和中等程序容量的应用TinyAVRATtinyxx 1KB 2KB 针对需要低价格的低端8位MCU市场 2 2AVR单片机概述 AVR单片机特点 可选择型号种类多 存储器大小 性能 1KB 2KB 1KB 8KB 16KB 128KB 完全兼容 低功耗mega8 新产品 已淘汰 主流产品 未来产品 90S2313 90S2323 43 tiny28 90S8535 mega161 tiny15 90S4433 mega128 mega8 90S8515 tiny26 mega32 mega8515 mega8535 tiny13 mega169 mega162 mega64 tiny2313 mega256 mega16 90S1200 tiny11 12 mega329 CANAVR mega103 2 2AVR单片机概述 AVR单片机产品更新换代 AVR的中低档Tiny与AT90S系列产品 2 2AVR单片机概述 AVR的中高档Mega系列产品 2 2AVR单片机概述 ATtiny10 11 12特点 2 2AVR单片机概述 ATtiny10 11 12特点 2 2AVR单片机概述 ATtiny10 11 12特点 2 2AVR单片机概述 ATtiny10 11 12特点 2 2AVR单片机概述 AT90S1200单片机特点 2 2AVR单片机概述 AT90S1200单片机特点 2 2AVR单片机概述 AT90S8515单片机特点 AT90S8515单片机特点 2 2AVR单片机概述 AT90S8515单片机特点 2 2AVR单片机概述 ATmega8单片机特点 2 2AVR单片机概述 2 2AVR单片机概述 ATmega8单片机特点 2 2AVR单片机概述 ATmega8单片机特点 引脚配置 2 2AVR单片机概述 ATmega8单片机特点 返回 2 3Atmega128硬件体系结构 Atmega128芯片特性 Atmega128引脚配置及说明 Atmega128的存储器组织 Atmega128的重要寄存器介绍 Atmega128基本配置电路 Atmega128的I O端口 2 3Atmega128硬件体系结构 Atmega128的中断处理 Atmega128的定时 计数器 Atmega128的USART Atmega128的TWI I2C 2 3Atmega128硬件体系结构 Atmega128芯片特性 高性能 低功耗的AVR8位微处理器先进的RISC结构 133条指令 大多数可以在一个时钟周期内完成 32x8通用工作寄存器 外设控制寄存器 全静态工作 工作于16MHz时性能高达16MIPS 只需两个时钟周期的硬件乘法器 2 3Atmega128硬件体系结构 Atmega128芯片特性 非易失性的程序和数据存储器 128K字节的系统内可编程Flash寿命 10 000次写 擦除周期 4K字节的EEPROM寿命 100 000次写 擦除周期 4K字节的内部SRAM 多达64K字节的优化的外部存储器空间 可以对锁定位进行编程以实现软件加密 可以通过SPI实现系统内编程 2 3Atmega128硬件体系结构 Atmega128芯片特性 JTAG接口 与IEEE1149 1标准兼容 遵循JTAG标准的边界扫描功能 支持扩展的片内调试 通过JTAG接口实现对Flash EEPROM 熔丝位和锁定位的编程 2 3Atmega128硬件体系结构 Atmega128芯片特性 外设特点 两个具有独立的预分频器和比较器功能的8位定时器 计数器 两个具有预分频器 比较功能和捕捉功能的16位定时器 计数器 具有独立预分频器的实时时钟计数器 两路8位PWM 输出比较调制器 6路分辨率可编程 2到16位 的PWM 2 3Atmega128硬件体系结构 Atmega128芯片特性 外设特点 8路10位ADC8个单端通道 7个差分通道 2个具有可编程增益 1x 10 x 或200 x 的差分通道 面向字节的两线接口 两个可编程的串行USART 可工作于主机 从机模式的SPI串行接口 具有独立片内振荡器的可编程看门狗定时器 片内模拟比较器 2 3Atmega128硬件体系结构 Atmega128芯片特性 特殊的处理器特点 上电复位以及可编程的掉电检测 片内经过标定的RC振荡器 片内 片外中断源 6种睡眠模式 空闲模式 ADC噪声抑制模式 省电模式 掉电模式 Standby 2 3Atmega128硬件体系结构 Atmega128芯片特性 模式以及扩展的Standby模式 可以通过软件进行选择的时钟频率 通过熔丝位可以选择ATmega103兼容模式 全局上拉禁止功能I O和封装 53个可编程I O口线 64引脚TQFP与64引脚MLF封装 2 3Atmega128硬件体系结构 Atmega128芯片特性 工作电压 2 7 5 5VATmega128L 4 5 5 5VATmega128速度等级 0 8MHzATmega128L 0 16MHzATmega128 2 3Atmega128硬件体系结构 Atmega128芯片特性 返回 Atmega128引脚配置及说明 2 3Atmega128硬件体系结构 Atmega128引脚配置及说明 VCC 数字电路的电源 GND 地 端口A PA7 PA0 端口A为8位双向I O口 并具有可编程的内部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和吸收大电流 作为输入使用时 若内部上拉电阻使能 则端口被外部电路拉低时将输出电流 复位发生时端口A为三态 端口B PB7 PB0 端口B为8位双向I O口 并具有可编程的内部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和吸收大电流 作为输入使用时 若内部上拉电阻使能 则端口被外部电路拉低时将输出电流 复位发生时端口B为三态 2 3Atmega128硬件体系结构 Atmega128引脚配置及说明 端口C PC7 PC0 端口C为8位双向I O口 并具有可编程的内部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和吸收大电流 作为输入使用时 若内部上拉电阻使能 则端口被外部电路拉低时将输出电流 复位发生时端口C为三态 端口D PD7 PD0 端口D为8位双向I O口 并具有可编程的内部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和吸收大电流 作为输入使用时 若内部上拉电阻使能 则端口被外部电路拉低时将输出电流 复位发生时端口D为三态 2 3Atmega128硬件体系结构 Atmega128引脚配置及说明 端口F PF7 PF0 端口F为ADC的模拟输入引脚 如果不作为ADC的模拟输入 端口F可以作为8位双向I O口 并具有可编程的内部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和吸收大电流 作为输入使用时 若内部上拉电阻使能 则端口被外部电路拉低时将输出电流 复位发生时端口F为三态 如果使能了JTAG接口 则复位发生时引脚PF7 TDI PF5 TMS 和PF4 TCK 的上拉电阻使能 端口F也可以作为JTAG接口 端口G PG4 PG0 端口G为5位双向I O口 并具有可编程的内部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和吸收大电流 作为输入使用时 若内部上拉电阻使能 则端口被外部电路拉低时将输出电流 复位发生时端口G为三态 2 3Atmega128硬件体系结构 Atmega128引脚配置及说明 RESET 复位输入引脚 超过最小门限时间的低电平将引起系统复位 低于门限时间的脉冲不能保证可靠复位 XTAL1 反向振荡器放大器及片内时钟操作电路的输入 XTAL2 反向振荡器放大器的输出 AVCC AVCC为端口F以及ADC转换器的电源 需要与VCC相连接 即使没有使用ADC也应该如此 使用ADC时应该通过一个低通滤波器与VCC连接 AREF AREF为ADC的模拟基准输入引脚 PEN PEN是SPI串行下载的使能引脚 在上电复位时保持PEN为低电平将使器件进入SPI串行下载模式 在正常工作过程中PEN引脚没有其他功能 返回 2 3Atmega128硬件体系结构 Atmega128基本配置电路 Atmega128基本配置电路 电源模块 任何电路控制系统 首要解决的问题是电源问题 对于单片机控制系统而言 电源系统的稳定性决定着控制系统的稳定性 也是系统能否可靠工作的前提条件 如何设计一个单片机控制系统的电源 这是我们设计过程中首要解决的问题 Atmega128基本配置电路 复位电路 复位电路可以由简单的RC电路构成 但在对稳定性有较高要求的应用场合 一般要采用专用的复位芯片 如MAX809 810等 这里给出常见的RC复位电路 可以满足一般应用的需要 系统上电复位 在系统上电时 通过电阻R1向电容C1充电 当C1两端的电压未达到高电平的门限电压时 Reset端输出为低电平 系统处于复位状态 当C1两端的电压达到高电平的门限电压时 Reset端输出为高电平 系统进入正常工作状态 手动复位 当按下复位按钮S1时 C1两端的电荷被放掉 Reset端输出为低电平 系统进入复位状态 再重复以上的充电过程 系统进入正常工作状态 Atmega128基本配置电路 复位电路 MAX809是一种单一功能的微处理器复位芯片 用于监控微控制器和其他逻辑系统的电源电压 它可以在上电 掉电和节电情况下向微控制器提供复位信号 当电源电压低于预设的门槛电压时 器件会发出复位信号 直到在一段时间内电源电压又恢复到高于门槛电压为止 从图中可以看出 MAX809是低电平有效的复位器件 而同类的MAX810是高电平有效的复位输出 MAX809复位电路 Atmega128基本配置电路 上电复位 当电源电压低于上电复位门限 VPOT 时 MCU复位 外部复位 当引脚RESET上的低电平持续时间大于最小脉冲宽度时MCU复位 看门狗复位 当看门狗使能并且看门狗定时器超时时复位发生 掉电检测复位 当掉电检测复位功能使能 且电源电压低于掉电检测复位门限 VBOT 时MCU即复位 JTAGAVR复位 当复位寄存器为1时MCU即复位 ATmega128有5个复位源 Atmega128基本配置电路 ATmega128复位逻辑 Atmega128基本配置电路 ATmega128复位特性 Atmega128基本配置电路 上电复位时序 MCU启动过程 RESET连接到VCC Atmega128基本配置电路 上电复位时序 MCU启动过程 RESET由外电路控制 Atmega128基本配置电路 外部复位时序 工作过程中发生外部复位 看门狗定时器溢出时将产生持续时间为1个CK周期的复位脉冲 在脉冲的下降沿 延时定时器开始对tTOUT记数 Atmega128基本配置电路 看门狗复位时序 Atmega128基本配置电路 看门狗定时器 看门狗定时器的设定可以调解看门狗复位的时间间隔 看门狗定时器由独立的1Mhz片内振荡器驱动 不同供电电压 振荡器频率不同 通过设置看门狗定时器的预分频器可以调节看门狗复位的时间间隔 看门狗复位指令WDR用来复位看门狗定时器 此外 禁止看门狗定时器或发生复位时定时器也被复位 复位时间有8个选项 如果没有及时复位定时器 一旦时间超过复位周期 ATmega128就复位 并执行复位向量指向的程序 看门狗定时器预分频器选项 Atmega128基本配置电路 看门狗定时器 Atmega128基本配置电路 看门狗定时器 要实现看门狗定时器的功能 必须了解看门狗定时器控制寄存器 WDTCR Bits7 5 Res 保留保留位 读操作返回值为零 Atmega128基本配置电路 看门狗定时器 Bit4 WDCE 看门狗修改使能清零WDE时必须先置位WDCE 否则不能禁止看门狗 一旦置位 硬件将在紧接的4个时钟周期之后将其清零 要实现看门狗定时器的功能 必须了解看门狗定时器控制寄存器 WDTCR Atmega128基本配置电路 看门狗定时器 Bit3 WDE 看门狗使能WDE为 1 时 看门狗使能 否则看门狗将被禁止 只有在WDCE为 1 时WDE才能清零 以下为关闭看门狗的步骤 1 在同一个指令内对WDCE和WDE写 1 即使WDE已经为 1 2 在紧接的4个时钟周期之内对WDE写 0 Atmega128基本配置电路 看门狗定时器 Bits2 0 WDP2 WDP1 WDP0 看门狗定时器预分频器2 1 和0 Atmega128基本配置电路 软件设置看门狗定时器 Atmega128基本配置电路 时钟电路 所谓时钟 实际上就是以一个特定频率连续不断出现的方波 单片机在每一个方波的上升沿执行指令 一条指令如果能在一个时钟周期 即方波的一个周期 内执行完 成为 单周期指令 否则称为 多周期指令 Atmega128基本配置电路 时钟电路 应当注意的是 这里所说的 一个指令 指的是一条汇编语句 而不是C语句 一条C语句可能会被编译成若干条汇编语句 而不同的C编译器编译的结果可能是不同的 即便是同一个C编译器 在不同条件下对同一条C语句进行编译的结果也可能是不同的 这就意味着 无法预知一条C语句将占用多少个时钟周期 即运行多长时间 这就是用C语言对单片机进行编程的缺点 在某些对时序要求极高的情况下 人们通常采用汇编语言或者将C语言与汇编语言混合使用 但对于初学者而言 用C语言对单片机进行编程简单易学 且足以满足大部分的需要 Atmega128基本配置电路 时钟电路 Atmega128基本配置电路 时钟电路 Atmega128基本配置电路 时钟电路 程序内部显示时钟 软件设置时钟频率 芯片有如下几种通过熔丝位选择的时钟源 Atmega128基本配置电路 时钟电路 Atmega128基本配置电路 时钟电路 AVR系列单片机在仿真调试之前 首先必须对AVR的熔丝位和锁定位进行配置 如果配置不当 则可能造成单片机不能正常工作 严重时可能导致单片机死锁 因此 对单片机熔丝位和锁定位的正确配置显得尤为重要 熔丝位是对单片机具体功能和工作模式的限定 其正确配置与否直接影响到单片机能否正常工作 锁定位是对单片机的程序和数据进行加密 以防止单片机中的程序和数据被读出或写入 在进行配置时 一般先配置熔丝位 再配置锁定位 ATmega128的熔丝位共有3个字节 熔丝位扩展字节 熔丝位高字节和熔丝位低字节 Atmega128基本配置电路 时钟电路 软件设置熔丝位 Atmega128基本配置电路 下载电路 当RESET位低电平时 可以通过串行SPI总线对Flash及EEPROM进行编程 串行接口包括SCK MOSI 输入 及MISO 输出 RESET为低之后 应在执行编程 擦除操作之前执行编程允许指令 不是所有的器件都使用SPI引脚专用于内部SPI接口 注意 在串行载入的说明中 MOSI与MISO分别描述连续数据的输入与输出 在ATmega128中 这些引脚映射为PDI与PDO SPI串行编程及JTAG编程 Atmega128基本配置电路 下载电路 Atmega128SPI串行编程引脚映射 尽管SPI编程接口重用SPII O模块 但其中有一点不同 MOSI MISO引脚映射到SPII O模块的PB2与PB3在编程接口并不使用 而PE0与PE1用来传递数据 Atmega128基本配置电路 下载电路 通过JTAG接口进行编程需要控制4个JTAG专用引脚 TCK TMS TDI及TDO reset及时钟引脚不用控制 JTAG JointTestActionGroup 联合测试行动小组 是一种国际标准测试协议 IEEE1149 1兼容 主要用于芯片内部测试 现在多数的高级器件都支持JTAG协议 如MCU DSP FPGA器件等 JTAG编程方式是在线编程 传统生产流程中先对芯片进行预编程现再装到板上因此而改变 简化的流程为先固定器件到电路板上 再用JTAG编程 从而大大加快工程进度 Atmega128基本配置电路 下载电路 返回 2 3Atmega128硬件体系结构 Atmega128的CPU内核结构 CPU的主要任务是保证程序的正确执行 因此它必须能够访问存储器 执行运算 控制外设以及处理中断 为了得到最大程度的性能以及并行性 AVR采用了Harvard结构 具有独立的数据和程序总线 程序存储器的指令通过一级流水线运行 CPU在执行一条指令的同时读取下一条指令 在本文称为预取 这个概念实现了指令的单时钟周期运行 程序存储器为可以在线编程的FLASH 快速访问寄存器文件包括32个8位通用工作寄存器 而且都可以在一个时钟周期内访问 从而实现单时钟周期的ALU操作 在典型的ALU操作过程中 两个位于寄存器文件中的操作数同时被访问 然后执行相应的运算 结果再被送回寄存器文件 整个过程仅需要一个时钟周期 Atmega128的CPU内核结构 2 3Atmega128硬件体系结构 Atmega128的存储器组织 Flash程序存储器 SRAM数据存储器 EEPROM数据存储器 Flash程序存储器 Atmega128的存储器组织 ATmega128具有128K字节的在线编程Flash 因为所有的AVR指令为16位或32位 故尔FLASH组织成64Kx16的形式 考虑到软件安全性 Flash程序存储器分为两个区 引导程序区和应用程序区 Flash存储器至少可以擦写10 000次 ATmega128的程序计数器PC为16位 因此可以寻址64K的程序存储器 可利用SPI或JTAG接口实现对Flash的串行下载 Flash程序存储器 Atmega128的存储器组织 一般而言 C程序中的变量可以选择存放在SRAM或者EEPROM中 而常量可以选择放在SRAM或者Flash中 标准C的变量类型一般都适用于单片机的C语言 如char float double unsignedint等 CodeVisionAVRC编译器中的数据类型如下表所示 AVR单片机中的Flash本来是用作程序存储空间的 但可以利用其存储容量大的特点 在剩余足够空间的前提下 将一些在使用中没有必要改变的数值或者字符串等存放在Flash中 当然 也可以将其存放在SRAM中 但Flash比SRAM的空间大好几倍 此外这些数值或字符串在使用过程中没有必要改动 存放在Flash中会比存放在SRAM更合适 CodeVisionAVRC编译器对于用户没有指定只能保存在Flash中的字符串 在启动时将字符串从程序存储区复制到数据存储区 Char ptr to sram thisisplacedinSRAM 上面例子中没有指定字符串只存储于Flash 因此启动时会将该字符串复制到数据存储空间 Charflash ptr to flash thisisplacedinFlash 在上例中 用户使用了flash关键字 因此字符串只存储于Flash空间 Flash程序存储器 Atmega128的存储器组织 Flash程序存储器 Atmega128的存储器组织 Atmega128的存储器组织 SRAM数据存储器 ATmega128支持两种不同的SRAM配置 普通模式 兼容模式 EEPROM数据存储器 Atmega128的存储器组织 ATmega128包含4K字节的EEPROM 它是作为一个独立的数据空间而存在的 可以按字节读写 EEPROM的寿命至少为100 000次 擦除 EEPROM的访问由地址寄存器 数据寄存器和控制寄存器决定 EEPROM的访问寄存器位于I O空间 当执行EEPROM读操作时 CPU会停止工作4个周期 然后再执行后续指令 当执行EEPROM写操作时 CPU会停止工作2个周期 然后再执行后续指令 CodeVisionAVRC编译器中 可以用eeprom关键字将全局变量分配至EEPROM中 如 eeprominta 也可以在定义时对变量初始化 如 eeprominta 1 CodeVisionAVRC编译器中还可以将数组 字符串 结构体分配至EEPROM中 如 eepromchara 4 0 1 2 3 数组Chareeprom ptr to eeprom thisisplacedinEEPROM 字符串Eepromstructa charb intc chare 15 f 在CodeVisionAVRC编译器中可以直接访问EEPROM中的全局变量 与访问SRAM中的数据方式相同 EEPROM数据存储器 Atmega128的存储器组织 EEPROM数据存储器 Atmega128的存储器组织 EEPROM数据存储器 Bits15 12 Res 保留保留位 读操作返回值为零 在写数据时要写入0以保证与未来产品的兼容 Bits11 0 EEAR11 0 EEPROM地址EEARH和EEARL指定了4K字节的EEPROM空间 EEPROM的地址是线性的 从0到4096 EEAR的初始值没有定义 在访问EEPROM之前必须为其赋予正确的数据 EEPROM数据存储器 EEPROM数据寄存器 EEDR Bits7 0 EEDR7 0 EEPROM数据对于EEPROM写操作 EEDR是需要写到EEAR单元的数据 对于EEPROM读操作 EEDR是从地址EEAR读取的数据 EEPROM数据存储器 EEPROM控制寄存器 EECR Bits7 4 Res 保留保留位 读操作返回值为零 Bit3 EERIE EEPROM就绪中断使能若SREG的I为 1 则置位EERIE使能EEPROM就绪中断 清零EERIE则禁止此中断 当EEWE清零时EEPROM就绪中断即可发生 Bit2 EEMWE EEPROM主机写使能EEMWE决定设置EEWE为 1 是否可以启动EEPROM写操作 当EEMWE为 1 时 在4个时钟周期内置位EEWE将把数据写入EEPROM的指定地址 若EEMWE为 0 则EEWE不起作用 EEMWE置位后4个周期 硬件对其清零 EEPROM数据存储器 EEPROM控制寄存器 EECR Bit1 EEWE EEPROM写使能当EEPROM数据和地址设置好之后 需置位EEWE以便将数据写入EEPROM 此时EEMWE必须置位 否则EEPROM写操作将不会发生 Bit0 EERE EEPROM读使能当EEPROM地址设置好之后 需置位EERE以便将数据读入EEAR EEPROM数据的读取只需要一条指令 且无需等待 读取EEPROM时CPU要停止4个时钟周期 用户在读取EEPROM时应该检测EEWE 如果一个写操作正在进行 就无法读取EEPROM 也无法改变寄存器EEAR voidEEPROMwrite intlocation unsignedchardatabyte unsignedcharsavedSREG EEAR location setaddressEEDR databyte setdatasavedSREG SREG keepsettingsoitcanberestoredCLI disableinterruptsEECR BIT EEMWE set writeenable bitEECR BIT EEWE set write bitSREG savedSREG restoreSREGEEAR 0 EEPROM数据存储器 向EEPROM中写数据程序 unsignedcharEEPROMread intlocation EEAR location setaddressEECR BIT EERE set readenable bitEEAR 0 return EEDR EEPROM数据存储器 从EEPROM中读数据程序 EEPROM数据存储器 返回 2 3Atmega128硬件体系结构 Atmega128的重要寄存器介绍 MCU控制寄存器 MCUCR Bit7 SRE 外部SRAM XMEM使能SRE为 1 时外部存储器接口使能 引脚AD7 0 A15 8 ALE WR和RD工作于第二功能 且自动按照要求配置端口方向寄存器 SRE清零将使外部SRAM无效 相关端口可以当作普通I O口使用 Bit6 SRW10 等待状态选择位对于ATmega103兼容模式 SRW10写 1 将使能等待状态 在读 写过程中插入一个时钟周期 2 3Atmega128硬件体系结构 Atmega128的重要寄存器介绍 MCU控制寄存器 MCUCR Bit5 SE 睡眠使能为了使MCU在执行SLEEP指令后进入睡眠模式 SE必须置位 为了确保进入睡眠模式是程序员的有意行为 建议仅在SLEEP指令的前一条指令置位SE 一旦唤醒立即清除SE Bits4 2 SM2 0 睡眠模式选择位 2 3Atmega128硬件体系结构 Atmega128的重要寄存器介绍 MCU控制寄存器 MCUCR 睡眠模式选择 MCU控制寄存器包含了电源管理的控制位 睡眠模式可以使应用程序关闭MCU中没有使用的模块 从而降低功耗 AVR具有不同的睡眠模式 允许用户根据自己的应用要求实施剪裁 进入睡眠模式的条件是置位寄存器MCUCR的SE 然后执行SLEEP指令 具体哪一种模式 空闲模式 ADC噪声抑制模式 掉电模式 省电模式 Standby模式和扩展Standby模式 由MCUCR的SM2 SM1和SM0决定 Atmega128的重要寄存器介绍 MCU控制寄存器 MCUCR Atmega128的重要寄存器介绍 MCU控制寄存器 MCUCR Bit1 IVSEL 中断向量选择当IVSEL为 0 时 中断向量位于Flash存储器的起始地址 当IVSEL为 1 时 中断向量转移到Boot区的起始地址 实际的Boot区起始地址由熔丝位BOOTSZ确定 Bit0 IVCE 中断向量修改使能改变IVSEL时IVCE必须置位 在IVCE或IVSEL写操作之后4个时钟周期 IVCE被硬件清零 如前面所述 置位IVCE将禁止中断 Atmega128的重要寄存器介绍 MCU控制和状态寄存器 MCUCSR Bit7 JTD JTAG接口禁用当这一位为 0 且JTAG使能熔丝位JTAGEN被编程时JTAG接口使能 否则JTAG接口功能禁止 若JTAG接口未与其他JTAG电路连接 JTD位应置为 1 以避免JTAG接口TDO引脚的静态电流 Bit4 JTRF JTAG复位标志若复位是由JTAG复位寄存器不为 0 且执行了的AVR RESET指令引发的 JTRF置位 通过写入 0 或上电复位的方法可以将其清零 Atmega128的重要寄存器介绍 MCU控制和状态寄存器 MCUCSR Bit3 WDRF 看门狗复位标志看门狗复位发生时置位 上电复位将使其清零 也可以通过写 0 来清除 Bit2 BORF 掉电检测复位标志掉电检测复位发生时置位 上电复位将使其清零 也可以通过写 0 来清除 Bit1 EXTRF 外部复位标志外部复位发生时置位 上电复位将使其清零 也可以通过写 0 来清除 Bit0 PORF 上电复位标志上电复位发生时置位 只能通过写 0 来清除 Atmega128的重要寄存器介绍 状态寄存器 SREG 状态寄存器包含了最近执行的算术指令的结果信息 这些信息可以用来改变程序流程以实现条件操作 状态寄存器的内容只有在ALU运算结束后才会更新 这样 在多数情况下就不需要专门的比较指令了 从而使系统运行更快速 代码效率更高 在进入中断例程时状态寄存器不会自动保存 中断返回时也不会自动恢复 这些工作需要软件来处理 Atmega128的重要寄存器介绍 状态寄存器 SREG Bit7 I 全局中断使能置位时使能全局中断 单独的中断使能由其他独立的控制寄存器控制 如果I清零 则不论单独中断标志置位与否 都不会产生中断 任意一个中断发生后I清零 而执行RETI指令后置位以使能中断 I也可以通过SEI和CLI指令来置位和清零 Bit6 T 位拷贝存储位拷贝指令BLD和BST利用T作为目的或源地址 BST把寄存器的某一位拷贝到T 而BLD把T拷贝到寄存器的某一位 Atmega128的重要寄存器介绍 状态寄存器 SREG Bit5 H 半进位标志半进位标志H表示算术操作发生了半进位 此标志对于BCD运算非常有用 Bit4 S 符号位 S N VS为负数标志N与2的补码溢出标志V的异或 Bit3 V 2的补码溢出标志支持2的补码运算 Atmega128的重要寄存器介绍 状态寄存器 SREG Bit2 N 负数标志表明算术或逻辑操作结果为负 Bit1 Z 零标志表明算术或逻辑操作结果为零 Bit0 C 进位标志表明算术或逻辑操作发生了进位 返回 Atmega128的I O端口 作为通用数字I O使用时 所有AVRI O端口都具有真正的读 修改 写功能 输出缓冲器具有对称的驱动能力 可以输出或吸收大电流 直接驱动LED 所有的端口引脚都具有与电压无关的上拉电阻 每个端口都有三个I O存储器地址 数据寄存器 PORTx数据方向寄存器 DDRx端口输入引脚 PINx数据寄存器和数据方向寄存器为读 写寄存器 而端口输入引脚为只读寄存器 当寄存器SFIOR的上拉禁止位PUD置位时所有端口的全部引脚的上拉电阻都被禁止 Atmega128的I O端口 端口A数据寄存器 PORTA Atmega128的I O端口 端口A数据方向寄存器 DDRA 端口A输入引脚地址 PINA 端口G数据寄存器 PORTG Atmega128的I O端口 端口G数据方向寄存器 DDRG 端口G输入引脚地址 PING Atmega128的I O端口 特殊功能IO寄存器 SFIOR Bit2 PUD 禁止上拉电阻置位时 即使将寄存器DDxn和PORTxn配置为使能上拉电阻 DDxn PORTxn 0b01 I O端口的上拉电阻也被禁止 Atmega128的I O端口 端口引脚配置 不论如何配置DDxn 都可以通过读取PINxn寄存器来获得引脚电平 如果有引脚未被使用 建议给这些引脚赋予一个确定电平 Atmega128的I O端口 端口引脚配置 最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻 但要注意的是复位时上拉电阻将被禁用 如果复位时的功耗也有严格要求则建议使用外部上拉或下拉电阻 不推荐直接将未用引脚与VCC或GND连接 因为这样可能会在引脚偶然作为输出时出现冲击电流 Atmega128的I O端口 端口A的第二功能 Atmega128的I O端口 端口B的第二功能 Atmega128的I O端口 端口C的第二功能 端口引脚第二功能PC7A15 为外部存储器接口的地址高字节 PC6A14 为外部存储器接口的地址高字节 PC5A13 为外部存储器接口的地址高字节 PC4A12 为外部存储器接口的地址高字节 PC3A11 为外部存储器接口的地址高字节 PC2A10 为外部存储器接口的地址高字节 PC1A9 为外部存储器接口的地址高字节 PC0A8 为外部存储器接口的地址高字节 Atmega128的I O端口 端口D的第二功能 Atmega128的I O端口 端口E的第二功能 Atmega128的I O端口 端口F的第二功能 Atmega128的I O端口 端口G的第二功能 Atmega128的I O端口 利用I O端口实现八段数码管输出显示由八段LED构成各LED阴极或阳极并在一起 称为 位选线 共阴 共阳其余8个引脚各自引出 称为 段选线 各段可以分别控制 Atmega128的I O端口 共阴极 共阳极数码管段码表 Atmega128的I O端口 利用I O端口点亮四个7段数码管 返回 Atmega128的中断处理 2 3Atmega128硬件体系结构 在程序运行期间 发生非预期的紧急事件通常是为了避免查询方式的程序设计用得最多的是外部中断与定时器中断外部中断 按键程序定时器中断 定时与循环扫描等应用场合中断服务程序中断发生时 主程序暂停 跳转到中断服务程序 称为 响应中断 执行完毕后返回主程序继续运行 中断的概念 Atmega128的中断处理 中断属于一种对事件的实时处理过程 中断源可能随时停止单片机当前正在处理的工作 转而去处理中断事件 待中断时间处理完毕之后 再返回原来工作的断点处 继续原来的工作 对于单片机的中断系统 需要了解这几个概念 中断源 中断信号 中断向量 中断优先级 中断嵌套 中断控制 屏蔽 中断响应条件 中断响应过程 中断服务程序 如何很好的理解中断概念 Atmega128的中断处理 中断源的理解 中断源是指能够向单片机发出中断请求信号的部件和设备 对于单片机来讲 往往存在多个中断源 中断源一般可分为内部中断源和外部中断源 单片机内部集成的许多功能模块 如定时器 串行通讯口 模 数转换器等 它们在正常工作时往往无需CPU参与 而当处于某种状态或达到某个规定值需要程序控制时 会通过发出中断请求信号通知CPU 这一类的中断源位于单片机内部 称作内部中断源 内部中断源在中断条件成立时 一般通过片内硬件会自动产生中断请求信号 无须用户介入 使用方便 内部中断是CPU管理片内资源的一种高效的途径 系统中的外部设备也可以用作中断源 这时要求它们能够产生一个中断信号 通常是高 低 电平或者电平跳变的上升 下降 沿 送到单片机的外部中断请求引脚供CPU检测 这些中断源位于单片机外部 称为外部中断源 通常用作外部中断源的有输入输出设备 控制对象 以及故障源等 Atmega128的中断处理 中断信号的理解 中断信号是指内部或外部中断源产生的中断申请信号 这个中断信号往往是电信号的某种变化形式 通常有以下几种类型 脉冲的上升沿或下降沿 上升沿触发型或下降沿触发型 高电平或低电平 电平触发型 电平的变化 状态变化触发型 对于单片机来讲 不同的中断源 产生什么类型的中断信号能够触发申请中断 取决于芯片内部的硬件结构 而且通常也可以通过用户的软件来设定 单片机的硬件系统会自动对这些中断信号进行检测 一旦检测到规定的信号出现 将会把相应的中断标志位置 1 在I O空间的控制或状态寄存器中 通知CPU进行处理 Atmega128的中断处理 中断向量的理解 中断源发出的请求信号被CPU检测到之后 如果单片机的中断控制系统允许响应中断 CPU会自动转移 执行一个固定的程序空间地址中的指令 这个固定的地址称作中断入口地址 也叫做中断向量 中断入口地址往往是由单片机内部硬件决定的 一个单片机有若干个中断源 每个中断源都有着自己的中断向量 这些中断向量一般在程序存储空间中占用一个连续的地址空间段 称为中断向量区 由于一个中断向量通常仅占几个字节或一条指令的长度 所以在中断向量区一般不放置中断服务程序的 中断服务程序一般放置在程序存储器的其它地方 而在中断向量处放置一条跳转到中断服务程序的指令 这样 CPU响应中断后 首先自动转向执行中断向量中的转移指令 再跳转执行中断服务程序 Atmega128的中断处理 中断优先级的理解 单片机系统一般有多个中断源 当某一时刻同时有多个中断产生时 单片机该如何处理呢 这就有了中断优先级的概念 通常 单片机可以接收若干个中断源发出的中断请求 但在同一时刻 MCU只能响应这些中断请求中的其中一个 为了避免MCU同时响应多个中断请求带来的混乱 在单片机中为每一个中断源赋予一个特定的中断优先级 一旦有多个中断请求信号 MCU先响应中断优先级高的中断请求 然后再逐次响应优先级次一级的中断 中断优先级也反映了各个中断源的重要程度 同时也是分析中断嵌套的基础 Atmega128的中断处理 中断优先级的理解 对于中断优先级的确定 通常是由单片机的硬件结构规定的 一般的确定规则方式为两种 某中断对应的中断向量地址越小 其中断优先级越高 硬件确定方式 通过软件对中断控制寄存器的设定 改变中断的优先级 用户软件可设置方式 注意 AVR不支持 实际上 MCU在两种情况下需要对中断的优先级进行判断 第一种情况为同时有两 多 个中断源申请中断 在这种情况下 MCU首先响应中断优先级最高的那个中断 而将其它的中断挂起 待优先级最高的中断服务程序执行完成返回后 再顺序响应优先级较低的中断 第二种情况是当MCU正处于响应一个中断的过程中 如已经响应了某个中断 正在执行为其服务的中断程序时 此时又产生一个其它的中断申请 这种情况也称作中断嵌套 Atmega128的中断处理 中断嵌套的理解 对于中断嵌套的处理 不同的单片机处理的方式是不同的 应根据所使用单片机的特点正确实现中断嵌套的处理 按照通常的规则 当MCU正在响应一个中断B的过程中 又产生一个其它的中断A申请时 如果这个新产生中断A的优先级比正在响应的中断B优先级高的话 就应该暂停当前的中断B的处理 转入响应高优先级的中断A 待高优先级中断A处理完成后 再返回原来的中断B的处理过程 如果新产生中断A的优先级比正在处理中断B的优先级低 或相同 则应在处理完当前的中断B后 再响应那个后产生的中断A申请 如果中断A条件还成立的话 Atmega128的中断处理 中断嵌套的理解 一些单片机 如8051结构 的硬件能够自动实现中断嵌套的处理 既单片机内部的硬件电路能够识别中断的优先级 并根据优先级的高低 自动完成对高优先级中断的优先响应 实现中断的嵌套处理 而另一类的单片机 如我们正在学习的AVR单片机 其硬件系统不支持自动实现中断嵌套的处理 如果在系统设计中 必须使用中断嵌套处理 则需要由用户编写相应的程序 通过软件设置来实现中断嵌套的功能 Atmega128的中断处理 中断控制 屏蔽 的理解 单片机拥有众多中断源 但在某一具体设计中通常并不需要使用所有的中断源 或者在系统软件运行的某些关键阶段不允许中断打断现行程序的运行 这就需要一套软件可控制的中断屏蔽 允许系统 在单片机的I O寄存器中 通常存在一些特殊的标志位用于控制开放或关闭 屏蔽 MCU对中断响应处理 这些标志称为中断屏蔽标志位或中断允许控制位 用户程序可以改变这些标志位的设置 在需要的时候允许MCU响应中断 而在不需要的时候则将中断请求信号屏蔽 注意 不是取消 此时尽管产生了中断请求信号 MCU也不会响应中断请求 Atmega128的中断处理 中断控制 屏蔽 的理解 从对中断源的控制角度讲 中断源还可分成2类 非屏蔽中断 非屏蔽中断是指MCU对中断源产生的中断请求信号是不能屏蔽的 也就是说一旦发生中断请求 MCU肯定响应该中断 在单片机中 外部RESET引脚产生的复位信号 就是一个非屏蔽的中断 可屏蔽中断 可屏蔽中断是指用户程序可以通过中断屏蔽控制标志对中断源产生的中断请求信号进行控制 既允许或禁止MCU对该中断的响应 在用户程序中 可以预先执行一条允许中断的指令 这样一旦发生中断请求 MCU就能够响应中断 反之 用户程序也可以预先执行一条中断禁止 屏蔽 指令 使MCU不响应中断请求 因此 可屏蔽中断的中断请求能否可以被MCU响应 最终是由用户程序来控制的 在单片机中 大多数的中断都是可屏蔽的中断 Atmega128的中断处理 中断响应条件的理解 在单片机中 对应每一个中断源都有一个相应的中断标志位 该中断标志位将占据中断控制寄存器中的一位 当单片机检测到某一中断源产生符合条件的中断信号时 其硬件会自动将该中断源对应的中断标志位置 1 这就意味着有中断信号产生了 向MCU申请中断 但中断标志位的置 1 并不代表MCU一定响应该中断 为了合理控制中断响应 在单片机内部还有相关的用于中断控制的中断允许标志位 最重要的一个中断允许标志位是全局中断允许标志位 当该标志位为 0 表示禁止MCU响应所有的可屏蔽中断的响应 此时不管有否中断产生 MCU不会响应任何的中断请求 只有全局中断允许标志位为 1 才允许单片机响应中断 Atmega128的中断处理 中断响应条件的理解 MCU响应中断请求的第二个条件是每个中断源所具有的各自独立的中断允许标志位 当某个中断允许标志位为 0 时 表示MCU不响应该中断的中断申请 从上面的中断响应条件看出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年办公人员试题答案及解析
- 2025年药店gsp系统培训试题及答案
- 2025年车辆装备保障专业测试题及答案
- 2025年中国古典音乐试题及答案
- 2025年金属学热处理中级工试题及答案
- 机械革命协议书
- 机车比赛协议书
- 村民与村协议书
- 林地征占协议书
- 果树互换协议书
- 中医康复试题及答案
- 2025年个人租赁房屋合同范本
- 2025届贵州省铜仁市高二物理第二学期期末调研试题含解析
- 全国五小行业管理办法
- 糖尿病的诊断指标
- 广州教科版小升初英语复习:五年级上册知识清单+练习(含解析)
- 2025年检验检测机构资质认定评审准则试题及答案
- 2025-2030中国旅拍行业需求量走势与未来经营管理建议报告
- 城管执法实务培训课件
- 氧疗的护理课件
- 2025年高净值人群消费心态及行为研究报告-胡润百富
评论
0/150
提交评论