ATMEL AT89LP214 User Manual

BDTIC www.bdtic.com/ATMEL
特性
MCS
增强型 8051 体系结构
非易失性程序存储器
外围特性
特殊微控制器特性
I/O 和封装
工作条件
®
51 系列相兼容的 8 位微控制器
单时钟周期字节取指能力 – 20 MHz 时钟频率下吞吐量达 20 MIPS – 全静态工作 : 0 Hz 20 MHz – 片上 2 周期硬件乘法器 – 128 x 8 内部 RAM –4个中断优先级
–2KB系统内可编程 (ISP) Flash 存储器寿命 : 可重复擦写最少 10,000 数据保持能力 : 最少 10 程序下载串行接口 –32字节快速页面编程模式 –64字节用户签名数组区 –2级存储锁保证软件安全
2个16-bit 增强型定时器 / 计数器2个8-bit PWM 输出端 ( AT89LP213 ) – 带自动地址识别和帧错误检测的增强型 UART ( AT89LP214) – 带双缓冲器可收发增强型主 / SPI – 可软件复位的可编程看门狗定时器带可选中断和反跳的模拟比较器 –8个通用中断引脚
双线 (TW)片上调试接口掉电检测以及用断电标志上电复位内部 RC 振荡器低功耗省电和掉电模式从掉电模式的中断恢复功能
12 个可编程 I/O 线可配置 I/O:准双向 , 输入 , 推挽式输出 , 开漏共四种模式 –5V耐压能力的 I/O –14针 TSSOP 或 PDIP
–2.4V到 5.5V V –-40°C 85°C 温度范围
电压范围
CC
2K 字节 Flash8-bit 微控制器
AT89LP213 AT89LP214
Preliminary

1. 描述

AT89LP213/214 是低功耗的高性能的 CMOS 8位微控制器,带有 2K 字节的系统内可编Flash 存储器。该设备的生产使用了 Atmel 的高密度非易失性存储器技术并且与工业 标准的 MCS-51 指令集相兼容。 AT89LP213/214 的构建基于增强型的每时钟周期可取 一字节指令的 CPU 核心。在经典的 8051 体系结构中,每取一字节需要 6 个时钟周期, 这使得执行指令需要 12, 24 48 个时钟周期。在 AT89LP213/214 CPU 中,执行指令 只需要 1 4 个时钟周期,因而吞吐量比标准的 8051 6 12 倍。百分之七十的指 令的执行只需要与其字节数相同的时钟周期。
本文是英文数据手册的中文 翻译,其目的是方便中国用 户的阅读。它无法自动跟随 原稿的更新,同时也可能存 在翻译上的错误。读者应该 以英文原稿为参考以获得更 准确的信息。
3538A–MICRO–6/06
其余的指令的执行只需要比其字节数多一个的时钟周期。增强型的 CPU 核心有 20 MIPS 的吞吐 能力,而经典的 8051 CPU 在同样的工作电流下只能达到4 MIPS 另一方面,保持与经典的 8051 一样的吞吐量时,这个新的 CPU 核心工作在低得多的速度下从而极大程度地降低了功耗。
AT89LP213/214提供下列标准特性:2K 字节系统内可编程 Flash 存储器,128字节 RAM,12 条 I/O 线,2 个 16 位定时器 / 计数器,2 个 PWM 输出端 ( 仅 AT89LP213 ),一个可编程看门狗定时器, 一个全双工串口 ( 仅 AT89LP214),一个串行外围接口,一个内部 RC 振荡器,片上晶振,一个 4 优先级的 6 向量中断系统。
AT89LP213/214的两个 16位定时器/ 计数器有两个新的模式。模式0可以配置为9到16位可变的定 时器 / 计数器,模式 1 可以配置为 16 位自动重载的定时器 / 计数器。此外, AT89LP213 的两个定 时器 / 计数器还可独立地驱动一个脉冲宽度调制输出端。
AT89LP213/214 I/O 口可独立地配置为四个工作模式下的一种。在准双向模式下,端口工作方 式与经典 8051 相同。在输入模式下,端口是三态的。推挽式输出模式提供完全的 CMOS 驱动, 开漏模式提供一个下拉电阻。此外, Port 1 的 8 个引脚都可使用通用中断接口配置为中断源。 AT89LP213/214 I/O 的耐压值比设备自身的供电电源要高,可达 5.5V。当设备供电电压为 2.4V 而所有的 I/O 口接收为 5.5V 信号时,所有 I/O 总的回流电流 少于 100 µA。

2. 引脚配置

2.1 AT89LP213: 14 针 TSSOP/PDIP

2.2 AT89LP214: 14 针 TSSOP/PDIP

(GPI5/MOSI) P1.5
(GPI7/SCK) P1.7
(GPI5/RST) P1.3
GND
(GPI2) P1.2
(T0) P3.4
(INT0/XTAL1) P3.2
(GPI5/MOSI) P1.5
(GPI7/SCK) P1.7
(GPI5/RST) P1.3
GND
(GPI2) P1.2
(RxD) P3.0
(INT0/XTAL1) P3.2
1 2 3 4 5 6 7
1 2 3 4 5 6 7
14
P1.6 (MISO/GPI6)
13
P1.4 (SS/GPI4)
12
P1.1 (AIN1/GPI1)
11
P1.0 (AIN0/GPI0)
10
VCC
9
P3.5 (T1)
8
P3.3 (XTAL2/CLKOUT/INT1)
14
P1.6 (MISO/GPI6)
13
P1.4 (SS/GPI4)
12
P1.1 (AIN1/GPI1)
11
P1.0 (AIN0/GPI0)
10
VCC
9
P3.1 (TxD)
8
P3.3 (XTAL2/CLKOUT/INT1)
2
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06

3. 引脚描述

