收藏 分享(赏)

ATmega328P中文翻译资料.doc

上传人:weiwoduzun 文档编号:3279595 上传时间:2018-10-10 格式:DOC 页数:240 大小:1.31MB
下载 相关 举报
ATmega328P中文翻译资料.doc_第1页
第1页 / 共240页
ATmega328P中文翻译资料.doc_第2页
第2页 / 共240页
ATmega328P中文翻译资料.doc_第3页
第3页 / 共240页
ATmega328P中文翻译资料.doc_第4页
第4页 / 共240页
ATmega328P中文翻译资料.doc_第5页
第5页 / 共240页
点击查看更多>>
资源描述

1、产品特点 高性能,低功耗的 AVR(R)8 位微控制器 先进的 RISC 结构 - 131 条指令 - 绝大多数为单时钟周期执行 - 32 个 8 位通用工作寄存器 - 全静态工作 - 高达 20 MIPS 的吞吐量在 20 兆赫 - 片上 2 周期乘法器 高耐用性非挥发性记忆体段 - 4/8/16 /的在系统内可编程的 Flash 课程校内存 32K 字节 (ATMEGA48PA/88PA/168PA/328P) - 256/512/512 /1K 字节的 EEPROM(ATMEGA48PA/88PA/168PA/328P ) - 512/1K/1K/2K 字节的片内 SRAM(ATMEGA

2、48PA/88PA/168PA/328P) - 写/擦除周期:10,000 闪存/ EEPROM100000 - 数据保存:20 岁,在 85 /百年,在 25(1) - 可选 Boot 代码区具有独立锁定位 在系统编程通过片上引导程序 真正的同时读 - 写操作 - 锁编程软件安全 外设特点 - 2 个 8 位定时器/计数器具有独立预分频器和比较模式 - 1 个 16 位定时器/计数器具有独立预分频器,比较功能和捕捉 模式 - 实时计数器具有独立振荡器 - 六个 PWM 通道 - 8 通道 10 位 ADC 的 TQFP 和 QFN/ MLF 封装 温度测量 - 6 通道 10 位 ADC P

3、DIP 封装 温度测量 - 可编程的串行 USART - 主/从 SPI 串行接口 - 面向字节的两线串行接口(飞利浦 I2C 兼容) - 可编程看门狗定时器具有独立片内振荡器 - 片内模拟比较器 - 中断和唤醒引脚电平变化 单片机的特殊功能 - 上电复位和可编程的掉电检测 - 内部校准振荡器 - 外部和内部中断源 - 六休眠模式:空闲模式,ADC 噪声抑制,省电,掉电,待机, 和扩展 Standby 的 I / O 和封装 - 23 可编程 I / O 线 - 28 引脚 PDIP,32 引脚 TQFP 封装,28 焊盘 QFN/ MLF 以及 32 焊盘的 QFN/ MLF 工作电压: -

4、 1.8 - 5.5V 的 ATMEGA48PA/88PA/168PA/328P 温度范围: - -40至 85 速度等级: - 0 - 20 MHz 的1.8 - 5.5V 低功耗在 1 MHz,1.8V,25ATMEGA48PA/88PA/168PA/328P : - 主动模式:0.2 毫安 - 掉电模式:0.1A - 省电模式:0.75A(包括 32 千赫,RTC) 8 位 微控制器 具有 4/8/16/32K 字节的系统 可编程 闪光 ATMEGA48PA ATMEGA88PA ATMEGA168PA ATMEGA328P 牧师 8161D-AVR-10 月 9 日 2 8161D-A

5、VR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 1 引脚配置 图 1-1。引出线 ATMEGA48PA/88PA/168PA/328P 1 2 3 4 5 6 7 8 24 23 22 21 20 19 18 17 (PCINT19/ OC2B/ INT1)PD3 (PCINT20/ XCK/ T0)PD4 GND VCC GND VCC (PCINT6/ XTAL1/ TOSC1) PB6 (PCINT7/ XTAL2/ TOSC2) PB7 PC1(ADC1/ PCINT9) PC0(ADC0/ PCINT8) ADC7 GND AREF ADC6 AVCC

