BDTIC www.bdtic.com/ATMEL
特性
•与MCS51产品兼容的8位单片机
•增强的8051结构
–单周期指令
–时钟频率达到20MIPS运行速率
–全静态操作频率:0Hz到20MHz
–片内双周期硬件乘法器
–128 x 8内部l RAM
–4级中断优先
•非易失性程序存储
–2K字节系统内部程序 (ISP) Flash存储器
–最少10,000可重复擦写
–最少10年的数据保持时间
–32字节快速编程模式
–2级程序存储器软件加密保护
–64字节用户标识区
–2级程序存储器软件加密保护
•外围特性
–两个16位加强定时器、计数器
–两个8位PWM输出
–增强型自动地址识别和帧结构错误探测UART接口
–增强型双缓存发送接受主从式SPI接口
–带软件复位的可编程看门狗定时器
–可选中断和去抖的模拟比较器
–8个常用中断引脚
•特有属性
–双线片上调试接口
–Power-off 标志位可控布朗输出检测和上电复位
–内部RC振荡器
–低功耗空闲和低电压模式
–低电压中断恢复
•I/O和封装
–多达14个可编程 I/O口
–I/O可配置的工作方式为准双工、输入、上拉输出和开漏输出
–I/O口最大承受电压5V
–16-lead TSSOP/SOIC/PDIP封装
•工作条件
–电源电压范围 2.4V到5.5V
–温度范围 -40°C 到85°
带2K字节Flash
的8位微控制器
AT89LP216
主要功能
1. 描述
AT89LP216是一款低功耗、高性能CMOS8位单片机,它有2k字节ISPFlash存储器。产
品生产采用Atmel的高密度非易失性存储器技术而且和工业标准de的MCS51指令集相
兼容。AT89LP216基于一个加强性CPU内核,每时钟周期读取单子节指令。在经典8051
结构中,每次读取需要6个时钟周期,使得执行指令需要12、24或者48个时钟周期。
在AT89LP216CPU中,指令只需要1到4个时钟周期就可以达到传统8051速度的6到12
倍。70%的指令字节数与执行的时钟周期数相等,而且其他指令只需要一个额外时钟。
在相同功耗下,增强型CPU内核可达到20MIPS,而传统8051CPU只能达到4MIPS。相反
地,在相同的工作速率下,新CPU内核比传统的8051拥有更低的时钟速率和功耗。
本文是英文数据手册的中文
翻译,其目的是方便中国用
户的阅读。它无法自动跟随
原稿的更新,同时也可能存
在翻译上的错误。读者应该
以英文原稿为参考以获得更
准确的信息。
3621A–MICRO–6/06
AT89LP216 也拥有下列标准的特性:2K 字节 ISPFlash 存储器,128 字节 RAM、多达 12 个 I/O 口、
2 个 16 位定时器 / 计数器,两 PWM 输出,一个可编程看门狗定时器,一个全双工串口,一个串行
外围接口,一个内部 RC 振荡器,片上石英振荡器和一个 4 级、6 矢量中断系统。
AT89LP216 里的两个定时器 / 计数器增加了两个新模式。模式 0 可以被设置为 9 到 16 位的定时器
/ 计数器,模式 1 可被设置位 16 位自动装载定时器 / 计数器。此外,定时器 / 计数器可以独立驱
动 PWM 输出。AT89LP216 里面的 I/O 口能被独立配置为 4 种工作模式的其中一种。在准双工模式
中,I/O 口的工作模式和传统 8051 一样。在输入模式中,接口是三态门。推挽输出模式提供足够
的 CMOS 驱动,开漏模式则起到一个下拉的作用。另外,Port1 的所有 8 个引脚可以作为通用中断
接口。AT89LP216 的 I/O 口能承受的电压可超出电源电压达到 5.5V。当器件的电源电压为 2.4V 而
I/O 口输入 5.5V 时,所有 I/O 口的反向电流总和不超过 100 μ A。
2. 引脚图
2.1 AT89LP216: 16-lead PDIP/SOIC/TSSOP
(GPI5/MOSI) P1.5
(GPI7/SCK) P1.7
(GPI3/RST) P1.3
GND
(GPI2) P1.2
(RXD) P3.0
(T0) P3.4
(XTAL1/INT0) P3.2
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
P1.6 (MISO/GPI6)
P1.4 (SS/GPI4)
P1.1 (AIN1/GPI1)
P1.0 (AIN0/GPI0)
VCC
P3.1 (TXD)
P3.5 (T1)
9
P3.3 (INT1/XTAL2/CLKOUT)
2
AT89LP216 [Preliminary]
3621A–MICRO–6/06
3. 引脚描述
Table 3-1. AT89LP216 引脚描述
管脚 符号 类型 描述
I/O
P1.5: 用户可定义 I/O 口 1 bit 5.
1P1.5
2P1.7
3P1.3
4GND I地
5P1.2
6P3.0
7P3.4
8P3.2
I/O
MOSI: SPI 主出 / 从入 . 当设置为主机时,这个引脚是输出。当设置为从机时这个引脚为输入。
GPI5: 常用中断输入 5
I
I/O
P1.7: 用户可定义 I/O 口 1 bit 7
I/O
SCK: SPI 时钟。当设置为主机时,这个引脚是输出。当设置为从机的时候该引脚作输入用
GPI7: 常用中断输入 7
I
P1.3: 用户可定义 I/O 口 ( 如果复位保险被禁止 )
I/O
I
I
I
I/O
I
I/O
I
I/O
I/O
I/O
I
I/O
: 外部低电平有效复位输入 ( 如果复位保险被允许。见第 14 页 “外部复位”)
RST
GPI3: 常用中断输入 3
DCL: 当 OCD 有效,片上调试接口的串行时钟输入
P1.2: 用户可定义 I/O 口 1 bit 2
GPI2: 常用中断输入 2
P3.0: 用户可定义 I/O 口 3 bit 0
RXD: 串口接收输入
P3.4: 用户可定义 I/O 口 3 bit 4
T0: 计时器 / 计数器 0 外部输入或 PMW 输出
P3.2: 用户可定义 I/O 口 3 bit 2
XTAL1: 振荡器反向放大器和内部时钟产生电路输入。如果启用内部 RC 振荡器作为时钟源,则该脚也可被用作输入输
出口
DDA: 当 OCD 有效时,作片上调试接口的串行输入输出和使用内部 RC 振荡器作时钟源
AT89LP216 [Preliminary]
I/O
O
P3.3: 用户可定义 I/O 口 3 bit 3.
9P3.3
10 P3.5
11 P3 .1
12 VDD I 电源供应
13 P1.0
XTAL2: 振荡器反向放大器输出,当内部 RC 振荡器被用作时钟源时,该口可用作输入输出口
O
CLKOUT: 当内部 RC 振荡器被用作时钟源时,该口被用作内部时钟 2 分频的输出
DDA: 当 OCD 有效时,作片上调试接口的串行输入输出和使用内部 RC 振荡器作时钟源
I/O
I/O
P3.5: 用户可定义 I/O 口 3 bit 5
I/O
T1: 计时器 / 计数器 1 的外部输入或 PWM 的输出
I/O
P3.1: 用户可定义 I/O 口 3 bit 1.
O
TXD: 串口传输输出口
P1.0: 用户可定义 I/O 口 1 bit 0.
I/O
I
AIN0: 模拟比较器正向输入端
I
GPI0: 通用中断输入 0
3621A–MICRO–6/06
3
Table 3-1. AT89LP216 引脚描述
管脚 符号 类型 描述
P1.1: 用户可定义 I/O 口 1 bit 1.
I/O
14 P1.1
15 P1.4
16 P1.6
I
AIN1: 模拟比较器反向输入端
I
GPI1: 通用中断输入 1
P1.4: 用户可定义 I/O 口 1 bit 4.
I/O
I
I
I/O
I/O
I
: 从 SPI 选择输入端
SS
GPI4: 通用中断输入 4
P1.6: 用户可定义 I/O 口 1 bit 6.
MISO: SPI 接口的主机输入 / 从机输出端口。当定义为主机时,该引脚作输入端,当定义为从机时该引脚作输出端。
GPI6: 通用中断输入 6
4. 内部结构
Figure 4-1. AT89LP216 内部结构图
Single Cycle
8051 CPU
2K Bytes
Flash
128 Bytes
RAM
Port 3
Configurable I/O
Port 1
Configurable I/O
General-purpose
Interrupt
UART
SPI
Timer 0
Timer 1
Analog
Comparator
Watchdog
Timer
On-Chip
RC Oscillator
CPU Clock
Configurable
Oscillator
Crystal or
Resonator
5. 与传统 8051 的比较
AT89LP216 是具有增强功能的 51 系列单片机,它完全兼容于 MCS-51 的指令。另外,大多数
的 SFR 地址,位定义以及引脚的第二功能都与已有的 Atmel 的 51 系列单片机相同。然而,鉴于这
款单片机的高性能,某些系统性能与诸如 AT89S52 或 AT89S2051 之类的 51 系列产品有所不同。这
些不同之处将在下列章节中详细介绍。
4
AT89LP216 [Preliminary]
3621A–MICRO–6/06
5.1 系统时钟
CPU 的时钟频率与外部 XTAL1 端口的频率相同。此时振荡器不再分频以提供内部时钟,且不支持倍
频。
5.2 单周期读取指令的执行
CPU 每时钟周期从存储器中读取一个字节的指令而不是每 6 个时钟周期读取一次。这样就能极大的
提升 CPU 的性能。因为,CPU 执行指令不再需要 12 到 48 个指令周期,而只需要 1 到 4 个指令周
期。详见第 59 页 “指令设置汇总”。
5.3 中断处理
中断控制器在任意一条指令的最后一个时钟周期内获取中断标志位。在下一个到最后一个指令执
行的时钟周期中,或在前一条指令的最后一个执行时钟周期内(如果当前指令是一个单周期指令)
中断标志位必需置位为有效。
外部中断引脚, 和 ,每个时钟周期都会被采样一次,而不是每 12 个时钟周期采样一次。更短的
指令执行时间加上更快速的中断响应,保证了 CPU 对外部中断的高速响应。
5.4 定时器 / 计数器
定时器 / 计数器的步进增量默认为一个时钟周期一次。传统的 8051 需要 12 个时钟周期才增加一
次。对所有的定时器来说,时间基数可被一个比例因子整除,并且可减少步进增量频率。在特殊
功能寄存器 CLKREG 的 TPS 标志位中可设置该比例因子(见第 12 页表 9 - 2)。当设置 TPS = 1011B
时,计数器每计一次数需 12 个时钟周期。
AT89LP216 [Preliminary]
5.5 串口
5.6 看门狗定时器
5.7 I/O 口
外部定时器 / 计数器引脚,T0 和 T1,每个时钟周期而不是每 12 个时钟周期被采样一次。这
样在计数器模式中计数的频率将更高。
在模式 0 下,UART 口的波特率是系统时钟频率的一半,而传统 8051 是系统时钟的 1/12。其输出
数据仅在串行时钟的上升沿保持稳定。还需注意的是当使用定时器 1 在模式 1 或模式 3 下产生波
特率,定时器是以时钟频率计数的,而不是以时钟频率的 1/12 来计数的。要让和 8051 使用相同
系统时钟的 AT89LP216 产生同样的波特率,其时钟输出时间必需是原来的 12 倍。定时器 1 在模式
1 下支持 16 位的自动重装,这样能延长时钟输出,从而获得较低的波特率。
相对于传统的 8051 需要 12 个时钟周期才记一次数,AT89LP216 的看门狗定时器每时钟周期计一次
数。时间基数可被一个比例因子整除,并且可减少步进增量频率。
AT89LP216 的 I/O 口可定义成 4 个不同的模式。所有 I/O 口在上电或复位时都默认定义为只输入模
式 (三态门)。传统的 8051 当上电或复位时都是输出高电平的。如果要使其和 8051 一样,那么
必需清除特殊功能寄存器的 P1M0 和 P3M0,使 I/O 口进入准双工模式。用户还可通过禁止三态门用
户保险来定义端口为准双工模式。当保险被禁止时,P1M0 和 P3M0 会复位成 00h 而不是 FFh,而且
端口被拉成高电平。
3621A–MICRO–6/06
5
5.8 复位
6. 内存结构
6.1 程序存储器
AT89LP216 的复位引脚 RST 相比于 8051 的高电平有效复位它是低电平有效复位的。另外,复位引
脚每个时钟周期都采样一次,且至少保持 2 个时钟周期的低电平有效才能被确认复位有效,而不
是 24 个时钟周期。
AT89LP216 使用的是哈佛结构,它给程序存储器和数据存储器设置了独立的地址空间。程序存储器
有支持 64k 字节的直接寻址指令。数据存储器包括 128 字节的内部 RAM 和 128 字节的特殊功能寄
存器。AT89LP216 不支持外部数据存储器和外部程序存储器。
AT89LP216 包括 2k 字节的片内 FLASH。FLASH 可重复擦写 10000 次,且数据能保持 10 年。复位和
中断向量存放在程序存储器的前 59 个字节中 (参考第 19 页,表 12 - 1)。MOVC 指令可寻址 2k
字节的程序存储器。AT89LP216 不支持外部程序存储器。
Figure 6-1. 程序存储器映射
007F
User Signature Array
0040
001F
Atmel Signature Array
0000
07FF
Program Memory
0000
AT89LP216 程序存储器的映射图示于图 6 - 1。除从 0000h 到 07FFh 的 2k 字节程序存储器之外,
AT89LP216 还支持 64 字节的在 CPU 只读模式下访问的用户标识区和 32 字节的 ATMEL 标识区。必须
对 AUXR1 的 SIGEN 置位才能读标识区。当 SIGEN 为 1,使用 MOVC A,@A+DPTR 指令进入标识区。用
户标识区从0040h到007Fh,ATMEL标识区从0000h到001Fh。SIGEN需在MOVC访问指令存储器前清除。
在出厂前使用器件 ID 来初始化 ATMEL 标识区。用户标识区使用用户鉴别码或常数来初始化。存储
在标识区的数据是不安全的。安全位会使写入标识区的操作无效;然而从该区读是始终允许的。
Table 6-1.
AUXR1 = A2H 复位值 = XXXX 0XXXB
不可位寻址
AUXR1 – 辅助寄存器 1
6
AT89LP216 [Preliminary]
3621A–MICRO–6/06
6.2 数据存储器
AT89LP216 [Preliminary]
Table 6-1. AUXR1 – 辅助寄存器 1
––––SIGEN–––
Bit76543210
AT89LP216 包括 128 字节的常用 SRAM 数据存储器和 128 字节的 I/O 存储器,它们映射在一个 8 位
的地址空间中。128 字节的数据存储器可通过直接和间接对低 128 字节地址寻址进行访问。128 字
节的 I/O 存储器存放在高 128 字节的地址空间中 (图 6 - 2)。I/O 存储器只可用直接寻址访问,
且包括特殊功能寄存器 (SFRs)。对高 128 字节的寻址操作会返回无效数据。数据存储器的低 32
字节被分为 4 段分别放入 8 个存储器中。RS0 和 RS1 位 (PSW.3 和 PSW.4)决定哪个存储区域被使
用。使用寄存器寻址的指令只能访问当前区域。AT89LP216 不支持外部数据存储器
Figure 6-2. 数据存储器映射
FFH
Accessible
UPPER
128
80H
7F H
LOWER
128
By Direct
Addressing
Only
Accessible
By Direct
and Indirect
Addressing
Only
Special Function
Registers
Ports
Status and Control Bits
Timers
Registers
Stack Pointer
Accumulator
(Etc.)
7. 特殊功能寄存器
3621A–MICRO–6/06
0
特殊功能寄存器示于表 7 - 1
注:并非所有的地址被占用,未被占用的地址不能进行任何操作。读这些地址通常会返回随机数,
写访问这些地址会产生未知后果。用户不应写入这些未列表的区域,因为它们可能会被使用在新
产品中开发新功能。
7
.
Table 7-1. AT89LP216 SFR 映射和复位值
89ABCDEF
0F8H 0FFH
0F0H
0E8H
0E0H
0D8H 0DFH
0D0H
0C8H
0C0H P1M0
0B8H
0B0H
0A8H
0A0H AUXR1
98H
90H
88H
80H
Notes: 1. 所有的特殊功能寄存器最左端的列可位寻址。
B
0000 0000
SPSR
000x x000
ACC
0000 0000
PSW
0000 0000
IP
x000 0000
P3
xx11 1111
IE
0000 0000
SCON
0000 0000
P1
1111 1111
TCON
0000 0000
01234567
2. 当 3 态门保险允许时复位值是 xx11 1111B,当 3 态门保险不允许时复位值是 xx00 0000B。
SPCR
0000 0000
SADEN
0000 0000
SADDR
0000 0000
SBUF
xxxx xxxx
TCONB
0010 0100
TMOD
0000 0000
SP
0000 0111
SPDR
xxxx xxxx
(2)
xxxx 0xxx
GPMOD
0000 0000
RL0
0000 0000
TL0
0000 0000
DPL
0000 0000
P1M1
xx00 0000
GPLS
0000 0000
RL1
0000 0000
TL1
0000 0000
DPH
0000 0000
GPIEN
0000 0000
RH0
0000 0000
TH0
0000 0000
GPIF
0000 0000
RH1
0000 0000
TH1
0000 0000
(2)
P3M0
WDTRST
(write-only)
P3M1
xx00 0000
IPH
x000 0000
WDTCON
0000 x000
ACSR
xx00 0000
CLKREG
0000 x000
PCON
0000 0000
0F7H
0EFH
0E7H
0D7H
0CFH
0C7H
0BFH
0B7H
0AFH
0A7H
9FH
97H
8FH
87H
8. 增强型 CPU
8
AT89LP216 [Preliminary]
AT89LP216 使用了一个增强型的 8051CPU,它的运行速度是标准 8051的6到12倍(或3到6倍的
X28051)这种性能提升的原因有两个。第一,每个时钟周期 CPU 从指令存储器中读取一条单字节
指令。第二,CPU 使用一个简单的双线程从而使读取指令和执行指令同时进行。这个基本的线程操
作思想使 CPU 工作速率达到 1MIPS 每 MHz。一个简单的实例如图 8 - 1 所示。
3621A–MICRO–6/06
AT89LP216 [Preliminary]
MCS-51 指令设置允许指令长度为 1 到 3 字节不等。在 “单时钟周期读取单字节指令”系统中,这
意味着每条指令的字节数和时钟周期数相等。AT89LP216 的大多数指令遵循下列原则:除少数指令
外,指令执行时钟数与指令字节数相等。分支语句和调用语句相当于增加一个计算目标地址的时
钟周期,其他复杂指令需要多个周期。更多指令详情请见第59页“指令设置汇总”。图例8-2
和 8 - 3 是单字节和双字节指令执行过程。
Figure 8-1. 并行指令读取和执行
System Clock
th
Instruction
(n+1)
n
th
Instruction
Fetch Execute
(n+2)th Instruction
Figure 8-2. 单周期 ALU 操作 ( 例 : INC R0)
T
System Clock
Total Execution Time
Register Operand Fetch
n
n+1
n+2
Fetch Execute
Fetch
1
T
2
T
3
3621A–MICRO–6/06
ALU Operation Execute
Result Write Back
Fetch Next Instruction
9
Figure 8-3. 双周期 ALU 操作 ( 例 : ADD A, #data)
8.1 部分指令限制
T
1
System Clock
Total Execution Time
etch Immediate Operand
ALU Operation Execute
Result Write Back
Fetch Next Instruction
AT89LP216 在 ATMEL 单片机家族中是一个廉价的成员。它拥有 2k 字节的 FLASH 程序存储器。它兼
容了 MCS - 51 的架构,同时可用 MCS - 51 的指令对其进行编程设置。然而,某些指令有所不同。
所有跳转和分支语句都只能在物理内存 (2k 字节)的范围内。这是程序员应该注意的。比如,
LJMP 7E0H 是一条有效指令,而 LJMP 900H 则不是。
T
2
T
3
8.1.1 分枝指令
LCALL, LJMP, ACALL, AJMP, SJMP, and JMP @A+DPTR 等无条件分支指令在物理内存的范围中
(000h 到 7FFh)可直接跳转到目的地址。如果超出了物理内存的限制将会得到一个未知的运行结
果。CJNE [...], DJNZ [...], JB, JNB, JC, JNC, JBC, JZ, and JNZ 等有条件分支语句也必须
遵守这个规则。重申一遍,如果超出内存范围进行操作会引起不稳定。在中断的应用中,8051 架
构中保护了中断服务地址。
8.1.2 数据存储器,MOVX 相关指令
AT89LP216 拥有 128 字节的内部数据存储器。访问 RAM 过程中若超过 7FH 将会返回一个无效的数
据。另外,堆栈深度为 128 字节,也就是 RAM 的大小。堆栈指针不允许超过 7FH。该器件不支持对
外部数据存储器和外部程序存储器的操作。因此,程序中不应有 MOVX [...] 这样的语句。
即使超过之前所讲的物理内存的范围进行编程,典型的 8051 编译器还是会对其进行编译。所以,
用户应该本款产品的特点和一些限制,从而合理的调整程序。
9. 系统时钟
三个可选时钟源中的一个直接产生系统时钟,这可通过配置完成。这三个时钟源分别是外部晶体
振荡器、外部时钟信号、片内 RC 振荡器。如表 9-1 所示,时钟源可以通过表中时钟源用户熔丝位
10
AT89LP216 [Preliminary]
3621A–MICRO–6/06
AT89LP216 [Preliminary]
来进行选择,CPU 时钟脉冲不能通过对系统时钟的分频来得到。参阅第 71 页上的 “ 用户配置熔丝
位 ” on page 68.
Table 9-1. 时钟源设置
9.1 晶体振荡器
9.2 外部时钟信号
9.3 内部 RC 振荡器
时钟源设置位 1 时钟源设置位 0
00晶体振荡器
01保留
10外部时钟 XTAL1
11内部 8 MHz RC 振荡电路
时钟源选择
当被使能后,内部反向振荡器连接在 XTAL1 和 XTAL2 之间作为与外部石英晶体或陶瓷振荡器的连
接。当使用晶体振荡器时,P3.2 和 P3.3 将失去输入 / 输出功能。同时,XTAL2 引脚应连接一个缓
冲器来驱动板级时钟。
选用外部时钟时,振荡放大器被禁止,而 XTAL1 能被外部时钟信号直接驱动。XTAL2 可以悬空,可
以作为 P3.3 通用 I/O 功能使用,或者通过配置作为系统时钟信号的分频输出。
AT89LP216 内部有一个 8.0 MHz ± 2.5% 的 RC 振荡器。当用作时钟源时,XTAL1 和 XTAL2 可以分别
作为通用 I/O P3.2 和 P3.3 使用。XTAL2 也可以作为系统时钟的分频输出。振荡器的频率可以通过
设 置 R C 调 整 熔 丝 位 来 进 行 调 整 ( 参 考 第 7 1 页 “ 用 户 配 置 熔 丝 位 ”)。 (See “ 用户配置熔丝位 ”
on page 68.).
9.4 系统时钟输出
当配置为既不采用外部时钟,也不采用内部 RC 振荡器时,AT89LP216 可以从引脚 XTAL2(P3.3) 输
出一个系统分频时钟。这可以通过设置 CLKREG 中的 CLKREG 位来获取输出时钟的参数。其中,
CDV[1,0] 决定时钟的分频数。例如,当 COE = “1”且 CDIV = “00”,P3.3 配置为输出时,可
从 P3.3 引脚输出一个频率为 3.950 MHz ( ± 5%) 的时钟信号。
Table 9-2. CLKREG – 时钟控制寄存器
CLKREG = 8FH 复位值 = 0000 0000B
不可位寻址
TPS3 TPS2 TPS1 TPS0 – CDV1 CDV0 COE
Bit76543210
符号 功能
TPS3
TPS2
TPS1
TPS0
定时器预选器。用于为定时器 0、定时器 1 和看门狗定时器选择时基信号,是通过 4bit 递减计数器来实现预选功能。当
计数到 0 时,就把 TPS 中的预分频值重装载来得到 1 ~ 16 的分频比。在默认值 (TPS = 0000B)情况下,每个时钟周期
的到来,定时器都会计数。如果要配置为标准 8051 的速率,即 1/12 时钟周期时,必须设置 TPS=1011B。
3621A–MICRO–6/06
11
符号 功能
分频时钟输出。决定输出时钟信号的频率与系统时钟之间的关系。
CDIV1
CDIV0 输出时钟频率
CDV1
CDV0
COE
00f/2
01f/4
10f/8
11f/16
时钟输出使能。使能 COE 可以从引脚 XTAL2 (P3.3) 输出系统时钟信号的一个分频信号。这时,必须选择内部 RC 振荡器
或者外部时钟作为系统时钟源。
10. 复位
10.1 上电复位
当复位时,所有的 I/O 寄存器都初始化为默认值,输入引脚都为三态,程序从复位矢量地址 0000H
开始执行。AT89LP216 有 5 个复位源:上电复位、欠压复位、外部复位、看门狗复位和软件复位。
上电复位 (POR) 由片上电压检测电路完成,检测电平一般为 1.4V。当 VCC 低于该电平时,POR 将
被激活。因此,POR 电路可用于启动复位或者在没有欠压检测器时检测器件工作电压是否正常而复
位芯片。POR 能够保证芯片上电时复位正确。上电复位时序如第 13 页的图 10-1 所示。当 VCC 达到
上电复位阀值电压 VPOR 时,初始化序列就被执行,持续时间为 tPOR。初始化序列完成后,启动定
时器就决定器件随着 VCC 的上升而持续多长时间的 POR。当 VCC 电压低于阀值电压时,POR 在没有
任何延时的情况下再次被执行。上电复位 (即冷复位)将置位 PCON 中的 POF 标志。另外,当 RST
引脚持续低电平周期大于 Time-out 设定的时间时,芯片内部将产生复位信号。
Figure 10-1. 上电复位时序 (BOD Disabled)
V
CC
V
POR
t
POR
+ t
SUT
V
POR
Time-out
RST
(RST Tied to VCC)
Internal
Reset
RST
Internal
Reset
(RST Controlled Externally)
t
RHD
V
RH
如果同时使能了欠压检测器 (BOD),这时启动定时器只有在 VCC 达到阀值电压 VBOD 后才会开始计
数如图 10-2。然而,如果在初始化时序完成前就发生了欠压,启动定时器必须等待初始化序列完
成后才能开始计数。
12
AT89LP216 [Preliminary]
3621A–MICRO–6/06
Figure 10-2. 上电复位 (BOD 开启 )
V
BOD
V
CC
Time-out
t
POR
V
POR
t
SUT
AT89LP216 [Preliminary]
RST
(RST Tied to VCC)
Internal
Reset
RST
(RST Controlled Externally)
Internal
Reset
Note: tPOR 大约为 92 μ s ± 5%
V
RH
t
RHD
启动定时器的延时可通过配置“启动定时器用户熔丝位”和选择时钟源 (表 10-1)来完成。该启
动延时必须为 VCC 和时钟源的选择提供足够的建立时间。启动定时熔丝位用于控制芯片在欠压复
位或者从内部定时唤醒低功耗模式而所需的芯片启动时间。
Table 10-1. 启动定时器设置
SUT 熔丝 1SUT熔丝 0 时钟源 t
00
01
10
11
内部 RC/ 外部时钟信号
晶体振荡器
内部 RC/ 外部时钟信号
晶体振荡器
I 内部 RC/ 外部时钟信号
晶体振荡器
内部 RC/ 外部时钟信号
晶体振荡器
(± 5%) µs
SUT
1024
2048
1024
4096
4096
16384
16
512
10.2 欠压复位
3621A–MICRO–6/06
AT89LP216 带有一个片上欠压检测 (BOD) 电路,当在工作状态时,用于监视 VCC 并把它与预设定的
某个触发阀值进行比较。该 BOD 阀值一般为 2.2V。BOD 的目的是保证系统在全速运行时由于 VCC
的下降而不发生任何错误的执行就能正确地进入复位状态。BOD 时序如图 10-3。当 VCC 低于阀值
VBOD 时,内部复位马上被激活。当 VCC 大于该 BOD 阀值并维持到 time-out 周期后,启动定时器就
释放内部复位信号 (如表 10-1)。通过设置 BOD 使能熔丝位来使能欠压监测器 (参考第 71 页的
“ 用 户 配 置 熔 丝 位 ”)。 (See “ 用户配置熔丝位 ” on page 68.).
13
10.3 外部
10.4 看门狗复位
Figure 10-3. 欠压检测器复位
V
V
CC
V
POR
BOD
t
SUT
Time-out
Internal
Reset
引脚 P1.3/RST 既可以作为低电平有效复位输入,也可以作为通用 I/O P1.3 功能使用。当置位复
位使能熔丝位 (即置’1’)时,P1.3 被配置为外部复位输入 (参考第 71 页的 “用户配置熔丝
位”)。当清零时,P1.3 用作输入 / 输出引脚。当配置为复位输入引脚时,该引脚上的电平必须维
持至少两个时钟周期的低电平才能触发芯片内部复位。
Note: 在上电时序过程中,熔丝位的设置总是被忽略的,这时该引脚用作复位输入。连接在该引脚上的外
部电路也不能在上电时序中就把该引脚拉低,因为该低电平将使器件处于复位状态直到为高电平为
止。上电延迟后,该引脚可用于外部复位输入或者通用 I/O,这是由熔丝位的配置决定。只有上电
复位优先于复位熔丝位的设定,而其他的复位源都不能优先于复位熔丝位的设定。P1.3/RST 也用
作 ISP (在线编程)使能。当外部复位引脚为低电平时,ISP 被使能。当熔丝位配置引脚为通用
I/O 时,只有在上电时拉低引脚 P1.3,芯片才能进入 ISP 模式。
当看门狗定时器溢出时,将产生一个持续 16 个时钟周期的内部复位脉冲用于复位芯片。看门狗复
位可通过设置 WDTCON 中的 WDTOVF 标志来实现。为了防止看门狗复位芯片,必须在看门狗定时溢
出前把看门狗复位时序 1EH/E1H 写入到 WDTRST 中。(参考第 57 页 “可编程看门狗定时器”的看
门狗定时器的详细操作步骤。) See “ 可编程看门狗定时器 ” on page 55.
10.5 软件复位
11. 省电模式
11.1 空闲模式
11.2 掉电模式
把软件复位时序写入 5AH/A5H 到寄存器 WDRST 时,CPU 将产生一个维持 16 个时钟周期的内部复位
脉冲。置位 WDTCON 中的 SWRST 标志将使能软件复位功能。有关软件复位的更多信息请参考第 58
页 “软件复位”。 See “ 软件复位 ” on page 55.
AT89LP216 支持两种不同的低功耗模式:空闲模式和掉电模式。可通过寄存器 PCON 来选择模式。
置位 PCON 的 IDL 标志可进入空闲模式。空闲模式下,内部 CPU 时钟信号停止,而 CPU 还处于工作
状态,包括 RAM、堆栈指针、程序计数器、程序状态字以及累加器。另外,输入 / 输出引脚保持进
入空闲模式时刻的逻辑值。空闲模式下保持外设能运行的目的在于让他们产生中断信号而把 CPU
从空闲模式中唤醒。因此,定时器、串口、SPI 和 GPI 等模块能在空闲模式下照常运行。而比较器
和看门狗可设定为使能或禁止。任何使能的中断源或者复位信号都能结束空闲模式。当中断唤醒
空闲模式时,中断服务将立即执行,并在 RETI 后的下一条可执行指令将是下一次让器件进入空闲
模式的指令。
置位 PCON 的 PD 标志可进入掉电模式。掉电模式下,振荡器将停止振荡,且 Flash 存储器也进入
低功耗状态,来尽量降低功耗。因此,只有上电电路继续消耗功耗。在掉电模式中,供电电压可
14
AT89LP216 [Preliminary]
3621A–MICRO–6/06
以降低到能持续刷新 RAM 的电平值。这时 VCC 下降后,仍能维持 RAM 中的数据,而 SFR 中的数据
却不能保证能维持住。外部复位、上电复位或者某些中断可以使器件从掉电模式中退出。
11.2.1 外部中断唤醒掉电模式
三个外部中断可以配置为唤醒掉电模式。当引脚 XTAL1 或 XTAL2 不用作为晶体振荡器或者外部时
钟输入时,可以分别用作外部中断 (P3.2)和 (P3.3)来退出掉电模式。这时,需要使能外部
中断 或 ,并设置为低电平触发中断。当 被禁止后,GPI3 也能用来唤醒掉电模式,这时需要使能
并设置 GPI3 为低电平检测。
当用中断结束掉电模式时,可采用两种唤醒模式。如果 PCON 中的 PWDEX 标志被清零,则如图 111 所示,芯片内部产生定时来唤醒芯片,在外部中断引脚电平的下降沿时掉电模式结束,接着振荡
器起振,以及内部定时器开始计数,并直到溢出后内部时钟信号才能传送给 CPU 使用,中断服务
也是在暂停周期结束后才被执行。配置启动定时熔丝位可控制暂停周期 ( 参考第 14 页上的表 10-
1)。此时,外部中断引脚无需维持整个暂停周期的低电平。 Table 10-1 on page 13
Figure 11-1. 中断唤醒掉电模式 (PWDEX = 0)
AT89LP216 [Preliminary]
PWD
XTAL1
t
SUT
INT1
Internal
Clock
当 PWDEX = “1”时,唤醒周期是由外部中断信号来控制的。同样,在外部中断引脚电平的下降
沿就退出掉电模式,振荡器起振。然而,内部时钟信号只有在中断引脚电平的上升沿后才能被传
送给 CPU,如图 11-2。因此,中断引脚必须保持足够长时间的低电平周期使得选用的时钟源稳定
后才变为高电平。中断服务程序在跳变为上升沿后就被执行。
Figure 11-2. 中断唤醒掉电模式 (PWDEX = 1)
PWD
XTAL1
INT1
Internal
Clock
11.2.2 外部复位唤醒掉电模式
外部复位唤醒掉电模式与 PWDEX = “0”的中断唤醒情况相似。如图 11-3 所示,在 的下降沿后,
掉电模式结束,振荡器起振,以及内部定时器开始计数,并直到溢出后内部时钟信号才能传送给
CPU 使用。配置启动定时熔丝位可控制暂停周期 ( 参考第 14 页上的表 10-1)。如果 在计数溢出前
3621A–MICRO–6/06
15
就跳变为高电平,则在内部时钟重启时产生一个维持 2 个时钟周期的内部复位;否则,器件将保
持复位状态直到 变为高电平。
Figure 11-3. 外部复位唤醒掉电模式
PWD
XTAL1
t
SUT
RST
Internal
Clock
Internal
Reset
Table 11 -1. PCON – 电源控制寄存器
PCON = 87H 复位值 = 000X 0000B
不可位寻址
SMOD1 SMOD0 PWDEX POF GF1 GF0 PD IDL
Bit76543210
符号 功能
SMOD1
SMOD0
PWDEX
POF
GF1, GF0
PD
IDL
波特率加倍。当置位时,串口模式 1、2 或 3 时波特率加倍。
帧出错选择。当 SMOD0 = 0,SCON.7 为 SM0 ;当 SMOD0 = 1, SCON.7 为 FE。注意:只要帧出错,FE 马上被设置,而与
SMOD0 的值无关。
掉电模式退出。当 PWDEX = 1 时,外部信号控制唤醒;当 PWDEX = 1 时,内部定时计数唤醒。
断电标志。在上电时置位 POF ( 即冷复位 )。该标志可通过软件置位或清零,而 RST 或 BOD (即热复位)对它不产生影
响。
通用标志。
掉电模式比特位。置位时,激活掉电模式。
空闲模式比特位。置位时,激活空闲模式。
16
AT89LP216 [Preliminary]
3621A–MICRO–6/06
12. 中断
AT89LP216 [Preliminary]
AT89LP216 拥有 7 个中断源:两个外部中断、两个定时中断、一个串口中断、一个通用中断以及一
个模拟比较器中断。这些中断源和系统复位一样,在程序空间开始处都有各自的向量地址。可通
过单独置位或清零在中断允许寄存器 IE 中相应的比特位,来使能 / 禁止每一个中断源。全局中断
使能 / 禁止比特位 EA 也在 IE 寄存器中,它控制所有的中断允许。
每一个中断源 (除了模拟比较器中断外)都拥有 4 个优先级,通过置位或清零在中断优先寄存器
IP 和 IPH 中相应的比特位,可以编程为 4 个优先级中的某一级别。而模拟比较器中断固定为最低
优先级的中断。处于高优先级的中断服务程序可以中断低优先级的,但不能中断同一优先级别的
或者更高优先级别的。任何中断源都不能中断优先级最高的中断服务程序的执行。如果在某指令
结束时有两个不同级别的中断申请同时发生时,只有优先级高的中断服务被先执行;如果是同一
优先级的,由于中断矢量地址越低优先级越高,相反中断矢量地址越高其优先级越低,从而内部
产生的优先级选择时序就选择高优先级的中断来服务,即先执行中断矢量地址低的那个中断服务
程序。注意:只有在同一优先级的中断申请同时发生时,才使用优先级选择时序。
通过配置寄存器 TCON 中的 IE0 和 IE1 来产生相应的 IT0 和 IT1 标志,外部中断 和 可以设置为电
平或边沿触发。如果是边沿触发产生中断,则在进入中断服务时硬件清楚这些标志;如果是电平
触发中断,则外部信号源 (而不是片内硬件)控制这些标志。
定时器 0 和定时器 1 由相应的定时 / 计数寄存器中预设溢出值而产生中断 (除了定时器 0 的模式
3,因为该模式为波特率发生器)。当进入定时器中断服务程序时,片上的硬件会自动清楚中断申
请标志。
串口中断由寄存器 SCON 中的 RI 和 TI 标志进行逻辑或运算,以及 SPSR 中的 SPIF 标志决定。当进
入中断服务程序时,硬件不清除这些标志,需要用户手工清除。事实上,中断服务的执行就能确
定该中断是由 RI、TI 或 SPIF 中的哪一个产生的。因此,在程序中可以进行软件复位相应标志。
通用中断是由寄存器 GPIF 中的八个标志进行逻辑或运算来决定的。在进入中断服务程序时,硬件
不清除标志。中断服务程序的执行能确定该中断是由哪一个标志触发,所以在程序中需要软件复
位相应标志。如果是电平触发中断,则外部申请源在标志没有被软件清除前是不能进行申请中断
服务的。
比较器中断是由寄存器 ACSR 中的 CF 位产生。在进入中断服务程序时,硬件不清除该标志,需要
软件清除。
由于 SPI 的中断标志位 SPIF 和在 GPIF 中的通用中断标志位,只能被硬件置位和软件复位。除此
之外,大部分的中断标志都可以由软件进行置位或复位,其操作结果与硬件进行置位或复位一致。
也就是说,既可以产生中断,也可以取消还未执行的中断。
Table 12-1. 中断向量地址
3621A–MICRO–6/06
中断 中断源 地址向量
System Reset RST or POR or BOD 0000H
External Interrupt 0 IE0 0003H
Timer 0 Overflow TF0 000BH
17
12.1 中断响应时间
Table 12-1. 中断向量地址
中断 中断源 地址向量
外部中断 1 IE1 0013H
定时器 1 溢出 TF1 001BH
串行口中断 RI or TI or SPIF 0023H
通用中断 GPIF 002BH
模拟比较器 CF 0033H
中断标志在每个时钟周期由相应的硬件电路置位。中断控制器在执行指令的时钟周期结束
时设置这些标志位。如果其中的某个标志在前一个周期就被设置,轮询周期将发现它,假定该中
断没有被下面任何一个条件所阻拦,则中断系统将产生 LCALL 指令作为下一条指令来执行相应的
中断服务程序:同一优先级的或者更高优先级的中断正在处理;正在执行 RETI 指令或者正在对寄
存器 IE、IP 或 IPH 进行写入操作。其中的任何一个都能阻断产生 LCALL 指令而不能进行该中断服
务。如果正在执行 RETI 指令,或者对 IE、IP 或 IPH 进行任何的访问,则第二个条件能保证在进
行中断服务前将至少执行一条指令。在指令周期结束时,将重复产生轮询周期,而且该轮询值为
前一周期的值。如果一个置位了的中断标志被上述其中的一个条件阻断后,则就算后来该条件已
经消除了,该中断也将不再执行。换言之,置位的中断标志如果没有被马上服务,则该标志无效。
因为每个轮询周期都是重新进行的。
如果申请被激活,且条件也满足,则该中断申请服务产生一个硬件调用函数作为下一条指令来执
行,该调用函数占用 4 个周期。因此,从激活中断到开始执行中断申请至少需要 5 个周期。如果
中断申请被上述的条件阻断,则所需的响应时间会更长。如果同一优先级或更高优先级的中断正
在执行,则等待时间由正在执行的中断服务决定。如果正在执行的指令还未结束,则额外等待时
间就不大于 3 个周期,因为最多只能为 4 个周期。如果正在执行 RETI 指令,或者访问 IE 或 IP 时,
则额外等待时间就不大于 7 个周期 (最大 3 个周期去完成该指令,再外加 4 个周期去完成下一条
指令)。因此,在单个中断系统中,一个中断响应时间总为 5 ~ 13 个周期,如图 12-1 和 12-2。
Figure 12-1. 最小中断响应时间
Clock Cycles
Instruction LCALL 1st ISR Instr.Cur. Instr.
18
AT89LP216 [Preliminary]
INT0
IE0
15
Ack.
3621A–MICRO–6/06
Figure 12-2. 最大中断响应时间
AT89LP216 [Preliminary]
Clock Cycles
INT0
IE0
Instruction RETI 4 Cyc. Instr. LCALL 1st ISR
113
Ack.
Table 12-2. IE – 中断使能寄存器
IE = A8H 复位值 = 0000 0000B
可位寻址
EA EC EGP ES ET1 EX1 ET0 EX0
Bit76543210
符号 功能
EA
EC
EGP
ES
ET1
EX1
ET0
EX0
全局使能 / 禁止。当 EA = 0,禁止所有中断源;当 EA = 1,通过置位 / 复位各个中断使能位来允许各个中断源。
比较器中断使能位
通用中断使能位
串口中断使能位
定时器 1 中断使能位
外部中断 1 使能位
定时器 0 中断使能位
外部中断 0 使能位
.
Table 12-3. IP – 中断优先级寄存器
IP = B8H 复位值 = X000 0000B
可位寻址
–
Bit76543210
符号 功能
PGP
PS
PT1
PX1
PT0
PX0
3621A–MICRO–6/06
通用中断优先级低字节
串口中断优先级低字节
定时器 1 中断低字节
外部中断 1 低字节
定时器 0 中断低字节
外部中断 0 低字节
–
PGP PS PT1 PX1 PT0 PX0
19
Table 12-4. IPH –中断优先级高半位寄存器
IPH = B7H 复位值 = X000 0000B
不可位寻址
–
Bit76543210
符号 功能
–
PGH PSH PT1H PX1H PT0H PX0H
PGH
PSH
PT1H
PX1H
PT0H
PX0H
通用中断优先级高字节
串口中断优先级高字节
定时器 1 中断高字节
外部中断 1 高字节
定时器 0 中断高字节
外部中断 0 高字节
13. I/O 端口
AT89LP216作为通用I/O引脚数一般为9~12个。具体的个数由表13-1中的时钟源与复位源的选择来
决定。所有引脚的电平都采用 5V 电平逻辑。因此,即使 VCC 低到 3V,引脚都能上拉或驱动最大到
5.5V。 .
13.1 端口配置
20
AT89LP216 [Preliminary]
Table 13-1. II/O 引脚配置表
时钟源
外部晶体或振荡电路
外部时钟信号
内部 RC 振荡器
复位源 可用 I/O 数量
采用外部复位
不采用外部复位
采用外部复位
不采用外部复位
采用外部复位
不采用外部复位
11
12
12
13
13
14
AT89LP216 所有引脚都可以配置为以下 4 种模式中的一种:准双向 (标准 8051 端口)、推挽式输
出、漏极开路输出、输入模式。如表 13-2,端口模式可通过软件一个一个引脚进行配置,而三态
3621A–MICRO–6/06
AT89LP216 [Preliminary]
端口用户熔丝位决定端口引脚的默认状态。如果熔丝位使能,则在器件复位时所有端口引脚都处
于输入模式。否则,除了引脚 P1.0 和 P1.1 外,在器件复位时所有引脚都处于准双向状态并被弱
上拉。每一个引脚都具有一个施密特触发器,用于提高输入噪声容限。在掉电模式时,除了 P1.3、
P3.2 和 P3.3 要用于唤醒器件外,所有输入端的施密特触发器都被禁止因此,在掉电模式时,引脚
P1.3、P3.2 和 P3.3 不应悬空。
.
Table 13-2. 引脚模式配置表
PxM0.y PxM1.y 引脚模式
00
01
10
11
准双向
推挽式输出
输入 ( 高阻抗 )
漏极输出
13.1.1 准双向输出
准双向输出模式与标准 8051 端口相似。该模式下,无需配置端口,就既可用作输入,也可以用作
输出。因为在输出高电平时是弱驱动的,所以允许外部器件把该引脚拉低;而输出为低电平时是
强驱动的,它能吸收大电流。因此,在准双向输出时,用三个上拉晶体管来完成不同需要。
其中一个,称为 “非常弱上拉”。只要引脚锁存进逻辑电平 “1”,管子打开工作。在引脚悬空时
由于产生一个微弱的灌电流而把引脚上拉为高电平状态。
第二个,称为 “弱上拉”。只要引脚锁存进逻辑电平 “1”且该引脚也处于逻辑电平 “1”时,管
子打开工作。该上拉管子能提供较大的灌电流从而引脚输出逻辑 “1”。如果该引脚被外部器件拉
低,该上拉晶体管就关闭,所以只有非常弱的上拉效果。为了在这种情况能把该引脚拉低,外部
器件必须能吸足够大的电流而给弱上拉管子提供过强功率,使得该引脚被拉到低于阀值电压,从
而表现为低电平。
第三个,称为 “强上拉”。当端口锁存器由逻辑 “0”变为 “1”时,它能加快准双向端口从低电
平变为高电平的瞬态响应。此时,管子打开工作,并在两个时钟周期后很快地将管脚拉高。准双
向口的配置如图 13-1。在掉电模式时,引脚 P1.3、P3.2 和 P3.3 的电路不能被禁止 ( 如图 13-3)。
3621A–MICRO–6/06
21
Figure 13-1. 准双向输出
CC
CC
CC
13.1.2 输入模式
1 Clock Delay
(D Flip-Flop)
Strong
Very
Weak
Weak
Port
Pin
rom Port
egister
Input
Data
输入模式配置如图 13-2,输出驱动是三态的,而输入端包含了一个施密特触发器输入来提高输入
噪声容限。在掉电模式时,引脚 P1.3、P3.2 和 P3.3 的电路不能被禁止 ( 如图 13-3)。即使在 VCC
较低的情况下,驱动引脚的电平值可以高达 5.5V。但值得注意的是,施密特触发器的输入有可能
被该 VCC 置位。
Figure 13-2. I 输入模式
nput
ata
PWD
Port
Pin
Figure 13-3. 引脚 1.3、P3.2 和 P3.3 的输入模式
nput
Data
Port
Pin
13.1.3 漏极输出模式
在漏极输出模式下,当端口锁存进一个逻辑“0”时,端口的上拉晶体管全部关闭,而只有下拉晶
体管有效。为了能输出逻辑电平,这时一般使用一个外部上拉电阻连接到 VCC。输出电平时与准双
向情况类似。漏极输出的配置如图 13-4。在掉电模式时,引脚 P1.3、P3.2 和 P3.3 的电路不能被
禁止 ( 如图 13-3)。即使在 VCC 较低的情况下,驱动引脚的电平值可以高达 5.5V。但值得注意的
是,施密特触发器的输入有可能被该 VCC 置位。
22
AT89LP216 [Preliminary]
3621A–MICRO–6/06
13.1.4 推挽式输出模式
AT89LP216 [Preliminary]
Figure 13-4. 漏极输出模式
Port
Pin
rom Port
egister
Input
Data
PWD
推挽式输出的配置具有与漏极输出和准双向输出一致的下拉结构,但在端口锁存进逻辑“1”时它
能提供持续强上拉。在需要更多的灌电流从端口输出时,一般采用推挽式输出模式。推挽式输出
的端口配置如图 13-5。在掉电模式时,引脚 P1.3、P3.2 和 P3.3 的电路不能被禁止 ( 如图 13-3)。
Figure 13-5. 推挽式输出模式
CC
13.2 端口 1 模拟功能
AT89LP216 组建一台模拟比较器。为了达到最好的模拟性能和最小的能量消耗。用于模拟功能的
引脚的数字输入和输出都可以被设置为无效。如 22 页所描述的 “端口配制”,当端口引脚被设为
数据输入时,数据输出是无效的。只要模拟比较器通过置位 ACSR 中的 CEN 位,引脚 P1.1 和
P1.0上的数据输入就是无效的。CEN 强制PWD
发电路置为无效。无论三态门重启之后的状态。 P1.0 和 P1.1 引脚始终默认为输入模式。
13.3 端口读-修改-写
从端口读取数据时,使用哪种指令将决定读到的是端口的状态还是端口寄存器的值。简单的读指
令直接访问端口的引脚。 读 - 修改 - 写指令,就是读取一个数值,或许进行修改然后写回。这将始
终访问端口寄存器。这可能包括位指令比如:CLR 或 SETB,实际上这些指令也要访问整个端口
修改其中一位数据,然后写回整个端口。 Table 13-3 是一个读 - 修改 - 写指令的详细的表 .
rom Port
egister
Input
Data
Port
Pin
PWD
在 P1.0和P1.1 脚上输入低电平。从而将施密特触
Table 13-3. 端口 读 - 修改 - 写指令
助记符 指令 范例
ANL 逻辑与 ANL P1, A
ORL 逻辑或 ORL P1, A
XRL 逻辑 异或 XRL P1, A
3621A–MICRO–6/06
23
13.4 端口复用功能
Table 13-3. 端口 读 - 修改 - 写指令
助记符 指令 范例
JBC 置位则跳转并清零该位 JBC P3.0, LABEL
CPL 位取反 CPL P3.1
INC 自加 INC P1
DEC 自减 DEC P3
DJNZ 自减,不等于 0 时跳转 DJNZ P3, LABEL
MOV PX.Y, C 移动进位至端口 x 中的 y 位 MOV P1.0, C
CLR PX.Y 清零端口 x 中的 y 位 CLR P1.1
SETB PX.Y 置位端口 x 中的 y 位 SETB P3.2
AT89LP216 大多数的 普通 I/O 引脚可以连接多个外设。 Table 13-5 列出了端口引脚复用功能。复
用功能与处于逻辑与状态下的引脚相联系,为了使一个端口引脚具有复用功能。那个引脚必须置
位相应的寄存器。否则这个引脚的输出始终是 “0”。此外,在每个引脚被使用之前都必须对他进行
置位,来选择适当的输入输出模式,这种模式是它的外设所决定的。
Table 13-4 表示如何配置一个用于复用功能的普通引脚
Table 13-4. 为端口 x 的 y 引脚配制复用功能
PxM0.y PxM1.y Px.y I/O 模式
00 1双向 ( 内部上拉 )
01 1输出
10 X输入
11 1双向 ( 外部上拉 )
Table 13-5. 端口引脚复用功能
配制位
端口引脚
P1.0 P1M0.0 P1M1.0
P1.1 P1M0.1 P1M1.1
P1.2 P1M0.2 P1M1.2 GPI2
P1.3 P1M0.3 P1M1.3 GPI3 RST
复用功能 备注PxM0.y PxM1.y
AIN0 仅输入
GPI0
AIN1 仅输入
GPI1
必须失效
24
AT89LP216 [Preliminary]
3621A–MICRO–6/06
AT89LP216 [Preliminary]
Table 13-5. 端口引脚复用功能
配制位
端口引脚
P1.4 P1M0.4 P1M1.4
P1.5 P1M0.5 P1M1.5
P1.6 P1M0.6 P1M1.6
P1.7 P1M0.7 P1M1.7
P3.0 P3M0.0 P3M1.0 RXD
P3.1 P3M0.1 P3M1.1 TXD
P3.2 P3M0.2 P3M1.2 INT0 仅内部 RC 振荡器
P3.3 P3M0.3 P3M1.3
P3.4 P3M0.4 P3M1.4 T0
P3.5 P3M0.5 P3M1.5 T1
P3.6 没有配制 CMPOUT 引脚设定为比较器
复用功能 备注PxM0.y PxM1.y
SS
GPI4
MOSI
GPI5
MISO
GPI6
SCK
GPI7
INT1
内部 RC 振荡器或外部时钟源
CLKOUT
14. 增强定时 / 计数器
AT89LP216 有两个 16 位的定时器/ 计数器。定时器 0和定时器 1。作为定时器每个时钟周期增值。
如此,定时器计算每个时钟周期。由于一个时钟周期由一个晶振周期组成。所以计数周期就是时
钟周期 。使用定时器预测计数器,通过 1 到 16 之间的一个数值 ( 见 Table 9-2 on page 12).。定
时器速率可以被预测。两个定时器使用同一个。
作为一个计数器,寄存器根据输入引脚 T0 或 T1 的电平高低变化而自加。每个时钟周期都对外部
输入信号做抽样。当采样信号在一个周期是高电平,在下一个周期是低平时,寄存器数值加 1。在
接下来被检测到的转变周期中,新的计数值出现在寄存器里,由于需要两个时钟周期去识别一个
高低电平的变化,所以最大的采样频率是 1/2 的振荡器频率。对输入信号的占空比没有限制,但
是它至少应该持续一个完整的周期,这样在它变化前至少能被采样到一次。
此外对于定时器 0 和定时器 1 来说,定时或计数的模式有 4 种:变宽度定时器,16 位自动重装定
时器,8 位自动重装定时器,和可拆分的定时器特殊功能寄存器 TMOD 里的 C/T 位选择定时器或
计数器的功能 。 TMOD 里的 (M1, M0) 选择操作模式。
14.1 模式 0 -可变宽度的定时 / 计数器
在模式 0 情况下,两个定时器都是带有一个 8 位可预分频的计数器。通过设置 TCONB 中的 PSC
位预分频器可以在1到8位之间变化。供给定时器9到16位的变化范围,通过默认值把定时器配
置为一个 13 位定时器。这与 80c51 里的模式 0 是一样的。当计数器从全“1”到全 “0”翻转时,
它置位定时器中断标志位 TF1。对定时器而言。当 TR1 = 1 并且 GATE = 0 或者 INT1
数器的输入被激活。设定 GATE = 1 则允许定时器外部中断 INT1
能寄存器 TCON 中 TR1 是一个控制位。门空位 GATE 在模式控制寄存器 TCON 中13位寄存器由
TH1的8位和TH1的 5位构成。TH1的高 3位是不变的,应该被忽略。设置的启动标志位 (TR1)对寄
存器不进行清除。
= 1 时,计
控制用于脉冲宽度测量在特殊功
3621A–MICRO–6/06
25
PSC
01+
×
TPS
1+()×=
Mode 0: Time-out Period
256 2
------------------------------------------------------ -
Oscillator Frequency
Note: 在模式 0 情况下 RH1/RL1 对定时器 1 而言不是必要的,可以作为临时存储寄存器。
Figure 14-1. 定时 / 计数器 1 模式 0: 可变宽度计数器
OSC
T1 Pin
GATE
÷TPS
TR1
模式 0 情况下。对定时器 0 和定时器 1 的操作是一样的, 只是 TR0 和 TF0 还有 INT0
Figure 14-1 上相应的定时器 1 的信号。这里有两个不同的门控制位,一个用于定时器 1(TMOD.7)
另外一个用于定时器 0(TMOD.3)。引脚 INT0
作为系统时钟时,它们仅被用于门控制功能。
14.2 模式 1-16 位自动充装定时 / 计数器
在模式 1 的情况下,配置定时器用于 16 位自动重装。定时器的寄存器运行在 16 位模式下。 16 位
的重装值储存在 (RH1/RL1) 这两个寄存器中,时钟被用于组合高、低寄存器 (TH1/TL1)。收到时
钟脉冲,定时器就把他们相加起来,0000H, 0001H, 0002H 依次类推,溢出出现在 FFFH 到 0000H
的转变时,此时寄存器被装入来自 RH1/RL1 的值。溢出位 TCON 被置位。见 Figure 14-2 重装的
值默认是 0000H,提供给全部 16 位的定时器周期,和标准的 8051 相同。模式 1 操作对定时器 0
和定时器 1 是相同的。 .
Mode 1: Time-out Period
C/T = 0
C/T = 1
Control
TL1
(8 Bits)
PSC1
TH1
(8 Bits)
TF1
Interru
代替了图
和 INT1 分享 XTAL 处的振荡器频率。当用内部 RC
65536
------------------------------------------------------ -
Oscillator Frequency
RH0RL
0{, }–()
TPS
1+()×=
26
Figure 14-2. 定时 / 计时器 1 模式 1: 16 位自动重装
OSC
T1 Pin
GATE
÷TPS
TR1
AT89LP216 [Preliminary]
C/T = 0
C/T =1
Control
RL1
(8 Bits)
TL1
(8 Bits)
RH1
(8 Bits)
TH1
(8 Bits)
Reload
TF1
Interru
3621A–MICRO–6/06
14.3 模式 2 8 位自动重装定时 / 计数器
模式 2 下配置的定时器是一个有自动重装功能的 8 位计数器 (TL1)。如 图 Figure 14-3 所示,从 TL1
溢出不仅需要置位 TF1,还需要软件设置好 TH1 的值,重装入 TL1。 在装入保持 TH1 不变,模
式 2 操作对定时器 0 和定时器 1 是一样的。 .
Mode 2: Time-out Period
Figure 14-3. 定时器 1 模式 2 8 位自动重装
AT89LP216 [Preliminary]
256
TH
------------------------------------------------------ -
Oscillator Frequency
0–()
TPS
1+()×=
Note: 在模式 2 情况下 RH1/RL1 对定时器 1 而言是没有用的,可以作为临时寄存器。
14.4 模式 3 可拆分定时器
定时器 1 在模式 3 情况下仅仅保留它的计数功能。效果和设置 TR1 = 0 一样。模式 3 下的定时器
0 设置了 TL0 和 TH0 作为两个单独的计数器。模式 3 下,定时器 0 如图 Figure 14-4 所示。 TL0
使用了定时器 0 的控制位 : C/T, GATE, TR0, INT0
器周期 ) 接替来自定时器 1 中的 TR1 和 TF1 的功能。 因此 TH0 控制定时器 1 的中断 ,当定时器
0 处与模式 3 状态时,定时器 1 仍然遵循它在模式控制寄存器 TMOD 中的设置。
因为需要一个而外的 8 位定时器或计数器,所以才有了模式 3。定时器 0 在模式 3 下的应用使得
AT89LP216有了3个定时/计数器。 当定时器0处于模式3时, 定时器1可以通过转换进入或离开模
式 3,启动或停止。这种情况下,定时器 1 仍然能被使用,可以作为波特率发生器不需要任何中
断场合都可以使用
OSC
T1 Pin
INT0 Pin
GATE
÷TPS
TR1
C/T = 0
C/T = 1
Control
TL1
(8 Bits)
TH1
(8 Bits)
Reload
TF1
Interrupt
, 和 TF0. TH0 被锁定成定时器功能 , ( 计数机
3621A–MICRO–6/06
Figure 14-4. 定时/计数器0 模式 3: 双 8 位计数器
÷TPS
T0 Pin
GATE
INT0 Pin
÷TPS
Note: 在模式 3 情况下 RH1/RL1 对定时器 1 而言是没有用的,可以作为临时寄存器。
C/T = 0
C/T =1
Control
Control
(8 Bits)
(8 Bits)
Interrupt
Interrupt
27