Table 3-1. AT89LP213 引脚描述
引脚 符号 类型 描述
I/O
1P1.5
2P1.7
3P1.3
4GND I
5P1.2
I/O
I/O I/O
I/O
I/OIP1.2: 用户可配置 I/O 口, Port 1 bit 2.
P1.5: 用户可配置 I/O, Port 1 bit 5. MOSI: SPI 主-输出/ - 输入。当配置为主控端时,为输出引脚。当配置为从控端时,为输入引脚。 GPI5: 通用中断输入端 5.
I
P1.7: 用户可配置 I/O 口, Port 1 bit 7. SCK: SPI 时钟。 当配置为主控端时,为输出引脚。当配置为从控端时,为输入引脚。 GPI7: 通用中断输入端 7.
I
P1.3: 用户可配置 I/O 口, Port 1 bit 3 ( 若禁止复位保险 ).
I I I
: 外部 Active-Low 复位输入端 ( 若使能复位保险, See “ 外部复位 ” on page 15).
RST GPI3: 通用中断输入端 3. DCL: 当使能 OCD 时作为片上调试接口的串行时钟输入。
GPI2: 通用中断输入端 2.
AT89LP213/214 [Preliminary]
6P3.4
7P3.2
8P3.3
9P3.5
10 VDD I 电源电压
11 P1. 0
12 P1.1
I/O I/O
I/O
I/O
I/O
I/O
I/O I/O
I/O
I/O
P3.4: 用户可配置 I/O 口, Port 3 bit 4. T0: 定时器 / 计数器 0 外部 输入或 PWM 输出 .
P3.2: 用户可配置 I/O 口, Port 3 bit 2.
I
XTAL1: 输入到反向晶振放大器和内部时钟发生电路。若采用内部 RC 振荡器作为时钟源时,它可用作一 个端口引脚 .
DDA: 当使能 OCD 并采用内部 RC 振荡器作为时钟源时,作为片上调试接口的串行数据输入 / 输出。
O
P3.3: 用户可配置 I/O 口, Port 3 bit 3. XTAL2: 从反向晶振放大器输出。若采用内部 RC 振荡器作为时钟源时,它可用作一个端口引脚 .
O
CLKOUT: 若采用内部 RC 振荡器作为时钟源时,可用于输出内部时钟的二分频。 DDA: 当使能 OCD 并采用外部时钟作为时钟源时,作为片上调试接口的串行数据输入 / 输出。
P3.5: 用户可配置 I/O 口, Port 3 bit 5. T1: 定时器 / 计数器 1 外部 输入或 PWM 输出 .
P1.0: 用户可配置 I/O 口, Port 1 bit 0.
I
AIN0: 正极输入模拟比较器 .
I
GPI0: 通用中断输入端 0.
P1.1: 用户可配置 I/O 口, Port 1 bit 1.
I
AIN1: 负极输入模拟比较器 .
I
GPI1: 通用中断输入端 1
13 P1.4
14 P1.6
3538A–MICRO–6/06
I/O
I/O I/O
P1.4: 用户可配置 I/O 口, Port 1 bit 4.
I I
I
:SPI 从控选择输入引脚 .
SS GPI4: 通用中断输入端 4.
P1.6: 用户可配置 I/O 口, Port 1 bit 6. MISO: SPI 主控 - 输入 / 从控 - 输出。 当配置为主控端时,为输入引脚。当配置为从控端时,为输出引脚。 GPI6: 通用中断输入端 6.
3
Table 3-2. AT89LP214 引脚描述
引脚 符号 类型 描述
1P1.5
2P1.7
I/O I/O
I/O I/O
P1.5: 用户可配置 I/O 口, Port 1 bit 5. MOSI: SPI 主-输出/ - 输入。当配置为主控端时,为输出引脚。当配置为从控端时,为输入引脚。 GPI5: 通用中断输入端 5.
I
P1.7: 用户可配置 I/O 口, Port 1 bit 7. SCK: SPI 时钟。 当配置为主控端时,为输出引脚。当配置为从控端时,为输入引脚。 . GPI7: 通用中断输入端 7.
I
I/O
3P1.3
4GND I
5P1.2
6P3.0
7P3.2
8P3.3
9P3.1
10 VDD I 电源电压
11 P1. 0
12 P1.1
13 P1.4
14 P1.6
I/OIP1.2: 用户可配置 I/O 口, Port 1 bit 2.
I/OIP3.0: 用户可配置 I/O 口, Port 3 bit 0.
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O I/O
P1.3: 用户可配置 I/O 口, Port 1 bit 3 ( 若禁止复位保险 ).
I I I
I
O
O
O
I I
I I
I I
I
: 外部 Active-Low 复位输入端 ( 若使能复位保险, See “ 外部复位 ” on page 15).
RST GPI3: 通用中断输入端 3. DCL: 片上调试接口的串行时钟输入。
GPI2: 通用中断输入端 2.
RXD: 串行端口接收端输入 .
P3.2: 用户可配置 I/O 口, Port 3 bit 2. XTAL1: I 输入到反向晶振放大器和内部时钟发生电路。若采用内部 RC 振荡器作为时钟源时,它可用作一
个端口引脚。
DDA: 当使能 OCD 并采用内部 RC 振荡器作为时钟源时,作为片上调试接口的串行数据输入 / 输出。 .
P3.3: 用户可配置 I/O 口, Port 3 bit 3. XTAL2: 从反向晶振放大器输出。若采用内部 RC 振荡器作为时钟源时,它可用作一个端口引脚 . CLKOUT: 若采用内部 RC 振荡器作为时钟源时,可用于输出内部时钟的二分频。
DDA: 当使能 OCD 并采用外部时钟作为时钟源时,作为片上调试接口的串行数据输入 / 输出。
P3.1: 用户可配置 I/O 口, Port 3 bit 1. TXD: 串口发送端输出 .
P1.0: 用户可配置 I/O 口, Port 1 bit 0. AIN0: 正极输入模拟比较器 . GPI0: 通用中断输入端 0.
P1.1: 用户可配置 I/O 口, Port 1 bit 1. AIN1: 负极输入模拟比较器 . GPI1: 通用中断输入端 1
P1.4: 用户可配置 I/O 口, Port 1 bit 4.
: SPI 从控选择输入引脚 .
SS GPI4: 通用中断输入端 4.
P1.6: 用户可配置 I/O 口, Port 1 bit 6. MISO: SPI 主控 - 输入 / 从控 - 输出。 当配置为主控端时,为输入引脚。当配置为从控端时,为输出引脚。 GPI6: 通用中断输入端 6.
4
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06

4. 方框图

Figure 4-1. AT89LP213 模块框图
Single Cycle
8051 CPU
2KB Flash
128 Bytes
RAM
Por t 3
Configurable I/O
Por t 1
Configurable I/O
General-purpose
Interrupt
AT89LP213/214 [Preliminary]
SPI
Timer 0 Timer 1
Analog
Comparator
Watchdog
Timer
On-Chip
RC Oscillator
CPU Clock
Configurable
Oscillator
Crystal or
Resonator
Figure 4-2. AT89LP214 模块框图
Single Cycle
8051 CPU
2KB Flash
128 Bytes
RAM
Port 3
Configurable I/O
Port 1
Configurable I/O
General-purpose
Interrupt
CPU Clock
3538A–MICRO–6/06
UART
SPI
Timer 0 Timer 1
Analog
Comparator
Watchdog
Timer
On-Chip
RC Oscillator
Configurable
Oscillator
Crystal or
Resonator
5

5. 与标准 8051 比较

AT89LP213/214 是完全与 MCS-51 指令集兼容的带增强特性的控制器系列的一部分。此外,大部 分 SFR 地址,位分配和引脚转换功能与 Atmel 现有的标准 8051 系列产品相一致。不过,由于该 微控制器有更高的性能,一些系统级行为则与象 AT89S52 AT89S2051 这样的 Atmel 的标准 8051 产品有所不同。与标准 8051 的这些不同之处罗列如下:

5.1 系统时钟

CPU 时钟频率与外部 XTAL1 频率相等。振荡器不再作二分频用于提供内部时钟,同时 x2 模式也不 再支持。

5.2 指令执行时每时钟周期取一字节指令

CPU 每一个时钟周期从内存取一字节代码,而不再是 6 个时钟周期。这极大地增加了 CPU 的吞吐 量。于是, CPU 执行指令不再需要 12 48 个时钟周期。每条指令的执行仅在 1 到 4 时钟周期 内完成。详细见 See “ 指令机摘要 ” on page 57 .

5.3 中断处理