6、PB5(SCK/ PCINT5) 32 31 30 29 28 27 26 25 9 10 11 12 13 14 15 16 (PCINT21/ OC0B/ T 1)PD5 (PCINT22/ OC0A/ AIN0)PD6 (PCINT23/ AIN1)PD7 (PCINT0/ CLKO/ ICP1)PB0 (PCINT1/ OC1A)PB1 (PCINT2/不锈钢/ OC1B )PB2 (PCINT3/ OC 2/ MOSI )PB3 (PCINT4/ MISO )PB4 PD2(INT0/ PCINT18) PD1(TXD/ PCINT17) PD0(RXD/ PCINT16) PC6(

7、RESET/ PCINT14) PC5(ADC5/ SCL/ PCINT13 ) PC4(ADC4/ SDA/ PCINT12) PC3(ADC3/ PCINT11) PC2(ADC2/ PCINT10) TQFP 封装顶视图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 (PCINT14/ RESET)PC6 (PCINT16/ RXD)PD0 (PCINT17/ TXD)PD1 (PCINT18/ INT0)PD2 (PCINT19/ OC2B/ INT1)PD3 (PCINT20/ X

8、CK/ T0)PD4 VCC GND (PCINT6/ XTAL1/ TOSC1) PB6 (PCINT7/ XTAL2/ TOSC2) PB7 (PCINT21/ OC0B/ T 1)PD5 (PCINT22/ OC0A/ AIN0)PD6 (PCINT23/ AIN1)PD7 (PCINT0/ CLKO/ ICP1)PB0 PC5(ADC5/ SCL/ PCINT13 ) PC4(ADC4/ SDA/ PCINT12) PC3(ADC3/ PCINT11) PC2(ADC2/ PCINT10) PC1(ADC1/ PCINT9) PC0(ADC0/ PCINT8) GND AREF AVC

9、C PB5(SCK/ PCINT5) PB4(MISO/ PCINT4) PB3(MOSI/ OC 2/ PCINT3) PB2(SS/ OC1B/ PCINT2) PB1(OC1A/ PCINT1) PDIP 1 2 3 4 5 6 7 8 24 23 22 21 20 19 18 17 32 31 30 29 28 27 26 25 9 10 11 12 13 14 15 16 32 MLF 顶视图 (PCINT19/ OC2B/ INT1)PD3 (PCINT20/ XCK/ T0)PD4 GND VCC GND VCC (PCINT6/ XTAL1/ TOSC1) PB6 (PCINT

10、7/ XTAL2/ TOSC2) PB7 PC1(ADC1/ PCINT9) PC0(ADC0/ PCINT8) ADC7 GND AREF ADC6 AVCC PB5(SCK/ PCINT5) (PCINT21/ OC0B/ T 1)PD5 (PCINT22/ OC0A/ AIN0)PD6 (PCINT23/ AIN1)PD7 (PCINT0/ CLKO/ ICP1)PB0 (PCINT1/ OC1A)PB1 (PCINT2/不锈钢/ OC1B )PB2 (PCINT3/ OC 2/ MOSI )PB3 (PCINT4/ MISO )PB4 PD2(INT0/ PCINT18) PD1(TX

11、D/ PCINT17) PD0(RXD/ PCINT16) PC6(RESET/ PCINT14) PC5(ADC5/ SCL/ PCINT13 ) PC4(ADC4/ SDA/ PCINT12) PC3(ADC3/ PCINT11) PC2(ADC2/ PCINT10) 注:底部垫应焊接到地面。 1 2 3 4 5 6 7 21 20 19 18 17 16 15 28 27 26 25 24 23 22 8 9 10 11 12 13 14 28 MLF 顶视图 (PCINT19/ OC2B/ INT1)PD3 (PCINT20/ XCK/ T0)PD4 VCC GND (PCINT6/

12、XTAL1/ TOSC1) PB6 (PCINT7/ XTAL2/ TOSC2) PB7 (PCINT21/ OC0B/ T 1)PD5 (PCINT22/ OC0A/ AIN0)PD6 (PCINT23/ AIN1)PD7 (PCINT0/ CLKO/ ICP1)PB0 (PCINT1/ OC1A)PB1 (PCINT2/不锈钢/ OC1B )PB2 (PCINT3/ OC 2/ MOSI )PB3 (PCINT4/ MISO )PB4 PC2(ADC2/ PCINT10) PC1(ADC1/ PCINT9) PC0(ADC0/ PCINT8) GND AREF AVCC PB5(SCK/

13、PCINT5) 注:底部垫应焊接到地面。 3 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 1.1 引脚说明 1.1.1 VCC 数字电源电压。 1.1.2 接地 地面上。 1.1.3 端口 B(PB7:0)XTAL1/ XTAL2/ TOSC1/ TOSC2 端口 B 为 8 位双向 I / O 和内部上拉电阻(选择的每一位)端口。该 B 口输出缓冲器具有既吸收大电流源对称的驱动特性 能力。作为输入,端口 B 引脚被外部电路拉低时将输出电流,如果上拉 电阻器被激活。端口的引脚为三态时,复位过程中, 即使系统时钟没有运行。 根据不同的时钟选择熔丝设

