产品特性
• 高性能、低功耗的 8 位 AVR® 微处理器
• 先进的 RISC 结构
– 130 条指令 – 大多数指令执行时间为单个时钟周期
– 32 个 8 位通用工作寄存器
– 全静态工作
– 工作于 16 MHz 时性能高达 16 MIPS
– 只需两个时钟周期的硬件乘法器
• 非易失性程序和数据存储器
– 8K 字节的系统内可编程 Flash
擦写寿命 : 10,000 次
– 具有独立锁定位的可选 Boot 代码区
通过片上 Boot 程序实现系统内编程
真正的同时读写操作
– 512 字节的 EEPROM
擦写寿命 : 100,000 次
– 1K 字节的片内 SRAM
– 可以对锁定位进行编程以实现用户程序的加密
• 外设特点
– 两个具有独立预分频器 8 位定时器 / 计数器 , 其中之一有比较功能
– 一个具有预分频器、比较功能和捕捉功能的 16 位定时器 / 计数器
– 具有独立振荡器的实时计数器 RTC
– 三通道 PWM
– TQFP 与 MLF 封装的 8 路 ADC
8 路 10 位 ADC
– PDIP 封装的 6 路 ADC
8 路 10 位 ADC
– 面向字节的两线接口
– 两个可编程的串行 USART
– 可工作于主机 / 从机模式的 SPI 串行接口
– 具有独立片内振荡器的可编程看门狗定时器
– 片内模拟比较器
• 特殊的处理器特点
– 上电复位以及可编程的掉电检测
– 片内经过标定的 RC 振荡器
– 片内 / 片外中断源
– 5 种睡眠模式 : 空闲模式、 ADC 噪声抑制模式、省电模式、掉电模式及 Standby 模式
• I/O 和封装
– 23 个可编程的 I/O 口
– 28 引脚 PDIP 封装 ,32 引脚 TQFP 封装 ,32 引脚 MLF 封装
• 工作电压
• 速度等级
– 2.7 - 5.5V (ATmega8L)
– 4.5 - 5.5V (ATmega8)
– 0 - 8 MHz (ATmega8L)
– 0 - 16 MHz (ATmega8)
• 4 Mhz 时功耗 , 3V, 25°C
– 工作模式 : 3.6 mA
– 空闲模式 : 1.0 mA
– 掉电模式 : 0.5 µA
具有 8KB 系统内
可编程 Flash 的
8 位
微
控制器
ATmega8
ATmega8L
2486N–AVR–07/04
引脚配置
PDIP
(RESET) PC6
(RXD) PD0
(TXD) PD1
(INT0) PD2
(INT1) PD3
(XCK/T0) PD4
VCC
GND
(XTAL1/TOSC1) PB6
(XTAL2/TOSC2) PB7
(T1) PD5
(AIN0) PD6
(AIN1) PD7
(ICP1) PB0
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
PC5 (ADC5/SCL)
PC4 (ADC4/SDA)
PC3 (ADC3)
PC2 (ADC2)
PC1 (ADC1)
PC0 (ADC0)
GND
AREF
AVCC
PB5 (SCK)
PB4 (MISO)
PB3 (MOSI/OC2)
PB2 (SS/OC1B)
PB1 (OC1A)
TQFP Top View
/
)
L
C
S
5
C
D
A
(
5
C
P
)
T
E
S
E
R
(
6
C
P
)
0
T
N
I
(
2
D
P
)
D
X
T
(
1
D
P
)
D
X
R
(
0
D
P
)
/
A
D
S
4
C
D
A
(
4
C
P
)
3
C
D
A
(
3
C
P
)
2
C
D
A
(
2
C
P
(INT1) PD3
(XCK/T0) PD4
GND
VCC
GND
VCC
(XTAL1/TOSC1) PB6
(XTAL2/TOSC2) PB7
1
2
3
4
5
6
7
8
2
3
1
3
0
3
9
2
8
2
7
2
6
2
5
2
0
9 1
1
1
2
1
3
1
4
1
5
1
6
1
24
23
22
21
20
19
18
17
PC1 (ADC1)
PC0 (ADC0)
ADC7
GND
AREF
ADC6
AVCC
PB5 (SCK)
5
D
P
)
1
T
(
6
D
P
)
0
N
A
I
(
7
D
P
)
1
N
A
I
(
0
B
P
)
1
P
C
I
(
1
B
P
)
A
1
C
O
(
2
B
P
)
B
1
C
O
S
S
/
(
4
B
P
)
O
S
M
I
(
3
B
P
)
2
C
O
/
I
S
O
M
(
MLF Top View
/
)
L
C
S
5
C
D
A
(
5
C
P
)
T
E
S
E
R
(
6
C
P
)
/
A
D
S
4
C
D
A
(
4
C
P
)
3
C
D
A
(
3
C
P
)
2
C
D
A
(
2
C
P
)
0
T
N
I
(
2
D
P
)
D
X
T
(
1
D
P
)
D
X
R
(
0
D
P
(INT1) PD3
(XCK/T0) PD4
GND
VCC
GND
VCC
(XTAL1/TOSC1) PB6
(XTAL2/TOSC2) PB7
1
2
3
4
5
6
7
8
2
3
1
3
0
3
9
2
8
2
7
2
6
2
5
2
0
9 1
1
1
2
1
3
1
4
1
5
1
6
1
24
23
22
21
20
19
18
17
PC1 (ADC1)
PC0 (ADC0)
ADC7
GND
AREF
ADC6
AVCC
PB5 (SCK)
2
ATmega8(L)
(
(
5
D
P
)
1
T
(
6
D
P
)
0
N
A
I
7
D
P
)
1
N
A
I
0
B
P
)
1
P
C
I
(
1
B
P
)
A
1
C
O
(
4
B
P
)
O
S
M
I
(
2
B
P
)
B
1
C
O
S
S
/
(
3
B
P
)
2
C
O
/
I
S
O
M
(
NOTE:
The large center pad underneath the MLF
packages is made of metal and internally
connected to GND. It should be soldered
or glued to the PCB to ensure good
mechanical stability. If the center pad is
left unconneted, the package might
loosen from the PCB.
2486N–AVR–07/04
ATmega8(L)
综述
方框图
ATmega8是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令
集以及单时钟周期指令执行时间, ATmega8 的数据吞吐率高达 1 MIPS/MHz,从而可以
缓减系统在功耗和处理速度之间的矛盾。
Figure 1. 结构框图
RESET
VCC
PC0 - PC6
PB0 - PB7
XTAL1
XTAL2
PORTC DRIVERS/BUFFERS
PORTB DRIVERS/BUFFERS
GND
PORTC DIGITAL INTERFACE
PORTB DIGITAL INTERFACE
MUX &
ADC
ADC
INTERFACE
TWI
AGND
AREF
PROGRAM
COUNTER
STACK
POINTER
TIMERS/
COUNTERS
OSCILLATOR
PROGRAM
FLASH
SRAM
INTERNAL
OSCILLATOR
INSTRUCTION
REGISTER
INSTRUCTION
DECODER
CONTROL
LINES
GENERAL
PURPOSE
REGISTERS
X
Y
Z
ALU
AVR CPU
STATUS
REGISTER
PROGRAMMING
LOGIC
SPI
+
-
COMP.
INTERFACE
WATCHDOG
TIMER
OSCILLATOR
MCU CTRL.
& TIMING
INTERRUPT
UNIT
EEPROM
USART
PORTD DIGITAL INTERFACE
PORTD DRIVERS/BUFFERS
PD0 - PD7
2486N–AVR–07/04
3
AVR 内核具有丰富的指令集和 32 个通用工作寄存器。所有的寄存器都直接与算逻单元
(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结
构大大提高了代码效率,并且具有比普通的 CISC 微控制器最高至 10 倍的数据吞吐率。
ATmega8 有如下特点 :8K 字节的系统内可编程 Flash( 具有同时读写的能力,即 RWW),
512 字节 EEPROM,1K 字节 SRAM,32 个通用 I/O 口线,32 个通用工作寄存器,三个
具有比较模式的灵活的定时器 / 计数器 (T/C), 片内 / 外中断,可编程串行 USART,面向
字节的两线串行接口, 10 位 6 路 (8 路为 TQFP 与 MLF 封装 )ADC,具有片内振荡器的
可编程看门狗定时器,一个 SPI 串行端口,以及五种可以通过软件进行选择的省电模式。
工作于空闲模式时 CPU 停止工作,而 SRAM、 T/C、 SPI 端口以及中断系统继续工作;
掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省
电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠
状态; ADC 噪声抑制模式时终止 CPU 和除了异步定时器与 ADC 以外所有 I/O 模块的工
作,以降低 ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余
功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力。
本芯片是以 Atmel 高密度非易失性存储器技术生产的。片内 ISP Flash 允许程序存储器通
过 ISP 串行接口,或者通用编程器进行编程,也可以通过运行于 AVR 内核之中的引导程
序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(Application
Flash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续
运行,实现了 RWW 操作。 通过将 8 位 RISC CPU 与系统内可编程的 Flash 集成在一个
芯片内, ATmega8 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低
成本的解决方案。
ATmega8 具有一整套的编程与系统开发工具,包括:C 语言编译器、宏汇编、 程序调试
器 / 软件仿真器、仿真器及评估板。
声明
本数据手册的典型值来源于对器件的仿真,以及其他基于相同产生工艺的 AVR 微控制器
的标定特性。本器件经过特性化之后将给出实际的最大值和最小值。
4
ATmega8(L)
2486N–AVR–07/04
ATmega8(L)
引脚说明
VCC
GND
端口 B(PB7..PB0)
XTAL1/XTAL2/TOSC1/TOSC2
端口 C(PC5..PC0)
PC6/RESET
端口 D(PD7..PD0)
数字电路的电源。
地。
端口 B 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特
性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉
低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 B 处于高阻状态。
通过时钟选择熔丝位的设置, PB6 可作为反向振荡放大器或时钟操作电路的输入端。
通过时钟选择熔丝位的设置 PB7 可作为反向振荡放大器的输出端。
若将片内标定 RC 振荡器作为芯片时钟源,且 ASSR 寄存器的 AS2 位设置,PB7..6 作为
异步 T/C2 的 TOSC2..1 输入端。
端口 B 的其他功能见 P 55“ 端口 B 的第二功能 ” 及 P 22“ 系统时钟及时钟选项 ” 。
端口 C 为 7 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特
性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉
低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 C 处于高阻状态。
若 RSTDISBL 熔丝位编程, PC6 作为 I/O 引脚使用。注意 PC6 的电气特性与端口 C 的
其他引脚不同
若 RSTDISBL 熔丝位未编程, PC6 作为复位输入引脚。持续时间超过最小门限时间的低
电平将引起系统复位。门限时间见 P 35Table 15 。持续时间小于门限时间的脉冲不能保
证可靠复位。
端口 C 的其他功能见后。
端口 D 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特
性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路
拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 D 处于高阻状态。
端口 D 的其他功能见后。
RESET
复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。门限时间见 P
35Table 15 。持续时间小于门限时间的脉冲不能保证可靠复位。
2486N–AVR–07/04
5
AVCC
AREF
AVCC 是 A/D 转换器、端口 C (3..0) 及 ADC (7..6) 的电源。不使用 ADC 时,该引脚应直接与
VCC 连接。使用 ADC 时应通过一个低通滤波器与 VCC 连接。注意,端口 C (5..4) 为数字电
源, VCC。
A/D 的模拟基准输入引脚。
ADC7..6(TQFP 与 MLF 封装 )
TQFP与MLF封装的ADC7..6作为A/D转换器的模拟输入。为模拟电源 且作为10位ADC通
道。
代码例子
本数据手册包含了一些简单的代码例子以说明如何使用芯片各个不同的功能模块。这些
例子都假定在编译之前已经包含了正确的头文件。有些 C 编译器在头文件里并没有包含
位定义,而且各个 C 编译器对中断处理有自己不同的处理方式。请注意查阅相关文档以
获取具体的信息。
6
ATmega8(L)
2486N–AVR–07/04
ATmega8(L)
AVR CPU 内核
介绍
结构综述
本节从总体上讨论 AVR 内核的结构。CPU 的主要任务是保证程序的正确执行。因此它必
须能够访问存储器、执行运算、控制外设以及处理中断。
Figure 2. AVR MCU 结构的方框图
Flash
Program
Memory
Instruction
Register
Instruction
Decoder
Control Lines
Data Bus 8-bit
Program
Counter
Status
and Control
i
g
n
s
s
e
r
d
d
A
t
c
e
r
i
D
i
g
n
s
s
e
r
d
d
A
t
c
e
r
i
d
n
I
Interrupt
Unit
SPI
Unit
Watchdog
Timer
Analog
Comparator
i/O Module1
i/O Module 2
i/O Module n
32 x 8
General
Purpose
Registrers
ALU
Data
SRAM
EEPROM
I/O Lines
为了获得最高的性能以及并行性, AVR 采用了 Harvard 结构,具有独立的数据和程序总
线。程序存储器里的指令通过一级流水线运行。 CPU 在执行一条指令的同时读取下一条
指令 ( 在本文称为预取 )。这个概念实现了指令的单时钟周期运行。程序存储器是可以在
线编程的 Flash 。
快速访问寄存器文件包括 32 个 8 位通用工作寄存器,访问时间为一个时钟周期。从而实
现了单时钟周期的 ALU 操作。在典型的 ALU 操作中,两个位于寄存器文件中的操作数同
时被访问,然后执行运算,结果再被送回到寄存器文件。整个过程仅需一个时钟周期。
寄存器文件里有 6 个寄存器可以用作 3 个 16 位的间接寻址寄存器指针以寻址数据空间,
实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加
的功能寄存器即为 16 位的 X、 Y、 Z 寄存器。
ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器
操作。运算完成之后状态寄存器的内容得到更新以反映操作结果。
2486N–AVR–07/04
7
程序流程通过有 / 无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。大
多数指令长度为 16 位,亦即每个程序存储器地址都包含一条 16 位或 32 位的指令。
程序存储器空间分为两个区:引导程序区 (Boot 区 ) 和应用程序区。这两个区都有专门的
锁定位以实现读和读 / 写保护。用于写应用程序区的 SPM 指令必须位于引导程序区。
在中断和调用子程序时返回地址的程序计数器 (PC) 保存于堆栈之中。堆栈位于通用数据
SRAM,因此其深度仅受限于 SRAM 的大小。在复位例程里用户首先要初始化堆栈指针
SP。这个指针位于 I/O 空间,可以进行读写访问。数据 SRAM 可以通过 5 种不同的寻址模
式进行访问。
AVR 存储器空间为线性的平面结构。
AVR有一个灵活的中断模块。控制寄存器位于I/O空间。状态寄存器里有全局中断使能位。
每个中断在中断向量表里都有独立的中断向量。各个中断的优先级与其在中断向量表的
位置有关,中断向量地址越低,优先级越高。
I/O 存储器空间包含 64 个可以直接寻址的地址,作为 CPU 外设的控制寄存器、SPI,以及
其他 I/O 功能。映射到数据空间即为寄存器文件之后的地址 0x20 - 0x5F。
8
ATmega8(L)
2486N–AVR–07/04