中断控制器在每个指令的最后的时钟周期轮询中断标志。为使在最后的指令周期响应某个中断请 求,其中断标志需要在该指令的最后的时钟周期到来前一直锁存为有效,如果该指令为单时钟周 期执行的指令则需要在前一指令的最后一个时钟周期内一直保持有效。

5.4 定时器 / 计数器

5.5 串口

外部中断引脚 INT 令时序和更快的中断响应,使得对外部事件的中断的最快响应速率更高。
缺省情况下,定时器 / 计数器的计数频率为一个时钟周期。相比之下,标准 8051 是每 12 个时钟 周期计数一次。 一个通用预定器可用于为所有的定时器划分时间基并降低计数速率。 CLKREG SFR中的TPS位控制预定器 (Table 9-2 on page 13). 设置TPS = 1011B将使定时器每12时钟周期 计数一次。
外部定时器 / 计数器引脚 T0 T1 在每个时钟周期采样一次,而非 12 个时钟周期。这增加了计数 器模块的最大工作速率。
UART在模式0下的波特率是时钟频率的1/2,在 标 准 8051中则是时钟频率的1/12 ;输出数据仅在 串行时钟的上升沿有效。 还应该注意,使用定时器 1 在模式 1 或模式 3 下发生波特率时,定时器 以时钟频率计数而非时钟频率的 1/12。当 AT89LP214 与标准 8051 工作在同一频率时,为保持 AT89LP214具有相同的波特率,则 延迟时间必须为12倍时钟周期。定时器1的模式1支持16位自动 重载,可以用于较长的 时间延迟以产生较低的波特率。
0 和 INT1 每个时钟周期采样,而非每 12 个时钟周期采样一次。有了更端的指
6
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06

5.6 看门狗定时器

5.7 I/O 端口

5.8 复位

6. 存储器结构

AT89LP213/214 [Preliminary]
AT89LP213/214的看门狗定时器的计数速率与时钟周期一致。相比之下,标准8051则每12 个时钟 周期计数一次。 一个通用预定器可用于为所有的定时器分频时间基并降低计数速率。
AT89LP213/214I/O端口可配置为四种模式。缺省情况下,掉电或复位时I/O端口回到只读 ( 三态 ) 模式 。在 标 准 8051 中,所有端口在掉电或复位时仅下拉至低电平。为使能类似 8051 的端口,端 口必须设置为准双向模式,这通过清零P1M0P3M0 SFR来实现。用户还可以通过禁止 Tristate­Port User Fuse(三态用户保险)来将端口配置为准双向模式起始方式。当禁止该保险时,P1M0 P3M0 将复位到 00h 而非 FFh,并且端口会上拉到高电位。
AT89LP213/214RST 引脚是低电位触发的,而在标准 8051中,则是高电位复位。此外, RST
脚每时钟周期采样一次,并且必须最少保持低电位 2 个时钟周期,而非 24 个时钟周期,这样才能 识别为有效的复位信号。
AT89LP213/214 使用哈佛体系结构,程序和数据存储器的地址线分离。程序存储器使用常规的线 性地址空间,支持达 64K 字节的可直接寻址的应用代码。数据存储器有 128 字节的内部 RAM 以及 128字节的特殊功能寄存器I/O 空间。AT89LP213/214不支持外部数据存储器或外部程序存储器。

6.1 程序存储器

AT89LP213/214包含2K字节的片上系统内可编程Flash存储器用于保存程序。Flash存储器的使用 寿命至少为 10,000 次重复擦写,并且数据保持能力可达 10 年。复位和中断向量放在程序存储器 的开头的 59 字节 ( 参考 Table 13-2 on page 23)。常量表放在整个 2K 程序存储器地址空间,可 被 MOVC 指令访问。 AT89LP213/214 不支持外部程序存储器。
Figure 6-1. 程序存储器映射
007F
User Signature Array
0040
001F
Atmel Signature Array
0000
07FF
Program Memory
0000
3538A–MICRO–6/06
7
AT89LP213/214 的程序存储器的一个映射见 Figure 6-1。除 了 2K 0000h 07FFh 的代码空间 外, AT89LP213/214 还支持一个 64 字节的用户签名数组和一个 32 字节的 Atmel 签名数组,它 们可以只读模式被 CPU 访问。为从签名数组中读取信息,必须设置 AUXR1 SIGEN 位。当
SIGEN是1时,MOVC A,@A+DPTR可访问签名数组。用户签名数组映射到地址 0040h到 007Fh, Atmel签名数组映射到地址 0000h~001Fh。在 使 用 MOVC指令访问代码存储区时必须将 SIGEN
零。
Atmel签名数组在出厂时用设备ID进行初始化。用户签名数组则可用作用户ID或者常参数据保存。 保存在签名数组中的数据是不安全的。安全位可禁止对该数组的写操作;但是,读取永远是被允 许的。

6.2 数据存储器

Table 6-1.
AUXR1 = A2H 复位值 = XXXX 0XXXB
不可位寻址
76543210
AT89LP213/214包含128字节的通用 SRAM数据存储器,另外还有128字节的I/O存储区,映射到 一个 8 位地址空间。128 字节的数据存储器可以通过对低 128 字节地址进行直接或间接寻址 来访 问。 128 字节的 I/O 存储区驻留在较高的 128 字节地址空间 (Figure 6-2)。 I/O 存储区只能通过直 接寻址方式访问并且包含特殊功能寄存器 (SFRs)。对较高的 128 字节地址的间接访问会返回无效 数据。数据存储器的最低的 32 个字节被分为 4 个组,每组有 8 个寄存器。RS0 和 RS1 位 (PSW.3 和 PSW.4) 选择使用哪个寄存器组。使用寄存器寻址的指令只访问当前指定的寄存器组。 AT89LP213/214 不支持外部数据存储器。
Figure 6-2. 数据存储器映射
FFH
AUXR1辅助寄存器 1
––––SIGEN–––
Accessible
UPPER
128
80H
7F H
LOWER
128
0
8
AT89LP213/214 [Preliminary]
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.)
3538A–MICRO–6/06
AT89LP213/214 [Preliminary]

7. 特殊功能寄存器

有一块片上存储区域的映射叫作特殊功能寄存器 (SFR) 空间,见 Table 7-1.
要注意并没有占用所有的地址,而没有使用的地址是在芯片上不可用的,读这些地址通常会返回 任意数据,而写操作会发生不可预料的结果。用户程序不应该对这些没有列出的地址进行写操作, 因为它们可能用于在将来的产品中引入新的特性。
Table 7-1. AT89LP213/214 SFR 映射和复位值
89ABCDEF
0F8H 0FFH
0F0H
0E8H
0E0H
0D8H 0DFH
0D0H
0C8H
0C0H P1M0
0B8H
0B0H
0A8H
0A0H AUXR1
98H
90H
88H
80H
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
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
Notes: 1. 最左边一列的所有 SFR 都是位可寻址的。
2. 当三态端口保险打开时,复位值为 xx11 1111B ,否则为 xx00 0000B
3538A–MICRO–6/06
9

8. 加强型 CPU