14、置,PB6 可以作为输入到反相振荡器 放大器和输入到内部时钟工作电路。 根据不同的时钟选择熔丝设置,PB7 可作为从反相输出 振荡器放大器。 如果内部标定 RC 振荡器作为系统时钟源,PB76 作为 TOSC21 输入的异步定时器/计数器,如果在 ASSR 寄存器的 AS2 位。 不同的特殊功能的端口 B 的页面上阐述了 “端口 B 的第二功能 ”第 26 页 82 和“系统时钟及时钟选项” 。 1.1.4 端口 C(PC5:0) 端口 C 为 7 位双向 I/ O 和内部上拉电阻(选择的每一位)端口。该 PC50 输出缓冲器具有同时具有高汇和源对称的驱动特性 能力。作为输入,端口 C 引脚被

15、外部电路拉低时将输出电流,如果上拉 电阻器被激活。端口 C 引脚为三态时,复位过程中, 即使系统时钟没有运行。 1.1.5 PC6/复位 如果 RSTDISBL 位被编程,PC6 作为一个 I/ O 引脚。注意,电特性 PC6 的不同与端口 C 的其他引脚 如果 RSTDISBL 位未编程,PC6 作为复位输入。该引脚上的低电平 比最小脉冲长度较长会产生复位,即使系统时钟没有运行。 的最小脉冲长度列于表 28-3 页上的 318 短的脉冲则不能保证 产生复位。 不同的特殊功能端口 C 的页面上阐述了 “备用端口 C 的功能 ”85。 1.1.6 端口 D(PD7 :0) 端口 D 为 8 位双

16、向 I / O 和内部上拉电阻(选择的每一位)端口。该 端口 D 输出缓冲器具有同时具有高汇和源对称的驱动特性 能力。作为输入,端口 D 引脚被外部电路拉低时将输出电流,如果上拉 电阻器被激活。端口 D 引脚为三态时,复位过程中, 即使系统时钟没有运行。 4 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 不同的特殊功能端口 D 都页阐述了 “备用端口 D 的功能 ”88。 1.1.7 AVCC AVCC 是电源电压引脚为 A/ D 转换器,PC3:0,ADC7 :6。它应该是外部 连接到 VCC,即使不使用 ADC。如果 ADC 被使用时,它应连接

17、到 VCC 通过一个低通滤波器。需要注意的是 PC64 使用数字供电电压 VCC。 1.1.8 AREF AREF 是模拟基准输入引脚为 A/ D 转换器。 1.1.9 ADC7:6(TQFP 和 QFN/ MLF 封装) 在 TQFP 和 QFN/ MLF 封装,ADC7 :6 作为模拟输入到 A / D 转换器。 这些引脚的模拟电源供电,并作为 10 位 ADC 通道。 5 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 二,产品简介 该 ATMEGA48PA/88PA/168PA/328P 是一款基于低功耗 8 位 CMOS 微控制器 增强的

18、AVR RISC 架构。通过在单个时钟周期内执行强大的指令, ATMEGA48PA/88PA/168PA/328P 的数据吞吐率 1 MIPS 每 MHz,从而可以 系统设计师能够优化功耗和处理速度之间。 2.1 框图 图 2-1。框图 AVR 内核具有丰富的指令集和 32 个通用工作寄存器。所有 寄存器都直接连接到所述算术逻辑单元(ALU) ,允许两个独立的 寄存器中在一个时钟周期中执行一个指令来访问。由此产生的 6 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 建筑是提高了代码效率,同时实现最高至 10 倍,比传统快 CISC 微控制器。 该

19、ATMEGA48PA/88PA/168PA/328P 提供了以下功能:4K/8K 字节的系统内的 可编程闪存与同时读 - 写功能, 256/512/512 /1K 字节 EEPROM, 512/1K/1K/2K 字节的 SRAM,23 个通用 I/ O 口线,32 个通用工作寄存器, 三种灵活的定时器/计数器具有比较模式,内部和外部中断,可编程串行 USART,面向字节的两线串行接口,一个 SPI 串行端口,一个 6 通道 10 位 模数转换器(8 路为 TQFP 和 QFN/ MLF 封装) ,一个可编程看门狗定时器 内部振荡器和五个软件选择的省电模式。在空闲模式下停止 CPU 的工作,而