T
T
T
AT89LP213/214 使用一个加强型的 8051 CPU,它的运行速度是普通8051单片机的6到12倍。( 或 者说是 X2 型 8051 单片机速度的 3 到 6 倍 ). 速度的增加归功于下面两条因素。首先 ,CPU 每个时 钟周期就从代码存储器中取一条指令字节 .。其次 , CPU 使用一个二级流水线并行的取指令和执行 指令。这种基本的流水线操作理念使 CPU 的速度高达 1 MIPS 每 MHz。简单示例如图 Figure 8-1.
MCS-51 指令系统允许它的指令的长度可变。变化范围是 1 到 3 字节。在一个每字节单时钟取指令 的系统中,执行每一条指令至少需要和这条指令字节数一样多的机器时钟数 AT89LP213/214 中的大多数指令遵循如下规则 : 每一条指令的执行时间 (需要的时钟周期数)等于这条指令包含 的字节数 (有一些特例除外)。分支和调用需要一个额外的时钟周期以计算目标地址,并且某些 复杂的指令需要多个时钟周期。对于每一条指令的细节,请参见 59 页 “指令集摘要”Figures
8-2 and 8-3 显示了一字节长和两字节长指令的情况。 .
Figure 8-1. 取得和执行并行指令
System Clock
th
n
(n+1)
Instruction
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
10
ALU Operation Execute
Result Write Back
Fetch Next Instruction
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06
AT89LP213/214 [Preliminary]
F
Figure 8-3. 两个周期的 ALU 操作 ( 例如 : ADD A, #data)

8.1 某些特殊指令的限制

AT89LP213/214 是 ATMEL 日益成长的微处理器家族的一款经济型性价比高的芯片。它包含 2K字节 的闪存程序存储器 . 他完全兼容于普通的 MCS-51 架构。可以使用 MCS-51 指令集编程。 然而在 使用某些特殊指令编程此芯片时,需要考虑某些特殊的情况。 所有关系到跳转或分支的指令都需 要考虑 AT89LP213/214 的闪存程序存储器的大小是 2K, 所以定义地址时,一定要注意不要超过这 个物理地址的极限。这就需要软件编程者多多注意。例如, LJMP 7E0H 是一条有效的指令,然而 LJMP 900H 就是一条无效的指令
System Clock
Total Execution Time
etch Immediate Operand
ALU Operation Execute
Result Write Back
Fetch Next Instruction
T
1
T
2
T
3
8.1.1 分支指令 只要编程时注意定义的分支地址在程序存储器尺寸 (AT89LP213/214 的地址范围从 000H
7FFH )范围以内,那么这些无条件分支命令 LCALL, LJMP, ACALL, AJMP, SJMP, 和 JMP @A+DPTR 就可以正确的运行。 如果超出了它的物理地址的范围,将会造成无法预直的错误结
果。有条件分支命令例如 CJNE [...], DJNZ [...], JB, JNB, JC, JNC, JBC, JZ, JNZ 等,情况与上 面的无条件分支命令相同。同样 ,如果超出了它的物理地址的范围,将会造成无法预直的错误结 果。 如果应用程序使用了中断,那么中断处理程序的入口地址同 8051 架构单片机的入口地址相 同。
8.1.2 MOVX 的相关指令 , 数据存储器 AT89LP213/214 包含 128 字节的内部数据存储器 . RAM 的存取地址如果超过 7FH 会返回无效的 数据。而且,堆栈的深度限制在 128 字节,与有效的 RAM 大小相同。堆栈指针也不可以指向的地
址大于 7FH. 这款芯片不支持外部数据存储器存取,也不支持外部程序存储器。 因此 , 命令 MOVX [...] 在这款芯片上不能使用。
在通常的 8051 汇编程序中,即使我们写的语句违反了上面我们所说的这些限制,指令仍然可以集 合起来。所以,编程者必须知道芯片的物理特点和限制,以正确的使用命令。
.
3538A–MICRO–6/06
11

9. 系统时钟

系统时钟直接有 3 个可选择的时钟源中的一个来产生。这 3 个时钟源分别是芯片内部的晶振,外 部时钟源和一个内部的 RC 震荡器。时钟源的选择是通过 Table 9-1 中的 Clock Source User Fuses 来设定的。并没有内部的时钟分频器对系统时钟分频得到 CPU 时钟,参见 用户配置引脚 ” on page
69.
Table 9-1. 时钟源设定

9.1 晶振

9.2 外部时钟源

9.3 内部 RC 振荡器

Clock Source
Fuse 1
00晶振
01保留
1 0 XTAL1 上的外部时钟
11内部的 8 MHz RC 振荡器
当晶振被激活以后,内部的反向振荡放大器就被连接在 XTAL1 和 XTAL2 之间以连接一个外部的石 英晶振或者陶瓷振荡器。当使用晶振的时候,应该使 P3.2 和 P3.3 的输入或输出无效,XTAL2 不 可以在没有缓冲的情况下被用于驱动一个板级的时钟。
选择外部时钟会使振荡放大器无效并且允许 XTAL1 直接由时钟源来驱动。XTAL2 可以不连接,被用 做 P3.3 I/O 口,或者配置成为输出系统时钟的分开的版本。
AT89LP213/214 有一个内部的 RC 振荡器,频率范围在 8.0 MHz ±2.5%. 当它被激活作为时钟源 的时候, XTAL1 和 XTAL2 可分别作为 P3.2 和 P3.3 。 XTAL2 也可以 配置成为输出系统时钟的 分开的版本。 . 可以通过改变 RC Adjust Fuses 来调节振荡器的频率 . (See “ 用户配置引脚 ” on
page 69).
Clock Source
Fuse 0 选择的时钟源

9.4 系统时钟输出

12
AT89LP213/214 [Preliminary]
AT89LP213/214 被配置为使用外部时钟或内部 RC 振荡器的时候, XTAL2 (P3.3) 输出系统时钟 divided version 。可以通过设置 CLKREG 的 COE 位来激活此输出。两个 CDV 位决定了时钟的分 频数。 例如,当使用内部振荡器时,设定COE = “1” and CDIV = “00”将使P3.3的输出为3.950Mhz. 在使用时钟输出功能时,P3.3 必须设定为输出。
3538A–MICRO–6/06
AT89LP213/214 [Preliminary]
Table 9-2.
CLKREG = 8FH 复位值 = 0000 0000B
不可位设定
Bit76543210
符号 Function
TPS3 TPS2 TPS1 TPS0
CDV1 CDV0
COE
CLKREG时钟控制寄存器
TPS3 TPS2 TPS1 TPS0 CDV1 CDV0 COE
预脉冲计数器 . 预脉冲计数器从计数器 0。计数器 1,看门狗计数器中选择一个计数器。预脉冲计数器是一个 4 位二进制 的向下的计数器。当计数器计到 0 时,它会重载存储在 TPS 位中的值,从而给出分频的值。这个值的范围是从 1 到 16。 在默认情况下,每一个时钟,周期计数器都会计数。 (TPS = 0000B). 如果想配置计数器工作在通用的 8051 单片机情况下
(即每 12 个时钟周期计数),TPS 需要设定为 1011B.
时钟输出分频 . 决定了相对于系统时钟的始终输出频率。 .
CDIV1
00f/2
01f/4
10f/8
11f/16
时钟输出激活 . 设定 COE 以确定在 XTAL2 (P3.3)上输出的系统时钟的分频率。要使用此功能,必须选择内部 RC 振荡器 或者外部时钟源。 .
CDIV0 Clock Out Frequency

10. 复位

10.1 上电复位

在复位时,所有的 I/O 积存器都被设定为它们的初始值,芯片的管脚都是三态。程序从复位向量 0000H 开始执行。 AT89LP213/214 有五个复位源 : 上电复位 , 掉电复位 , 外部复位 , 看门狗复位 , 和软件复位。
上电复位 (POR) 是由一个片上的检测电路产生的。检测级别是 1.4V. 当 Vcc 低于探测级别时,产 生一个上电复位。POR电路可以被用来触发一个复位或者在没有掉电探测器的情况下检测出供给电 源失败。POR 电路确保设备通过上电来复位。上电的顺序如图: Figure 10-1 on page 14. 当Vcc达 到了上电复位的阈值电压 V
,一个持续时间 t
POR
的初始化动作就开始了。初始化动作结束以
POR
后,启动定时器会决定设备在 Vcc 上升沿之后要保持在 POR 多长时间。当 Vcc 低于上电复位的阈 值电压时,POR 信号再一次被激活,没有任何的延迟。 上电复位 (例如冷复位)需要设定 PCON 中 的 POF 标志。通过保持 RST
脚低电平时间长过休息时间,内部产生的复位可以扩展到超过上电周
期。
3538A–MICRO–6/06
13
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
如果掉电探测器 (BOD) 也被激活, 那么直到 Vcc 达到如图 Figure 10-2 所示 的阈值电压 V
V
RH
BOD
启动定时器才开始计数。然而,如果在初始化完成之前,就出现这种情况,定时器必须首先等待 初始化完成再开始计数。
Figure 10-2. 上电复位时序 (BOD Enabled)
V
BOD
t
SUT
V
CC
TIME-OUT
t
POR
V
POR
RST
(RST Tied to VCC)
INTERNAL
RESET
V
RH
t
RHD
INTERNAL
RESET
Note: t
RST
近似等于 92 µs ± 5%.
POR
(RST Controlled Externally)
启动定时器的延迟依赖于时钟源 (Table 10-1),可以通过配置启动定时引线来设置这个延时。我们 设定启动延时时要注意给 Vcc 和可选时钟源提供足够的时间。启动定时引线同时也控制着掉电复 位后启动时间的长度,和在内部时控模式时下电后何时唤醒。
14
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06
Table 10-1. 启动定时器设置
T
I
AT89LP213/214 [Preliminary]

10.2 掉电复位

SUT Fuse 1 SUT Fuse 0 时钟源 t
内部 RC/ 外部时钟 16 µs
00
晶振 1024 µs
内部 RC/ 外部时钟 512 µs
01
晶振 2048 µs
内部 RC/ 外部时钟 1024 µs
10
晶振 4096 µs
内部 RC/ 外部时钟 4096 µs
11
晶振 16384 µs
SUT (±
5%)
AT89LP213/214 有一个片上掉电探测电路 (BOD),它通过同一个固定的触发电平相比较以监控
Vcc 的情况。BOD 的触发电平是 2.2V。BOD 的作用是当系统在高速工作时,如果出现 Vcc 电压错 误,系统可以安全平稳的进入复位状态,而不会发生一些包括运行错误等的可能的错误。 BOD 的 时序如图 Figure 10-3. 当 V
减小到低于触发电平 V
CC
, 时,立即启动内部复位。当 Vcc 增加到
BOD
高于触发电平时,启动定时器在暂停周期满之后释放内部复位 (Table 10-1)。只有设置了 BOD 激活 引线之后才可以激活掉电探测器。 (See “ 用户配置引脚 ” on page 69).

10.3 外部复位

Figure 10-3. 掉电探测器复位
V
V
CC
V
POR
BOD
t
SUT
IME-OUT
NTERNAL
RESET
P1.3/RST 脚既可以作为一个低有效的复位输入,也可以作为一个通用的数字 I/O 口。当复位脚激 活引线被设置为 1 时,P1.3 脚的外部复位输入功能就被激活了。 (See “ 用户配置引脚 ” on page
69). 当清0 时, P1.3 可以被用做一个输入或者输出脚。当配置成复位输入时,要出发内部复位,管
脚必须至少保持在低电平 2 个时钟周期。
Note: 在上电时序中,引线选择总是无效的,因此,管脚总是执行着复位输入的功能。 与此管脚相连的外
部电路在上电时不可以将此管脚保持在低电平因为这将会导致芯片一直处于复位状态,除非将此管 脚拉高。 在上电延迟之后,这个输入脚或者执行一个外部复位输入功能或者是执行一个由引线位定 义的数字输入功能。只有上电复位时会使由复位引线位定义的选择项无效。而别的复位源不会使复 位引线位无效。 P1.3/RST 时,ISP 功能就被激活了。当复位脚被引线位设置无效时,可以在上电时通过将 P1.3 拉低来实现 ISP 功能。
也可以用做系统编程 (ISP)激活管脚。当外部复位脚被保持在低电平
3538A–MICRO–6/06
15

10.4 看门狗复位

10.5 软件复位

11. 省电模式

11.1 空闲模式

当看门狗计数器溢出后,它将产生一个持续 16 个时钟周期的内部复位脉冲。看门狗复位也会设置 WDTCON 积存器的 WDTOVF 标志位。为了阻止看门狗复位,在看门狗溢出之前,必须将看门够 复位序列 1EH/E1H 写入到 WDTRST 中去。关于看门狗的操作细节请参照 . See “ 可编程看门狗
定时器 ” on page 55
可以通过软件写 5AH/A5H WDRST 积存器中,使 CPU 产生一个内部的 16 个时钟周期的复位脉 冲。软件复位将会把 WDTCON 积存器中的 SWRST 位置 1。关于软件复位的详细信息请参见 .
See “ 软件复位 ” on page 55
AT89LP213/214 支持两种不同的低功耗模式:空闲模式和省电模式。这两种模式可以通过 PCON
来设定。
设定 PCON 的 IDL 位可以使芯片进入空闲模式。空闲模式下,内部 CPU 时钟停止工作。CPU 的状 态保持不变。包括 RAM, 堆栈指针,程序计数器,程序状态字和数字存储器。各个端口管脚的状态 保持在系统进入空闲模式时候的状态。空闲模式下,外部设备仍然运转,这样,当中断产生时, 它们就可以唤醒芯片。 定时器 , UART, SPI, 和 GPI 模块也会保持运转 . 在空闲模式下, 比较器或 者看们狗可以设定为工作状态或停止状态。任何中断或者复位都可以使系统结束空闲模式。当通 过中断结束空闲模式时,中断服务程序立即被执行。 之后的下一条指令 RETI 应该是使系统进入 空闲模式。

11.2 待机模式

设置 PCON 中的待机位 (PD)可以使系统进入待机模式。待机模式下振荡器停止工作,闪存掉电, 这样功耗就可以降到最低。此时只有上电电路保持有效。在待机模式下,电源供给电压可以减小 到保持 RAM 活动状态的电压。RAM 里面的内容会保持不变,但一旦 Vcc 降下来,我们无法保证 SFR 中的内容保持不变。可以通过外部复位,上电复位,或者某些特定的中断来结束待机状态。
11.2.1 待机模式下的中断恢复 可以通过三个外部中断来结束待机模式。当 XTAL1 或 XTAL2 没有被用于晶振或外部时钟的时候 可
以用来通过外部中断 INT0
INT0
INT1 来唤醒系统,中断必须被激活和配置成电平敏感模式。 RST 脚无效时,通用中
断 3 (GPI3)也可以用来唤醒系统。为了外结束待机模式, GPI3 必须被激活和配置为低电平探 测模式。
当通过中断结束待机模式时,两种不同的唤醒模式有效。当 PCON 中的 PWDEX 位是 0 时,唤醒周期 由如图 Figure 11-1 所示内部时控。在中断管脚的下降沿时结束待机模式,重启晶振,内部定时 器开始计数。直到定时器溢出,内部时钟才可以向 CPU 传送。溢出周期结束之后,开始调用中断 服务程序。溢出周期由启动计时引线来设定。 ( 参见 Table 10-1 on page 15). 在整个溢出周期,中 断引脚不需要一直保持低电平。
(P3.2) INT1 (P3.3) 结束系统的待机状态。为了可以通过外部中断
16
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06
AT89LP213/214 [Preliminary]
I
I
Figure 11-1. 待机模式下的中断恢复 (PWDEX = 0)
PWD
XTAL1
t
SUT
INT1
NTERNAL
CLOCK
PWDEX = “1” 时,唤醒周期表面上看起来是由中断所控制的。在中断管脚信号的下降沿,待机 模式结束并且重启振荡器。然而,直到如图 Figure 11-2 所示 的中断管脚信号的上升沿,内部时 钟才开始工作。 为了使选定的时钟源稳定,中断管脚的信号必须保持足够时间的低电平。中断管 脚信号的上升沿之后,系统调用中断服务程序。
Figure 11-2. 待机模式下的中断恢复 (PWDEX = 1)
PWD
XTAL1
NTERNAL
CLOCK
11.2.2 待机模式下的复位恢复 通过一个外部的复位来将系统从待机模式下唤醒和用 PWDEX = “0”. 的中断差不多。 在 RST
号的下降沿,结束待机状态,重启振荡器,如图 Figure 11-3 所示的内部定时器开始计数。直到这 个定时器溢出,内部时钟才对 CPU 起作用。 溢出周期由启动时间引线控制参见Table 10-1 on page
15 如果在溢出之前 RST
否则,芯片将保持复位状态一直到 RST
INT1
,
回到高电平状态,当内部时钟重启时,一个两周期的内部复位就产生了。
信号被拉高。
17
3538A–MICRO–6/06
Figure 11-3. 待机模式下的服位恢复 .
I
I
PWD
XTAL1
RST
NTERNAL
CLOCK
NTERNAL
RESET
t
SUT
Tabl e 11 -1.
PCON = 87H 复位值 = 000X 0000B
不可位寻址
Bit76543210
符号 功能
SMOD1 双倍波特率位 . 在模式 1,2,3 下 UART 双倍波特率
SMOD0 祯错误选择 . SMOD0 = 1, SCON.7 SM0. SMOD0 = 1, SCON.7 FE (此处有误?)。注意无论 SMOD0 的状态
PWDEX 待机结束位 . 当 PWDEX = 1 时 , 待机模式下的唤醒由外部控制。当 PWDEX = 1 , 待机模式下的唤醒是内部时控的。
POF 关电标志 . 在上电时,POF 位被设置为 1 ( 例如: 冷重启 )。它可以通过软件来置位或重启,而不受 RST 或 BOD 的影响。 (
GF1, GF0 通用标志位
PD 待机位 . 该位 置位则系统进入待机模式 .
IDL 空闲模式位 . 该位置位则系统进入空闲模式
PCON电源控制寄存器
SMOD1 SMOD0 PWDEX POF GF1 GF0 PD IDL
如何,一个祯错误之后都要设成 FE..
例如热重启 ).

12. 中断

AT89LP213/214 提供了 7 个中断源 : 两个外部中断 , 两个定时器中断,一个串口中断,一个通用中 断,和一个模拟比较器中断。这些中断和系统复位在程序存储空间的开始处都各自有一个独立的 程序向量。通过设置中断激活寄存器 (IE)的一位可以使每一个中断源有效或失效。IE 寄存器也 包含一个全局的中断开关位 EA, 可以使所有的中断源无效。
每一个中断源(模拟比较器除外)都可以通过设置或清除中断优先级寄存器 IP 和 IPH 来独立的设 定它的中断优先级,一共有四个中断优先级。模拟比较器的中断被固定在最低优先级。一个在运 行的中断服务程序可以被一个比它优先级高的中断打断,但不可以被与它相同或更低的中断优先 级的中断打断。最高优先级的中断不可以被任何其它的中断源打断。如果在某条指令的最后同时 有两条不同中断优先级的中断请求,那么系统响应高优先级的中断。如果在某条指令的最后同时 有两条相同中断优先级的中断请求,则一个内部的查询将会来决定系统响应那一条中断。
18
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06
AT89LP213/214 [Preliminary]
轮询序列是基于向量地址的,低向量地址的中断优先级高于高向量地址的中断。注意,轮询序列 只用于解决为响应的同优先级的中断
根据 TCON 寄存器的 IT0 和 IT1 位,外部中断 INT0
INT1 都可以是电平触发或边沿触发。实 际上产生这些中断的标志是 TCON 的 IE0 和 IE1 位。当服务例行程序是矢量时,只有当中断是边沿 触发时,硬件清除标志位才可以产生外部中断。如果中断是电平触发的,那么外部请求源 (而不 是片上硬件)控制请求标志。
定时器 0 和定时器 1 的中断由 TF0 和 TF1 产生,当各自的定时 / 计数寄存器溢出时置位 (除了定 时器 0 工作于方式 3)。当产生定时器中断时,如果服务例行程序是矢量的,则片上硬件清除产生 中断的标志位。
串行口中断是由 SCON 的 RI 和 TI 的或逻辑加上 SPSR 的 SPIF 产生的。如果服务例行程序是矢量 的,所有这些标志位不能由硬件清除。实际上,服务例行程序通常要检测 RI, TI, 或 SPIF 有没 有产生中断,这些位必须由软件清零。
GPIF 寄存器的八个标志位的或逻辑产生通用中断。如果服务例行程序是矢量的,所有这些标志位 都不能由硬件清零。服务例行程序必须检测中断是由哪位产生的,该位必须由软件清零。如果中 断是电平触发的,那么在软件清除标志位前,外部请求源必须保持中断信号。
ACSR 寄存器的 CF 位产生比较中断。如果服务例行程序是矢量的,这个标志位不能由硬件清除,而 必须由软件清除。
大多数产生中断的位可以由软件置位或清零,与由硬件置位和清零的效果相同。也就是说,可以 由软件产生中断和取消未响应的中断。SPI 中断标志位 SPIF 和通用中断标志位 GPIF 是两个例外。 这两个标志位只能由硬件置位,软件清除。
Table 12-1. 中断向量地址

12.1 中断响应时间

中断 向量地址
系统重启 RST or POR or BOD 0000H
外部中断 0 IE0 0003H
定时器 0 溢出 TF0 000BH
外部中断 1 IE1 0013H
定时器 1 溢出 TF1 001BH
串行口 RI or TI or SPIF 0023H
通用中断 GPIF 002BH
模拟比较器 CF 0033H
中断标志位可以在任何时钟周期由硬件置位。在进程中指令的最后一个时钟周期,中断控制器获 得标志位。如果在前述的周期中,一个标志位被置位,在轮询周期中会被发现,并且中断系统会 在适当的服务例行程序中产生 LCALL,作为下一条指令。在以下情况下中断不会被响应:相同优先 级或较高优先级的中断正在运行中;运行中的指令是 RETI 或者任何写入 IE, IP, 或 IPH 寄存器 的。这些情况中的任何一种会阻止对中断服务例行程序产生 LCALL。第二个条件确保如果在运行中
3538A–MICRO–6/06
19
的指令是 RETI 或者任何访问 IE,IP 或 IPH 寄存器的,那么在中断矢量化前至少还可以执行一条
n
指令。轮询周期在每条指令的最后一个周期重复,选中的值是前述周期中存在的值。如果因为以 上原因一个激活的中断标志位没有被响应,且当上述原因消除后中断不再是激活的,那么这个中 断将不被响应。换一句话说,中断源一旦被激活但是没有被响应的不会被记录。每一个轮询周期 是新的。
如果请求被激活且满足被响应的条件,硬件子例行程序调用请求的服务例行程序,使其成为下一 条被执行的指令。调用程序本身需要四个周期。因此,在激活中断请求和开始执行第一条服务例 行程序的指令之间,至少要消耗五个完整的时钟周期。如果请求被前面所列的原因阻止了,那就 需要更长的响应时间。如果同级的中断源或者更高优先级的中断源在运行中,附加等待时间取决 于其他中断的服务例行程序。如果运行中的指令不是处于最后一个时钟周期,附加的等待时间不 会超过 3 个周期,因为最长也只有 4 个周期。如果运行中的指令是 RETI 或者访问 IE 或 IP 寄存 器,附加的等待时间不会超过 7 个周期 (结束运行中的指令最多需要 3 个周期,加上结束下一条 指令最多需要 4 个周期)。因此,在单个中断系统中,响应时间总是大于 5 个时钟周期而小于 13 个时钟周期。见图 12 - 1 和图 12 - 2。
Figure 12-1. 最小中断响应时间
Clock Cycles
INT0
IE0
Instruction LCALL 1st ISR Instr.Cur. Instr.
15
Ack.
Figure 12-2. 最大中断响应时间
Clock Cycles
INT0
IE0
Instruction RETI 4 Cyc. Instr. LCALL 1st ISR I
113
Ack.
Table 12-2. IE中断允许寄存器
IE = A8H 复位值 = 0000 0000B
位可寻址
EA EC EGP ES ET1 EX1 ET0 EX0
Bit76543210
20
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06
AT89LP213/214 [Preliminary]
符号 功能
EA 全部有效 / 失效 . 当 EA = 0 时,所有的中断失效 . 当 EA = 1 时 , 每个中断源通过设置 / 清除自己的使能位使中断有效 /
失效。
EC 比较器中断有效
EGP 通用中断有效
ES 串行口中断有效
ET1 定时器 1 中断有效
EX1 外部中断 1 有效
ET0 定时器 0 中断有效
EX0 外部中断 0 有效
.
Table 12-3. IP中断优先级寄存器
IP = B8H 复位值 = X000 0000B
位可寻址
76543210
PGP PS PT1 PX1 PT0 PX0
符号 功能
PGP 通用中断优先级低
PS 串行口中断优先级低
PT1 定时器 1 中断优先级低
PX1 外部中断 1 优先级低
PT0 定时器 0 中断优先级低
PX0 外部中断 0 优先级低
Table 12-4. IPH中断优先级高寄存器
IPH = B7H 复位值 = X000 0000B
不可位寻址
76543210
3538A–MICRO–6/06
PGH PSH PT1H PX1H PT0H PX0H
21
符号 功能
PGH 通用中断优先级高
PSH 串行口中断优先级高
PT1H 定时器 1 中断优先级高
PX1H 外部中断 1 优先级高
PT0H 定时器 0 中断优先级高
PX0H 外部中断 0 优先级高

13. I/O 端口

AT89LP213/214 可以设置9到12个I/O引脚。有效的I/O引脚的精确数目取决于时钟和复位选择,如 表13-1所示。所有端口引脚 5V 的容限 , 也就是说可以被上拉或驱动到 5.5V, 即使工作在较低V
Table 13-1. I/O 引脚配置
时钟源 复位选择 I/O 引脚数
外部晶体或振荡器
外部时钟
内部 RC 振荡器
CC
3V
外部 RST
没有外部复位 10
外部 RST
没有外部复位 11
外部 RST
没有外部复位 12
引脚 9
引脚 10
引脚 11
.
13.0.1 准双向输出
.
Table 13-2. 端口 xy 位配置模式
PxM0.y PxM1.y 端口模式
00准双向的
01推挽式输出
10只输入 ( 高阻抗 )
11开消耗输出
准双向输出模式的端口引脚功能与标准 8051 端口引脚相似。不需要重新配置端口,准双向的端口 就可以同时用作输入和输出 . 这是可行的,因为当端口输出一个逻辑高电平时,它被弱驱动,允 许外部设备把引脚电平拉低。当引脚低电平驱动时,强驱动使大电流减小。为了不同的目的,准 双向输出有 3 个上拉电阻 .
这 3 个上拉电阻中的一个叫做“极弱”上拉电阻,只要引脚的端口门限包含逻辑“1”,这个电阻 就是工作的。当引脚悬空时,这个极弱的上拉电阻产生极小的电流使引脚电平拉高 .
第二个上拉电阻叫做 “弱”上拉电阻,当引脚的端口门限包含逻辑 “1”且引脚本身是逻辑 “1” 电平时,这个电阻是工作的。这个上拉电阻提供准双向引脚输出为“1”的基本源电流。如果外部 设备把该引脚下拉为低电平,则这个弱上拉电阻关闭,只有极弱上拉电阻维持工作。 为了在这些 条件下使引脚电平下拉,外部设备不得不减小足够的电流抑制弱上拉电阻,并使端口引脚电平位 于输入门限电平以下。
22
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06
AT89LP213/214 [Preliminary]
V
V
V
F R
PWD
I D
I
第三个上拉电阻是 “强”上拉电阻。这个上拉电阻的作用是,当端口门限由逻辑 “0”转换为逻 辑“1”时,可以加快准双向端口引脚的低电平到高电平的转换速度。当这种情况发生时,强上拉 电阻工作两个 CPU 周期,使端口电平迅速上拉。准双向端口配置如 Figure 13-1 所示 . 在下电时, P1.3, P3.2 和 P3.3 的输入电流不是无效的 ( 见 Figure 13-3).
Figure 13-1. 准双向输出
13.0.2 只输入模式
1 Clock Delay
(D Flip-Flop)
CC
Strong
CC
Very
Weak
CC
Weak
Port
Pin
rom Port egister
Input Data
只输入端口配置如 Figure 13-2 所示 . 输出驱动是三态的 . 输入包括斯密特触发输入以提高对输入 噪声的抑制。在下电时, P1.3, P3.2 和 P3.3 的输入电路不是无效的 ( 见 Figure 13-3). 输入引脚可 以被安全的上拉到 5.5V ,即使工作在较低的 V
电平 ; 然而 , 斯密特触发器的输入门限是由 V
CC
CC
电平设置的,这一点必须考虑
Figure 13-2. I 只输入
nput
ata
Port
Pin
PWD
Figure 13-3. I P1.3, P3.2 P3.3 只输入
nput
Data
Port
Pin
13.0.3 开消耗输出 当端口门限包含逻辑“0”时,开消耗输出配置关闭多有的上拉,只驱动端口引脚的下拉电阻。为 了用作逻辑输出,在这种方式下端口配置必须要有外部上拉电阻,典型的是电阻与 V
相连。
CC
种模式的下拉电阻与准双向模式相同。开消耗配置如 Figure 13-4 所示 . 在下电时, P1.3, P3.2 P3.3 的输入电路不是无效的 ( Figure 13-3). 开消耗引脚可以被安全的上拉到 5.5V ,即使工作在 较低的 V
3538A–MICRO–6/06
电平 ; 然而 , 斯密特触发器的输入门限是由 VCC 电平设置的,这一点必须考虑 .
CC
23
13.0.4 推挽式输出
F R
V
F R
Figure 13-4. Open-Drain Output
Port
Pin
rom Port
egister
Input Data
PWD
推挽式输出配置和开消耗与准双向输出模式有相同的下拉电阻结构,但是当端口门限包含逻辑
“1”时,提供持续的强上拉电阻。当端口输出需要更多的源电流时,采用推挽模式。推挽端口配
置如 Figure 13-5 所示 . 在下电时, P1.3, P3.2 和 P3.3 的输入电路不是无效的 ( 见 Figure 13-3).
Figure 13-5. 推挽式输出
CC
Port
Pin

13.1 端口 1 模拟功能

AT89LP213/214结合了模拟比较器 . 为了给出做好的模拟效果和最小化功率损耗,作为模拟功能的 引脚必须使他们的数字输出和数字输入无效 . 如 22 页 “端口配置”描述的,使端口引脚处于只输 入模式可以使端口引脚的数字输出无效。只要设置 ACSR 的CEN 位使模拟比较器有效,那么 P1.0 和 P1.1 的数字输入是无效的。 CEN 迫使 P1.0 和 P1.1 的 PWD 发电路无效 . 在复位后不管三端口得状态如何, P1.0 和 P1.1 总是默认为只输入模式 .

13.2 端口 读 - 修改 - 写

读引脚的状态还是读端口寄存器的状态取决于使用的指令。简单的读指令总是直接访问端口引脚 读 - 修改 - 写 指令 , 就是读到一个值,可能修改这个值 , 然后重新写回去 , 这个指令总是访问端口 寄存器 . 包括位写入指令,如 CLR 或 SETB ,它们实际上读了整个端口,修改单独的位,然后把 数据重新写回整个端口 . 如 Table 13-3 所示,列出了所有访问端口的读 - 修改 - 写指令 .
Table 13-3. 端口读 - 修改 - 写指令
助记符 指令 举例
ANL 逻辑 AND ANL P1, A
ORL 逻辑 OR ORL P1, A
rom Port
egister
Input Data
PWD
输入为的电平 , 因此使斯密特触
XRL 逻辑 EX-OR XRL P1, A
24
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06

13.3 端口选择功能

AT89LP213/214 [Preliminary]
Table 13-3. 端口读 - 修改 - 写指令
助记符 指令 举例
JBC 如果置位则跳转,同时清除该位 JBC P3.0, LABEL
CPL 补位 CPL P3.1
INC 递增 INC P1
DEC 递减 DEC P3
DJNZ 如果不是零则递减并跳转 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
AT89LP213/214 的大多数通用数字输入 / 输出引脚 与各种串行单元需要的输入 / 输出共享功能
Table 13-5 列出了端口引脚的选择功能. 选择功能以逻辑与的方式与引脚相连 . 为了使端口引脚的
选择功能有效 , 引脚相应的端口寄存器位必须为 “1” , 否则输入 / 输出总是为 “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
必须无效
3538A–MICRO–6/06
25
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 not configurable CMPOUT 引脚与比较器输出相连
选择功能 注释PxM0.y PxM1.y
SS
GPI4
MOSI
GPI5
MISO
GPI6
SCK
GPI7
INT1
CLKOUT
仅限于 AT89LP214
仅限于内部 RC 振荡器或 外部时钟源
仅限于 AT89LP213

14. 性能增强型计时器计数器

AT89LP213/214 产品有两个16 位的计时计数器:计时器 0 和计时器 1。作为计时器,每一个时钟周 期寄存器增加一次。因此寄存器可以对时钟周期计数。因为每个时钟周期包括一个振荡周期,所 以计数频率就是振荡器频率。计时器频率可以通过可变频计时器从 1 到 16 改变。 (如表 9-2) . 两个计时器使用同一个分频器。
作为计数器,相应引脚 T0 或 T1 处有 1 到 0 的变化时寄存器就会相应的递增。每一个时钟周期都 会对外部输入进行采样。当采样值第一个周期为高电平,紧接着的那个周期为低电平,计数开始。 一旦检测到这种跳变,寄存器中的值就会刷新开始递增。因为进行这样的检测需要两个时钟周期, 所以最大的计数率也仅仅是振荡器频率的一半。对输入的信号没有约束,但信号必须确保检测到 的电平在变化之前至少保持了一个完整的时钟周期。在 AT89LP214 中, T0 和 T1 是不能通过引脚 输入的。但可以通过软件接换寄存器 3 中的 P3.4 和 P3.5 位来实现输入。
另外,计时器0和1就其功能来说有四种操作模式:可变宽度计时计数器,16 位自动重置计时计 数器、8 位自动重置计时计数器和分时计时计数器。可以通过特殊功能寄存器 TMOD 中的控制位 C/T 选择计时计数器功能。TMOD 中的 M1 和 M0 位用来选择操作模式。
14.1 模式 0 – 可变频计时计数器
两个计时器在模式 0 下都是可变频的 8 位计数器。分频器范围从 1 到 8 位,到底能变几位这要取 决于 TCONB 中的 PSC 位。这样计时器的范围就变成了 9 到 16 位。在标准 8051 模式 0 下的计时器 位数缺省值位13位。如图14-1所示。当计数器从全1变为全0时,中断标识符TF1会被置位。 计数输入是在 TR1=1 并且 GATE=0 或 INT1=1 有效的。给 GATE 置位使得外部输入 INT1 能够控制计
26
AT89LP213/214 [Preliminary]
3538A–MICRO–6/06
Loading...
+ 60 hidden pages