20、SRAM,定时器/ 计数器,USART,两线串行接口, SPI 端口以及 中断系统继续工作。在掉电模式保存登记内容,但 冻结振荡器,禁用所有其他芯片功能,直到下一个中断或硬件复位。 在省电模式下,异步定时器继续运行,允许用户保持一个 而该装置的其余部分处于休眠状态计时器基。 ADC 噪声抑制模式时终止 CPU 和除了异步定时器和 ADC 的所有 I / O 模块,以最大限度地减少开关噪声 ADC 转换。在待机模式下,晶体/ 谐振振荡器运行,其余 该设备是在睡觉。这允许非常快速启动结合低功耗。 该设备是采用 Atmel 的高密度非易失性存储器技术生产的。该 片上 ISP Flash 允许程序存储

21、器通过 SPI 进行在系统编程 串行接口,通过常规的非易失性存储器编程,或者通过一个片上的引导程序 在 AVR 内核上运行。引导程序可以使用任意接口下载 在应用程序的闪存应用程序。在引导 Flash 软件 继续运行,而应用 Flash 区更新,提供真正的同时读 - 写 操作。通过在将 8 位 RISC CPU 与系统内可编程闪存 单片芯片,Atmel 的 ATMEGA48PA/88PA/168PA/328P 是一款功能强大的单片机, 提供了高度灵活和成本效益的解决方案为许多嵌入式控制应用。 该 ATMEGA48PA/88PA/168PA/328P AVR 具有一整套的编程与系统 开发工具,包括

22、:C 语言编译器,宏汇编,程序调试器 /模拟器, 在电路仿真器和评估板。 间 ATMEGA48PA,ATMEGA88PA,ATMEGA168PA 和 ATMEGA328P2.2 对比 该 ATMEGA48PA,ATMEGA88PA,ATMEGA168PA 和 ATMEGA328P 的区别仅在于内存 大小,支持引导装入程序,中断向量的大小。表 2-1 总结了不同的记忆 和中断向量的大小为三个设备。 ATMEGA88PA,ATMEGA168PA 和 ATMEGA328P 支持真正的同时读 - 写自编程 机制。有一个单独的 Boot Loader 区,SPM 指令可以 从那里只执行。在 ATMEGA

23、48PA,没有同时读 - 写支持,没有独立的 Boot Loader 区。 SPM 指令可以访问整个 Flash 中执行。 表 2-1。内存大小总结 设备闪存 EEPROM 内存中断向量大小 ATMEGA48PA4K 字节 256 字节 512 字节 1 指令字/ 矢量 ATMEGA88PA8K 字节 512 字节 1K 字节 1 指令字/矢量 ATMEGA168PA16K 字节 512 字节 1K 字节 2 个指令字/矢量 ATMEGA328P32K 字节 1K 字节 2K 字节 2 个指令字/矢量 7 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328

24、P 3 资源 一套全面的开发工具,应用手册和数据表都可以 下载的 http:/ 注意事项:1。 4,数据保存时间 可靠性鉴定结果表明,该投影数据保留故障率要少得多 于 1ppm 超过 20 年,在 85 或百年在 25。 5,关于代码示例 该文档包含了一些简单的代码例子以说明如何使用各种零件 设备。这些代码示例假定的头文件包含前 编译。请注意,并非所有的 C 编译器厂商包括在头文件的位定义 和中断处理中的 C 是编译器的依赖。请确认与 C 编译器文档 了解更多详情。 对于 I / O 寄存器为扩展 I/ O 映射, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”与“CBR

25、”指令必须被替换指令,允许访问扩展 I/ O 操作。通常 “IN”,结合 “SBRS”, “STS”, “SBRC”, “SBR”与“CBR” 。 8 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 6,AVR CPU 内核 6.1 概述 本节讨论 AVR 内核的结构一般。 CPU 芯的主要功能 是保证程序的正确执行。因此,CPU 必须能够访问存储器, 执行运算,控制外设以及处理中断。 图 6-1。 AVR 结构的方框图 为了获得最高的性能以及并行性,AVR 采用了 Harvard 结构 - 用 独立的记忆和公共汽车程序和数据。在程序存储器中的指令是

26、 通过一级流水线运行。当一个指令被执行时,下一条指令 从程序存储器预取。这个概念实现了将要执行的指令 在每一个时钟周期。程序存储器在系统内可编程 Flash 存储器。 快速访问寄存器文件包括工作寄存器,一个 328 位通用 时钟周期的访问时间。这允许单周期算术逻辑单元(ALU)运算。在的典 闪光 节目 内存 说明 注册 说明 解码器 节目 计数器 控制线 328 一般 用途 Registrers ALU 状态 与控制 I / O 线 EEPROM 数据总线的 8 位 数据 SRAM 中断 单位 SPI 单位 看门狗 定时器 模拟 比较 I / O 模块 2 I / O 模块 1 I / O 模

27、块 n 9 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 的 ALU 操作中,两个操作数从寄存器文件输出,执行该操作, 并将结果存回寄存器文件 - 在一个时钟周期。 六的 32 个寄存器可以用作 3 个 16 位的间接寻址寄存器指针数据 空间寻址 - 实现高效的地址运算。其中这些地址指针 也可以用作为地址指针为查找表在闪存程序存储器。这些 附加的功能寄存器是 16 位的 X,Y ,Z 寄存器,在本节后面介绍。 ALU 支持寄存器之间或常数之间的算术和逻辑运算 一个寄存器。单寄存器操作也可以在 ALU 中执行的。算术运算后, 状态寄存器的内容得到更新

28、以反映该操作的结果的信息。 程序流程通过无条件的跳转指令和调用指令,能够提供 直接寻址整个地址空间。多数指令有一个 16 位字格式。 每个程序存储器地址包含一个 16 位或 32 位的指令。 程序存储器空间分为两个区:引导程序区和 应用程序区。这两个区都有专门的锁定位以实现读和读/写 保护。 SPM 指令写入到应用程序区必须 位于引导程序区。 在中断和调用子程序时返回地址的程序计数器(PC)保存在 堆叠。堆栈实际上分配在通用数据 SRAM,因此其深度 大小仅受限于 SRAM 的大小和 SRAM 的使用情况。所有的用户程序必须 初始化复位例程的 SP(前子程序或中断执行) 。堆栈 指针(SP)的

29、读/写在 I/ O 空间。数据 SRAM 可以很容易地访问 通过 AVR 架构支持的五种不同的寻址模式。 在 AVR 架构的内存空间都是线性的存储器映射。 一个灵活的中断模块具有一个额外的全局的 I / O 空间的控制寄存器 中断状态寄存器使能位。所有的中断都具有一个独立的中断向量在 中断向量表。该中断的优先级与其在中断向量表的位置。 较低的中断向量地址,优先级越高。 在 I/ O 存储器空间包含 64 个地址,作为 CPU 外设的控制寄存器, SPI,以及其他 I / O 功能。在 I/ O 内存可以直接访问,或作为数据 空间位置下面这些寄存器文件,地址 0x20 - 0x5F 的。此外,该

30、 ATMEGA48PA/88PA/168PA/328P 已经扩展 I / O 空间段 0x60 - 0xFF 的 SRAM 中,其中 只能使用 ST/ STS/ STD 和 LD/ LDS/ LDD 指令都可以使用。 6.2 ALU - 算术逻辑单元 高性能的 AVR ALU 与所有 32 个通用的直接连接 工作寄存器。在一个时钟周期内,通用的算术运算 寄存器或寄存器之间立即执行。 ALU 操作分为 分为三个主要类别 - 算术,逻辑和位操作。的一些实现 架构还提供了强大的乘数同时支持有符号/无符号乘法运算 和小数格式。请参阅“指令集”部分进行了详细的描述。 6.3 状态寄存器 状态寄存器包含了

31、最近执行的算术的结果信息 指令。此信息可以执行用于改变程序流程 条件操作。请注意,状态寄存器的所有 ALU 运算更新, 10 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 在指令集指定。这将在许多情况下就不需要为使用 专门的比较指令,从而更快,更紧凑的代码。 状态进入中断服务程序时,注册是不会自动保存和恢复 从中断返回时。这必须由软件来处理。 6.3.1 SREG - AVR 中断寄存器 AVR 中断寄存器 - SREG - 定义为: 位 7 - I:全局中断使能 全局中断使能位必须设置为启用中断。各个中断 使能由其他独立的控制寄存器控制。如果全局

32、中断使能 寄存器清零,没有任何中断都将启用独立的个体中断 启用设置。在 I 位由硬件清零发生中断后,由设置 RETI 指令以使能中断。中的 I 位也可以被设置并通过清除 SEI 和 CLI 指令的应用程序,如在指令集的参考说明。 位 6 - T:位拷贝存储 位拷贝指令 BLD(位负载)和 BST(位存储)使用 T 字位为源或目标 在操作位。从寄存器文件寄存器的位可以被拷贝到 T BST 指令,并在 T A 位可以通过复制到一个位在寄存器中的寄存器文件 BLD 指令。 位 5 - H:半进位标志 半进位标志 H 表示半进一些算术运算。此标志是很有用的 BCD 运算。请参阅“指令集”的说明信息。

33、位 4 - S:符号位, S= N V 在 S 位始终是一个排他性或负数标志 N 与 2 的补间 溢出标志 V“指令集”的说明信息。 位 3 - V:2 的补码溢出标志 二进制补码溢出标志 V 支持 2 的补码运算。见 “指令集”的说明信息。 位 2 - N:负标志 负标志 N 表示阴性结果算术或逻辑运算。见 “指令集”的说明信息。 位 1 - Z:零标志 零标志 Z 为结果为零算术或逻辑运算。请参见“指令 设置说明“的详细信息。 位 0 - C:进位标志 进位标志 C 表示进位算术或逻辑运算。请参阅 “指令集 说明“的详细信息。 位 7 6 54 3 210 的 0x3F(0x5F 的)I

34、T H S 测定为 V N z 对于 C SREG 读/写读/写读/写读/写读/写读 /写读/写读/ 写读/写 初始值 0 0 00 0 0 00 11 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 6.4 通用寄存器文件 寄存器文件进行了优化,对 AVR 增强型 RISC 指令集。为了实现 所需要的性能和灵活性,以下的输入/输出方案的支持 寄存器文件: 一个 8 位输出操作数和一个 8 位结果输入 两个 8 位输出操作数和一个 8 位结果输入 两个 8 位输出操作数和一个 16 位结果输入 一个 16 位输出操作数和一个 16 位结果输入 图 6

35、-2 显示了 CPU 32 个通用工作寄存器的结构。 图 6-2。 AVR CPU 通用工作寄存器 大部分的操作寄存器文件的指令都可以直接访问所有的寄存器,并 他们大多是单周期指令。 如图 6-2 所示,每个寄存器都有一个数据内存地址,它们映射 直接到用户数据空间的头 32 个地址。虽然没有实际的物理空间 如 SRAM,这种内存组织中的访问提供了极大的灵活性 寄存器,当 X,Y 和 Z 指针寄存器可以设置到索引文件中的任何寄存器。 70 地址。 R0 为 0x00 R 1001 R20X02 R130X0D 一般 R140x0E 的 目的 R15 为 0x0F 工作 R16 为 0x10 寄存

36、器 R17 为 0x11 R260X1A X 寄存器低字节 R270X1B X 寄存器高字节 R28 为 0x1C Y 寄存器低字节 R290x1D Y 寄存器,寄存器,高字节 R300X1E Z 寄存器低字节 R31 为 0x1F Z 寄存器高字节 12 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 6.4.1 X 寄存器,Y 寄存器和 Z 寄存器 该寄存器 R26R31 有一些附加功能,其一般用途的使用。这些寄存器 有 16 位地址指针的间接寻址数据空间。这三个间接 地址寄存器 X,Y 和 Z 被定义为在图 6-3 中描述。 图 6-3。的 X

37、,Y 和 Z 寄存器 在不同的寻址模式中,这些地址寄存器可以实现固定偏移量, 自动加一和自动减一(详见指令集参考) 。 6.5 堆栈指针 协议栈主要用于存储临时数据,用于存储局部变量和存储 中断和子程序调用后返回地址。请注意,该协议栈实现 从高增长到低内存位置。堆栈指针总是指向 堆栈的顶部。堆栈指针指向数据 SRAM 堆栈区所在的子程序 和中断堆栈。在压入堆栈指令将减少堆栈指针。 在数据 SRAM 堆栈必须由程序定义的子程序调用前 执行或中断使能。初始堆栈指针的值等于的最后一个地址 内部 SRAM 和堆栈指针必须设置为指向的 SRAM 上面开始,见表 7 3 第 18 页。 见表 6-1 堆栈

38、指针的详细信息。 AVR 的堆栈指针被实现为两个 8 位寄存器中的 I / O 空间。数 实际使用的位是依赖于实现。注意,在一些实现中,数据空间 AVR 架构是如此之小,只有 SPL 就足够了。在这种情况下,SPH 寄存器 将不存在。 15 XH XL0 X 寄存器 7070 R27(0X1B)R26(0X1A) 15 YH YL0 Y 寄存器 7070 R29(0x1D) ,R28(0x1C 处) 15 ZH:ZL0 Z 寄存器 7 0 70 R31(0x1F 的) ,R30(0X1E) 表 6-1。堆栈指针指示 指令堆栈指针说明 PUSH 由 1 递减的数据压入堆栈 认购证 ICALL R

39、CALL 2 递减 返回地址被压入堆栈子程序调用或 中断 的 POP 由 1 递增的数据是从堆栈中弹出 RET RETI 2 返回地址递增从堆栈中弹出与回报 子程序或中断返回 13 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 6.5.1 SPH 和 SPL - 堆栈指针高,堆栈指针寄存器低 6.6 指令执行时序 本节描述的访问时序概念指令执行。 AVR 的 CPU 通过 CPU 时钟 clkCPU 驱动直接从所选择的时钟源所生成的 芯片。没有内部时钟进行分频。 图 6-4 显示并行指令取指和哈佛启用的指令执行 建筑和快速访问寄存器文件的概念。这是

40、一个基本的流水线概念 获得高达 1 MHz 的 MIPS 与每个成本函数相应的独特的结果, 每时钟功能,并且每个电源单元的功能。 图 6-4。并行取指和指令执行 图 6-5 显示的是寄存器文件内部访问时序。在一个时钟周期的 ALU 执行使用两个寄存器中的操作数的操作,并把结果存回至目的地 注册。 图 6-5。单时钟周期 ALU 操作 位 15 1413 12 1110 9 8 0x3E 的(0x5e 者)SP15,SP14,SP13 ,SP12,SP11,SP10 SP9 SP8 SPH 0x3D 之间(0x5D)SP7 SP5 SP6 SP4 SP3 SP2 SP1 SP0 声压级 7 6

41、54 3 210 读/写读/写读/写读/写读/写读 /写读/写读/ 写读/写 读/写读/写读/写读/写读/写读 /写读/写读/ 写 初始值 RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND CLK 第一次取指令 第一指令执行 第二个指令获取 第二个指令执行 3 取指令 3 指令执行 4 取指令 T1 T2 T3 T4 中央处理器 总执行时间 寄存器操作数取 ALU 操作执行 结果回写 T1 T2 T3 T4 了 clkCP

42、U 14 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 6.7 复位和中断处理 AVR 有不同的中断源。每个中断和复位分开 矢量各有程序存储空间一个单独的程序载体。所有中断 自己的使能必须写入逻辑 1 连同全局中断位 使在该状态寄存器位,以使该中断。根据该计划 计数器值,中断可能被自动引导锁定位 BLB02 或 BLB12 被禁用 被编程。这个特性提高了软件的安全性。请参见“存储器编程”有关详细信息,294 页。 在程序存储区的最低地址缺省为复位和 中断向量。完整的向量列表第 57 页的名单也列于“中断”决定了不同中断的优先级。下的地址中较高的 优

43、先级。 RESET 具有最高的优先级,第二个为 INT0 - 外部中断请求 0,中断向量可以通过设置 IVSEL 转移到 Boot 区的起始 在 MCU 控制寄存器(MCUCR)位。请参阅“中断”在 49 页以了解更多信息。 复位向量也可以通过编程转移到 Boot 区的起始 熔丝位 BOOTRST,请参阅“支持引导装入程序 - 同时读 - 写自编程, ATMEGA88PA,277 页 ATMEGA168PA 和 ATMEGA328P“。 当中断发生时全局中断使能位 I 被清零,所有中断被禁止。 用户软件可以编写逻辑一到 I 位使能中断嵌套。全部启用 然后中断都可以中断当前的中断服务程序。在 I

44、 位被自动设定时, 执行 - 从中断返回指令 - RETI 指令。 基本上有两种类型的中断。第一类型是由用于设置事件触发 中断标志。对于这些中断,程序计数器跳转到实际的中断向量 为了执行中断处理程序,同时硬件将清除相应的 中断标志。中断标志也可以通过写 1 到标志位的位置被清除(S) 被清除。如果在相应的中断使能位是发生中断条件 清除中断标志位被置一直保持到中断执行,或者该标志 通过软件清零。同样,如果出现一个或多个中断条件,而全局中断 使能位被清零,相应的中断标志位被置一直保持到 全局中断使能位被置位,然后会根据优先顺序来执行。 第二种类型的中断将触发只要中断条件是否存在。这些 中断不需要中

45、断标志。如果中断状态前消失 中断使能,中断不会被触发。 当 AVR 退出中断,它总是返回到主程序和执行一个 之前的任何挂起的中断更多的指令提供服务。 请注意,状态进入中断服务程序时,寄存器不会自动存储,也不 从中断程序返回时恢复。这必须由软件来处理。 当使用 CLI 指令来禁止中断时,中断将立即停用。 没有中断将 CLI 指令后执行,即使它同时出现的 CLI 指令。下面的示例演示如何可以用来避免在中断 定时 EEPROM 写序。 15 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 使用 SEI 指令使能中断时,紧跟其后的指令被执行 任何中断之前,如

46、本例中所示。 6.7.1 中断响应时间 所有已启用 AVR 中断响应中断为 4 个时钟周期最小。 经过四个时钟周期,程序跳转到实际的中断处理程序 被执行。在这 4 个时钟周期,程序计数器被压入堆栈。 载体通常是跳转到中断服务程序,此跳需要 3 个时钟周期。如果 执行的多周期指令执行期间发生中断时,该指令完成 中断服务之前。若中断发生时 MCU 处于休眠模式,中断 执行响应时间增加 4 个时钟周期。该增长来自除 启动从所选择的睡眠模式时间。 从中断处理程序返回需要 4 个时钟周期。在这四个时钟 周期,程序计数器(2 字节)从堆栈中弹出返回,堆栈指针 加二,和 SREG 的 I 位被置位。 汇编代

47、码例程 C 代码示例 汇编代码例程 C 代码示例 16 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 7,AVR 回忆 7.1 概述 本节介绍了 ATMEGA48PA/88PA/168PA/328P 不同的回忆。 AVR 的 结构具有两个主要的存储器空间,数据存储器和程序存储器空间。 此外,ATMEGA48PA/88PA/168PA/328P 还有 EEPROM 存储器以保存数据。 这三个存储器空间都为线性的。 7.2 在系统内可编程闪存程序存储器 该 ATMEGA48PA/88PA/168PA/328P 具有 4/8/16 /32K 字节的片上系

48、统内编程 闪存用于程序存储。因为所有的 AVR 指令为 16 位或 32 位 宽,Flash 组织成 2/4/8 /16K16。对于软件的安全性,闪存程序存储器 空间被分成两部分,在 Boot Loader 区和应用程序区 ATMEGA88PA 和 ATMEGA168PA。请参见章节“SPMCSR SELFPRGEN 描述 - 商店 有关详细信息,292 页的程序存储器控制和状态寄存器“。 Flash 存储器至少 10,000 写/擦除周期耐力。该 ATMEGA48PA/88PA/168PA/328P 程序计数器(PC)为 11/12/13/14 位,因此可以寻址 在 2/4/8 /16K 的

49、程序存储器空间。引导程序区的运作和 有关 Boot 锁定位的软件保护进行了详细的“自编程描述 在 Flash 中,ATMEGA48PA“269 页和”支持引导装入程序 - 同时读 - 写自编程, ATMEGA88PA, “277 页上的”ATMEGA168PA 和 ATMEGA328P 记忆 编程“294 页包含闪存编程的详细说明在支持 SPI 或 并行编程模式。 常数可以保存于整个程序存储器地址空间(参考 LPM 内分配 - 加载程序存储器指令的说明) 。 时序图的取指令和执行“指令执行时序”呈现 在第 13 页。 17 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 图 7-1。程序存储器映射 ATMEGA48PA 图 7-2。程序存储器映射 ATMEGA88PA,ATMEGA168PA 和 ATMEGA328P 为 0x0000 0x7FF 的 程序存储器 应用 Flash 存储区 为 0x0000 0x0FFF/0x1FFF 的/0x3FFF 程序存储器 应用 Flash 存储区 Boot 区 18 8161D-AVR-10 月 9 日 ATMEGA48PA/88PA/168PA/328P 7.3 SRAM 数据存储器 图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报