Cmsemicon
CMS89F552x
CMS89F552x
用户手册
增强型闪存 8 位
CMOS 单片机
V1.1
请注意以下有关CMS知识产权政策
*中微半导体公司已申请了专利,享有绝对的合法权益。与中微半导体公司MCU或其他产品有关的专利权并未
被同意授权使用,任何经由不当手段侵害中微半导体公司专利权的公司、组织或个人,中微半导体公司将采取
一切可能的法律行动,遏止侵权者不当的侵权行为,并追讨中微半导体公司因侵权行为所受的损失、或侵权者
所得的不法利益。
*中微的名称和标识都是中微半导体公司的注册商标。
*中微半导体公司保留对规格书中产品在可靠性、功能和设计方面的改进作进一步说明的权利。然而中微半导
体公司对于规格内容的使用不负责任。文中提到的应用其目的仅仅是用来做说明,中微半导体公司不保证和不
表示这些应用没有更深入的修改就能适用,也不推荐它的产品使用在会由于故障或其它原因可能会对人身造成
危害的地方。中微半导体公司产品不授权适用于救生、维生器件或系统中作为关键器件。中微半导体公司拥有
不事先通知而修改产品的权利,对于最新的信息,请参考我们的网站http://www.mcu.com.cn
www.mcu.com.cn
-1-
V1.1
Cmsemicon
CMS89F552x
目录
1. 产品概述 ................................................................................................................................ 1
1.1
功能特性 ................................................................................................................................................................ 1
1.2
系统结构框图 ......................................................................................................................................................... 2
1.3
管脚分布 ................................................................................................................................................................ 3
1.3.1
CMS89F5521 引脚图...........................................................................................................................................3
1.3.2
CMS89F5523 引脚图...........................................................................................................................................4
1.4
系统配置寄存器 ...................................................................................................................................................... 5
1.5
在线串行编程 ......................................................................................................................................................... 6
2. 中央处理器(CPU) .............................................................................................................. 7
内存 ....................................................................................................................................................................... 7
2.1
2.1.1
程序内存 .............................................................................................................................................................7
2.1.1.1
复位向量(0000H) ....................................................................................................................................7
2.1.1.2
中断向量 .....................................................................................................................................................8
2.1.1.3
跳转表.........................................................................................................................................................9
2.1.2
2.2
数据存储器 ........................................................................................................................................................ 10
寻址方式 ...............................................................................................................................................................13
2.2.1
直接寻址 ........................................................................................................................................................... 13
2.2.2
立即寻址 ........................................................................................................................................................... 13
2.2.3
间接寻址 ........................................................................................................................................................... 13
2.3
堆栈 ......................................................................................................................................................................14
2.4
工作寄存器(ACC)..............................................................................................................................................15
2.4.1
概述 .................................................................................................................................................................. 15
2.4.2
ACC 应用 .......................................................................................................................................................... 15
2.5
程序状态寄存器(STATUS) .................................................................................................................................16
2.6
预分频器(OPTION_REG) ..................................................................................................................................18
2.7
程序计数器(PC) ................................................................................................................................................20
2.8
看门狗计数器(WDT) ..........................................................................................................................................22
2.8.1
WDT 周期 ......................................................................................................................................................... 22
2.8.2
看门狗定时器控制.............................................................................................................................................. 22
3. 系统时钟 .............................................................................................................................. 23
3.1
概述 ......................................................................................................................................................................23
3.2
系统振荡器 ............................................................................................................................................................24
3.2.1
内部 RC 振荡..................................................................................................................................................... 24
3.3
起振时间 ...............................................................................................................................................................24
3.4
振荡器控制寄存器..................................................................................................................................................24
4. 复位...................................................................................................................................... 25
4.1
上电复位 ...............................................................................................................................................................25
4.2
掉电复位 ...............................................................................................................................................................26
4.2.1
掉电复位概述 .................................................................................................................................................... 26
4.2.2
掉电复位的改进办法 .......................................................................................................................................... 27
4.3
看门狗复位 ............................................................................................................................................................27
www.mcu.com.cn
-2-
V1.1
Cmsemicon
CMS89F552x
5. 休眠模式 .............................................................................................................................. 28
5.1
进入休眠模式 ........................................................................................................................................................28
5.2
从休眠状态唤醒 .....................................................................................................................................................28
5.3
使用中断唤醒 ........................................................................................................................................................28
5.4
休眠模式应用举例..................................................................................................................................................29
5.5
休眠模式唤醒时间..................................................................................................................................................29
6. I/O 端口 ................................................................................................................................ 30
6.1
I/O 口结构图 ..........................................................................................................................................................31
6.2
PORTA .................................................................................................................................................................33
6.2.1
PORTA 数据及方向控制..................................................................................................................................... 33
6.2.2
PORTA 上拉电阻 ............................................................................................................................................... 34
6.3
PORTB .................................................................................................................................................................35
6.3.1
PORTB 数据及方向 ........................................................................................................................................... 35
6.3.2
PORTB 下拉电阻............................................................................................................................................... 36
6.3.3
PORTB 上拉电阻............................................................................................................................................... 36
6.3.4
PORTB 电平变化中断 ........................................................................................................................................ 37
6.4
I/O 使用.................................................................................................................................................................38
6.4.1
写 I/O 口............................................................................................................................................................ 38
6.4.2
读 I/O 口............................................................................................................................................................ 38
6.5
I/O 口使用注意事项................................................................................................................................................39
7. 中断...................................................................................................................................... 40
7.1
中断概述 ...............................................................................................................................................................40
7.2
中断控制寄存器 .....................................................................................................................................................41
7.2.1
中断控制寄存器 ................................................................................................................................................. 41
7.2.2
外设中断允许寄存器 .......................................................................................................................................... 42
7.2.3
外设中断请求寄存器 .......................................................................................................................................... 42
7.3
中断现场的保护方法 ..............................................................................................................................................43
7.4
中断的优先级,及多中断嵌套.................................................................................................................................43
8. 定时计数器 TIMER0 ............................................................................................................. 44
8.1
定时计数器 TIMER0 概述.......................................................................................................................................44
8.2
TIMER0 的工作原理 ..............................................................................................................................................45
8.2.1
8 位定时器模式.................................................................................................................................................. 45
8.2.2
8 位计数器模式.................................................................................................................................................. 45
8.2.3
软件可编程预分频器 .......................................................................................................................................... 45
8.2.4
在 TIMER0 和 WDT 模块间切换预分频器............................................................................................................ 46
8.2.5
TIMER0 中断..................................................................................................................................................... 46
8.3
与 TIMER0 相关寄存器 ..........................................................................................................................................47
9. 定时计数器 TIMER2 ............................................................................................................. 48
9.1
TIMER2 概述.........................................................................................................................................................48
9.2
TIMER2 的工作原理 ..............................................................................................................................................49
9.3
TIMER2 相关的寄存器 ...........................................................................................................................................50
www.mcu.com.cn
-3-
V1.1
Cmsemicon
CMS89F552x
10. 模数转换(ADC) ............................................................................................................... 51
10.1
ADC 概述 ..............................................................................................................................................................51
10.2
ADC 配置 ..............................................................................................................................................................52
10.2.1 端口配置 ........................................................................................................................................................... 52
10.2.2 通道选择 ........................................................................................................................................................... 52
10.2.3 ADC 内部基准电压 ............................................................................................................................................ 52
10.2.4 ADC 参考电压 ................................................................................................................................................... 52
10.2.5 转换时钟 ........................................................................................................................................................... 53
10.2.6 ADC 中断 .......................................................................................................................................................... 53
10.2.7 结果格式化 ........................................................................................................................................................ 53
10.3
ADC 工作原理 .......................................................................................................................................................54
10.3.1 启动转换 ........................................................................................................................................................... 54
10.3.2 完成转换 ........................................................................................................................................................... 54
10.3.3 终止转换 ........................................................................................................................................................... 54
10.3.4 ADC 在休眠模式下的工作原理 ........................................................................................................................... 54
10.3.5 AD 转换步骤...................................................................................................................................................... 55
10.4
ADC 相关寄存器....................................................................................................................................................56
11. PWM 模块 ............................................................................................................................ 59
11.1
引脚配置 ...............................................................................................................................................................59
11.2
相关寄存器说明 .....................................................................................................................................................59
11.3
PWM 周期 .............................................................................................................................................................63
11.4
PWM 占空比 .........................................................................................................................................................63
11.5
系统时钟频率的改变 ..............................................................................................................................................63
11.6
可编程的死区延时模式...........................................................................................................................................64
11.7
PWM 设置 .............................................................................................................................................................64
12. 运算放大器(OPA0 和 OPA1) ........................................................................................... 65
12.1
运算放大器 OPAX ..................................................................................................................................................65
12.1.1 OPAx 使能 ........................................................................................................................................................ 65
12.1.2 OPAx 端口选择.................................................................................................................................................. 65
12.1.2.1
OPAx 正端输入...................................................................................................................................... 65
12.1.2.2
OPAx 负端输入...................................................................................................................................... 65
12.1.2.3
OPAx 输出 ............................................................................................................................................ 65
12.1.2.4
OPAx 使用时端口方向设置 .................................................................................................................... 65
12.1.3 OPAx 工作模式.................................................................................................................................................. 66
12.1.4 与 OPAx 相关的寄存器....................................................................................................................................... 67
13. 电气参数 .............................................................................................................................. 68
13.1
极限参数 ...............................................................................................................................................................68
13.2
直流电气特性 ........................................................................................................................................................68
13.3
ADC 电气特性 .......................................................................................................................................................69
13.4
ADC 内部 LDO 参考电压特性 .................................................................................................................................69
13.5
OPA 电气特性 .......................................................................................................................................................69
13.6
上电复位特性 ........................................................................................................................................................70
13.7
交流电气特性 ........................................................................................................................................................70
www.mcu.com.cn
-4-
V1.1
Cmsemicon
CMS89F552x
14. 指令...................................................................................................................................... 71
14.1
指令一览表 ............................................................................................................................................................71
14.2
指令说明 ...............................................................................................................................................................73
15. 封装...................................................................................................................................... 88
15.1
SOP8....................................................................................................................................................................88
15.2
SOP16 ..................................................................................................................................................................89
16. 版本修订说明 ....................................................................................................................... 90
www.mcu.com.cn
-5-
V1.1
Cmsemicon
CMS89F552x
1. 产品概述
1.1
功能特性
◆
◆
◆
◆
◆
◆
◆
◆
内存
Flash:4K×14
通用 RAM:256×8
8 级堆栈缓存器
◆
工作电压范围:3.3V~5.5V@16MHz
2.5V~5.5V@8MHz
1.8V~5.5V@4MHz
◆
简洁实用的指令系统(66 条指令)
内置 WDT 定时器
内置低压侦测电路
中断源
2 个定时中断
RB 口电平变化中断
其它外设中断
定时器
8 位定时器 TIMER0,TIMER2
TIMER2 可选择外部 32.768kHz
振荡时钟源
内置 2 路高性能运放模块
◆
工作温度范围:-40℃~85℃
一种振荡方式
内部 RC 振荡:设计频率 8MHz/16MHz
指令周期(单指令或双指令)
带互补输出的 PWM 模块
10 位 PWM 精度
5 路 PWM,可设置成 2 路互补输出
RB0/RB1,RB3/RB4 可使能 80mA 大电流驱动
5 路 PWM 共用周期,独立占空比
高精度 12 位 ADC
可选择内部参考源:
1.2V/2.4V/3.0V(精度为±1%)
内建高精度 0.6V 基准电压
◆
◆
◆
±1.5% @VDD=2.5V~5.5V TA=25℃
±2% @VDD=2.5V~5.5V TA=-40℃~85℃
型号说明
PRODUCT
Flash
RAM
I/O
PWM
OPA
ADC
PACKAGE
CMS89F5521
4Kx14
256x8
6
5
1
12Bit×6
SOP8
CMS89F5523
4Kx14
256x8
14
5
2
12Bit×14
SOP16
www.mcu.com.cn
-1-
V1.1
Cmsemicon
1.2
CMS89F552x
系统结构框图
4096×14
Program Memory
256×8
Data Memory
PC
AD Converter
TIMER0
Stack1
TIMER2
..
Addr Mux
I/O PORT
Stack8
Fsr R eg
Instruction Reg
PWM0-4
OPA0/OPA1
Instruction Decode
and Control
AC C
Mux
Device Reset Timer
Power-on Reset
ALU
Timing Generation
Watch Dog Timer
OSC
VDD,GND
www.mcu.com.cn
-2-
V1.1
Cmsemicon
CMS89F552x
管脚分布
1.3
1.3.1 CMS89F5521 引脚图
VDD
1
8
GND
OSCIN/ICSPDAT/AN13/RB0
2
7
RA0/AN0/PWMB0/[INT]/OPA0_O
OSCOUT/ICSPCLK/PWMB4/AN12/RB1
3
6
RA1/AN1/PWMB1/OPA0_P
PWMB3/AN11/RB2
4
5
RA2/AN2/PWMB2/OPA0_S
CMS89F5521
CMS89F5521 引脚说明:
管脚名称
IO 类型
管脚说明
VDD,GND
P
电源电压输入脚,接地脚
OSCIN/OSCOUT
I/O
晶振输入/输出引脚
RA0-RA2
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RB0-RB2
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能、电平变化中断功能
ICSPCLK/ICSPDAT
I/O
编程时钟/数据脚
AN0-AN2,AN11-AN13
I
12 位 ADC 输入脚
INT
I
外部中断输入,可通过 CONFIG 选择在不同 I/O 口
PWMB0-PWMB4
I/O
B 组 PWM0-4 输出功能
OPAx_P
I
运放输入正端
OPAx_S
I
运放输入负端
OPAx_O
O
运放输出端
www.mcu.com.cn
-3-
V1.1
Cmsemicon
CMS89F552x
1.3.2 CMS89F5523 引脚图
VDD
1
16
GND
OSCIN/ICSPDAT/PWMD0/AN13/RB0
2
15
RA0/AN0/PWMA0/[INT]/OPA0_O
OSCOUT/ICSPCLK/PWMD1/AN12/RB1
3
14
RA1/AN1/PWMA1/OPA0_P
PWMD4/AN11/RB2
4
13
RA2/AN2/PWMA2/OPA0_S
T0CKI/PWMD2/AN10/RB3
5
12
RA3/AN3/PWMA3/OPA1_O
PWMD3/PWMC4/AN9/RB4
6
11
RA4/AN4/PWMA4/OPA1_P
PWMC3/AN8/RB5
7
10
RA5/AN5/PWMC0/OPA1_S/[INT]
PWMC2/AN7/RB6
8
9
RB7/AN6/PWMC1
CMS89F5523
CMS89F5523 引脚说明:
管脚名称
IO 类型
管脚说明
VDD,GND
P
电源电压输入脚,接地脚
OSCIN/OSCOUT
I/O
晶振输入/输出引脚
RA0-RA5
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RB0-RB7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能、电平变化中断功能
ICSPCLK/ICSPDAT
I/O
编程时钟/数据脚
AN0-AN13
I
12 位 ADC 输入脚
INT
I
外部中断输入,可通过 CONFIG 选择在不同 I/O 口
T0CKI
I
TMR0 外部计数输入引脚
PWMA0-PWMA4
I/O
A 组 PWM0-4 输出功能
PWMC0-PWMC4
I/O
C 组 PWM0-4 输出功能
PWMD0-PWMD4
I/O
D 组 PWM0-4 输出功能
OPAx_P
I
运放输入正端
OPAx_S
I
运放输入负端
OPAx_O
O
运放输出端
www.mcu.com.cn
-4-
V1.1
Cmsemicon
CMS89F552x
系统配置寄存器
1.4
系统配置寄存器(CONFIG)是 MCU 初始条件的 FLASH 选项。它只能被 CMS 烧写器烧写,用户不能通
过程序访问及操作。它包含了以下内容:
1.
2.
3.
4.
5.
6.
7.
8.
9.
OSC(振荡方式选择)
◆
INTRC8M
◆
INTRC16M
FOSC 选择内部 8MHz RC 振荡
FOSC 选择内部 16MHz RC 振荡
(当选择 FSYS = FOSC/1 时,复位电压需选择 3.3V)
WDT(看门狗选择)
◆
ENABLE
打开看门狗定时器
◆
DISABLE
关闭看门狗定时器
PROTECT(加密)
◆
DISABLE
FLASH 代码不加密
◆
ENABLE
FLASH 代码加密,加密后烧写/仿真器读出来的值将不确定
LVR_SEL(低压侦测电压选择)
◆
1.8V(不建议使用)
◆
2.5V
◆
3.3V
选择此复位电压时,芯片系统时钟需设置为 4MHz 及以下
EXTINT_SEL(外部中断口选择)
◆
RA0
选择 RA0 为外部中断口
◆
RA5
选择 RA5 为外部中断口
PWM3_ISEL(PWM3 电流选择)
◆
80mA
PWMD3 推挽输出电流均为 80mA
◆
NORMAL
PWMD3 输出电流为普通 I/O 口电流
PWM2_ISEL(PWM2 电流选择)
◆
80mA
PWMD2 推挽输出电流均为 80mA
◆
NORMAL
PWMD2 输出电流为普通 I/O 口电流
PWM1_ISEL(PWM1 电流选择)
◆
80mA
PWMD1 推挽输出电流均为 80mA
◆
NORMAL
PWMD1 输出电流为普通 I/O 口电流
PWM0_ISEL(PWM0 电流选择)
◆
80mA
PWMD0 推挽输出电流均为 80mA
◆
NORMAL
PWMD0 输出电流为普通 I/O 口电流
10. ICSPPORT_SEL(仿真口功能选择)
◆
ICSP
ICSPCLK、DAT 口一直保持为仿真口,所有功能均不能使用
◆
NORMAL
ICSPCLK、DAT 口为普通功能口
www.mcu.com.cn
-5-
V1.1
Cmsemicon
CMS89F552x
在线串行编程
1.5
可在最终应用电路中对单片机进行串行编程。编程可以简单地通过以下 4 根线完成:
⚫
电源线
⚫
接地线
⚫
数据线
⚫
时钟线
这使用户可使用未编程的器件制造电路板,而仅在产品交付前才对单片机进行编程。从而可以将最新版本
的固件或者定制固件烧写到单片机中。
至正常连接(如接VDD、GND或者驱动LED、三极管等)
R1
仿真器/烧录器信号
R2
CMS MCU
VDD
VDD
GND
GND
DAT
ICSPDAT
CLK
ICSPCLK
图 1-1:典型的在线串行编程连接方法
上图中,R1、R2 为电气隔离器件,常以电阻代替,其阻值如下:R1≥4.7K、R2≥4.7K。
www.mcu.com.cn
-6-
V1.1
Cmsemicon
CMS89F552x
2. 中央处理器(CPU)
内存
2.1
2.1.1 程序内存
CMS89F552x 程序存储器空间
FLASH:4K
000H
复位向量
程序开始,跳转至用户程序
中断向量
中断入口,用户中断程序
001H
002H
003H
004H
...
用户程序区
...
...
FFDH
FFEH
FFFH
2.1.1.1
跳转至复位向量000H
程序结束
复位向量(0000H)
单片机具有一个字长的系统复位向量(000H)。具有以下 3 种复位方式:
◆ 上电复位
◆ 看门狗复位
◆ 低压复位(LVR)
发生上述任一种复位后,程序将从 000H 处重新开始执行,系统寄存器也都将恢复为默认值。根据 STATUS
寄存器中的 PD 和 TO 标志位的内容可以判断系统复位方式。下面一段程序演示了如何定义 FLASH 中的复位
向量。
例:定义复位向量
ORG
000H
JP
START
ORG
0010H
;系统复位向量
;用户程序起始
START:
…
;用户程序
…
END
www.mcu.com.cn
;程序结束
-7-
V1.1
Cmsemicon
2.1.1.2
CMS89F552x
中断向量
中断向量地址为 004H。一旦有中断响应,程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 004H
开始执行中断服务程序。所有中断都会进入 004H 这个中断向量,具体执行哪个中断将由用户根据中断请求标
志位寄存器的位决定。下面的示例程序说明了如何编写中断服务程序。
例:定义中断向量,中断程序放在用户程序之后
;系统复位向量
ORG
000H
JP
START
ORG
004H
;用户程序起始
CALL
PUSH
;保存 ACC 跟 STATUS
INT_START:
…
;用户中断程序
…
INT_BACK:
CALL
;返回 ACC 跟 STATUS
POP
RETI
;中断返回
…
;用户程序
START:
…
END
;程序结束
注:由于单片机并未提供专门的出栈、压栈指令,故用户需自己保护中断现场。
例:中断入口保护现场
PUSH:
LD
ACC_BAK,A
;保存 ACC 至自定义寄存器 ACC_BAK
SWAPA
STATUS
;状态寄存器 STATUS 高低半字节互换
LD
STATUS_BAK,A
;保存至自定义寄存器 STATUS_BAK
RET
;返回
例:中断出口恢复现场
POP:
SWAPA
STATUS_BAK
;将保存至 STATUS_BAK 的数据高低半字节互换给 ACC
LD
STATUS,A
;将 ACC 的值给状态寄存器 STATUS
SWAPR
ACC_BAK
;将保存至 ACC_BAK 的数据高低半字节互换
SWAPA
ACC_BAK
;将保存至 ACC_BAK 的数据高低半字节互换给 ACC
RET
www.mcu.com.cn
;返回
-8-
V1.1
Cmsemicon
2.1.1.3
CMS89F552x
跳转表
跳转表能够实现多地址跳转功能。由于 PCL 和 ACC 的值相加即可得到新的 PCL,因此,可以通过对 PCL
加上不同的 ACC 值来实现多地址跳转。ACC 值若为 n,PCL+ACC 即表示当前地址加 n,执行完当前指令后
PCL 值还会自加 1,可参考以下范例。如果 PCL+ACC 后发生溢出,PC 不会自动进位,故编写程序时应注意。
这样,用户就可以通过修改 ACC 的值轻松实现多地址的跳转。
PCLATH 为 PC 高位缓冲寄存器,对 PCL 操作时,必须先对 PCLATH 进行赋值。
例:正确的多地址跳转程序示例
FLASH 地址
LDIA
01H
LD
PCLATH,A
;必须对 PCLATH 进行赋值
…
0110H:
ADDR
PCL
0111H:
JP
LOOP1
;ACC+PCL
;ACC=0,跳转至 LOOP1
0112H:
JP
LOOP2
;ACC=1,跳转至 LOOP2
0113H:
JP
LOOP3
;ACC=2,跳转至 LOOP3
0114H:
JP
LOOP4
;ACC=3,跳转至 LOOP4
0115H:
JP
LOOP5
;ACC=4,跳转至 LOOP5
0116H:
JP
LOOP6
;ACC=5,跳转至 LOOP6
例:错误的多地址跳转程序示例
FLASH 地址
CLR
PCLATH
…
00FCH:
ADDR
PCL
00FDH:
JP
LOOP1
;ACC+PCL
;ACC=0,跳转至 LOOP1
00FEH:
JP
LOOP2
;ACC=1,跳转至 LOOP2
00FFH:
JP
LOOP3
;ACC=2,跳转至 LOOP3
0100H:
JP
LOOP4
;ACC=3,跳转至 0000H 地址
0101H:
JP
LOOP5
;ACC=4,跳转至 0001H 地址
0102H:
JP
LOOP6
;ACC=5,跳转至 0002H 地址
注:由于 PCL 溢出不会自动向高位进位,故在利用 PCL 作多地址跳转时,需要要注意该段程序一定不
能放在 FLASH 空间的分页处。
www.mcu.com.cn
-9-
V1.1
Cmsemicon
CMS89F552x
2.1.2 数据存储器
CMS89F552x 数据存储器列表
INDF
TMR0
PCL
STATUS
FSR
PORTA
PORTB
WPUA
WPUB
IOCB
PCLATH
INTCON
PIR1
PIE1
PWMD23H
PWM01DT
PWM23DT
TMR2
T2CON
PWMCON0
PWMCON1
PWMTL
PWMTH
PWMD0L
PWMD1L
PWMD2L
PWMD3L
PWMD4L
PWMD01H
PWMCON2
-------
地址
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
10H
11H
12H
13H
14H
15H
16H
17H
18H
19H
1AH
1BH
1CH
1DH
1EH
1FH
20H
地址
80H
81H
82H
83H
84H
85H
86H
87H
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
90H
91H
92H
93H
94H
95H
96H
97H
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
A0H
通用寄存器
80 字节
通用寄存器
96 字节
6FH
70H
-7FH
BANK0
INDF
OPTION_REG
PCL
STATUS
FSR
TRISA
TRISB
WPDB
OSCCON
---PCLATH
INTCON
---------------PR2
------------------OPA0CON
OPA0ADJ
OPA1CON
OPA1ADJ
ADCON1
ADCON0
ADRESL
ADRESH
快速存储区
70H-7FH
-------------------------------------------------------------------------------------------------
地址
100H
101H
102H
103H
104H
105H
106H
107H
108H
109H
10AH
10BH
10CH
10DH
10EH
10FH
110H
111H
112H
113H
114H
115H
116H
117H
118H
119H
11AH
11BH
11CH
11DH
11EH
11FH
120H
通用寄存器
80 字节
EFH
F0H
-FFH
BANK1
快速存储区
70H-7FH
-------------------------------------------------------------------------
----
地址
180H
181H
182H
183H
184H
185H
186H
187H
188H
189H
18AH
18BH
18CH
18DH
18EH
18FH
190H
191H
192H
193H
194H
195H
196H
197H
198H
199H
19AH
19BH
19CH
19DH
19EH
19FH
1A0H
----
16FH
170H
-17FH
BANK2
快速存储区
70H-7FH
1EFH
1F0H
-1FFH
BANK3
数据存储器由 512×8 位组成,分为两个功能区间:特殊功能寄存器和通用数据存储器。数据存储器单元
大多数是可读/写的,但有些只读的。特殊功能寄存器地址为从 00H-1FH,80H-9FH。
www.mcu.com.cn
-10-
V1.1
Cmsemicon
CMS89F552x
CMS89F552x 特殊功能寄存器汇总 Bank0
地址
名称
00H
INDF
寻址该单元会使用FSR的内容寻址数据存储器(不是物理寄存器)
xxxxxxxx
01H
TMR0
TIMER0数据寄存器
xxxxxxxx
02H
PCL
程序计数器低字节
00000000
03H
STATUS
04H
FSR
05H
PORTA
----
----
06H
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
07H
WPUA
----
----
WPUA5
WPUA4
WPUA3
WPUA2
08H
WPUB
WPUB7
WPUB6
WPUB5
WPUB4
WPUB3
WPUB2
09H
IOCB
IOCB7
IOCB6
IOCB5
IOCB4
IOCB3
IOCB2
0AH
PCLATH
----
----
----
----
0BH
INTCON
GIE
PEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
00000000
0CH
PIR1
----
----
----
----
----
PWMIF
TMR2IF
ADIF
-----000
0DH
PIE1
----
----
----
----
----
PWMIE
TMR2IE
ADIE
-----000
0EH
PWMD23H
----
----
PWMD3[9:8]
----
----
0FH
PWM01DT
----
----
PWM01死区延时时间
--00000
10H
PWM23DT
----
----
PWM23死区延时时间
--00000
11H
TMR2
TIMER2模块寄存器
12H
T2CON
CLK_SEL
13H
PWMCON0
14H
PWMCON1
15H
PWMTL
PWM周期低位寄存器
00000000
16H
PWMTH
PWM周期高位寄存器
00000000
17H
PWMD0L
PWM0占空比低位寄存器
00000000
18H
PWMD1L
PWM1占空比低位寄存器
00000000
19H
PWMD2L
PWM2占空比低位寄存器
00000000
1AH
PWMD3L
PWM3占空比低位寄存器
00000000
1BH
PWMD4L
PWM4占空比低位寄存器
1CH
PWMD01H
1DH
PWMCON2
Bit7
Bit6
IRP
RP1
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
RP0
TO
PD
Z
DC
C
RA5
RA4
RA3
RA2
RA1
RA0
--xxxxxx
RB1
RB0
xxxxxxxx
WPUA1
WPUA0
--000000
WPUB1
WPUB0
00000000
IOCB1
IOCB0
00000000
间接数据存储器地址指针
TOUTPS3
----
00011xxx
xxxxxxxx
程序计数器高4位的写缓冲器
-----0000
PWMD2[9:8]
--00--00
00000000
TOUTPS2
TOUTPS1
TOUTPS0
TMR2ON
T2CKPS1
T2CKPS0
00000000
PWM4EN
PWM3EN
PWM2EN
PWM1EN
PWM0EN
00000000
PWM2DTEN
PWM0DTEN
----
----
CLKDIV[2:0]
PWMIO_SEL[1:0]
复位值
DT_DIV[1:0]
0000--00
00000000
PWMD1[9:8]
----
PWMD0[9:8]
----
----
----
PWM4DIR
PWM3DIR
PWM2DIR
PWM1DIR
PWM0DIR
--00--00
----00000
1EH
----
----
----
----
----
----
----
----
----
--------
1FH
----
----
----
----
----
----
----
----
----
--------
www.mcu.com.cn
-11-
V1.1
Cmsemicon
CMS89F552x
CMS89F552x 特殊功能寄存器汇总 Bank1
地址
名称
80H
INDF
81H
OPTION_REG
82H
PCL
83H
STATUS
84H
FSR
85H
TRISA
86H
TRISB
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
87H
WPDB
WPDB7
WPDB6
WPDB5
WPDB4
WPDB3
WPDB2
88H
OSCCON
----
IRCF2
IRCF1
IRCF0
----
----
8AH
PCLATH
----
----
----
----
8BH
INTCON
GIE
PEIE
T01E
INTE
RBIE
91H
PR2
98H
OPA0CON
OPA0EN
OPA0O
OPA0_CMP
OPA0_ADC
----
99H
OPA0ADJ
OPA0OUT
OPA0COFM
OPA0CRS
9AH
OPA1CON
OPA1EN
OPA1O
OPA1_CMP
9BH
OPA1ADJ
OPA1OUT
OPA1COFM
OPA1CRS
9CH
ADCON1
ADFM
----
----
----
----
LDO_EN
9DH
ADCON0
ADCS1
ADCS0
CHS3
CHS2
CHS1
CHS0
9EH
ADRESL
ADC结果寄存器的低字节
xxxxxxxx
9FH
ADRESH
ADC结果寄存器的高字节
xxxxxxxx
www.mcu.com.cn
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
PS2
PS1
PS0
寻址该地址单元会使用FSR的内容寻址数据存储器(不是物理寄存器)
RBPU
INTEDG
T0CS
T0SE
PSA
xxxxxxxx
程序计数器(PC)的低字节
IRP
RP1
----
11111011
00000000
RP0
TO
PD
Z
DC
C
TRISA5
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
--111111
TRISB1
TRISB0
11111111
WPDB1
WPDB0
00000000
SWDTEN
----
-101—0-
T0IF
INTF
RBIF
----
----
OPA0FT
间接数据存储器地址指针
----
复位值
00011xxx
xxxxxxxx
程序计数器高4位的写缓冲器
-----0000
TIMER2周期寄存器
00000000
11111111
OPA0ADJ[4:0]
OPA1_ADC
----
----
00010000
----
OPA1FT
OPA1ADJ[4:0]
-12-
0000---1
0000---1
00010000
LDO_SEL[1:0]
GO/ DONE
ADON
0----000
00000000
V1.1
Cmsemicon
2.2
CMS89F552x
寻址方式
2.2.1 直接寻址
通过工作寄存器(ACC)来对 RAM 进行操作。
例:ACC 的值送给 30H 寄存器
LD
30H,A
例:30H 寄存器的值送给 ACC
LD
A,30H
2.2.2 立即寻址
把立即数传给工作寄存器(ACC)
。
例:立即数 12H 送给 ACC
LDIA
12H
2.2.3 间接寻址
数据存储器能被直接或间接寻址。通过 INDF 寄存器可间接寻址,INDF 不是物理寄存器。当对 INDF 进行
存取时,它会根据 FSR 寄存器内的值(低 8 位)和 STATUS 寄存器的 IRP 位(第 9 位)作为地址,并指向该
地址的寄存器,因此在设置了 FSR 寄存器和 STATUS 寄存器的 IRP 位后,就可把 INDF 寄存器当作目的寄存
器来存取。间接读取 INDF(FSR=0)将产生 00H。间接写入 INDF 寄存器,将导致一个空操作。以下例子说
明了程序中间接寻址的用法。
例:FSR 及 INDF 的应用
LDIA
30H
LD
FSR,A
;间接寻址指针指向 30H
CLRB
STATUS,IRP
;指针第 9 位清零
CLR
INDF
;清零 INDF 实际是清零 FSR 指向的 30H 地址 RAM
例:间接寻址清 RAM(20H-7FH)举例:
LDIA
1FH
LD
FSR,A
CLRB
STATUS,IRP
INCR
FSR
;地址加 1,初始地址为 30H
CLR
INDF
;清零 FSR 所指向的地址
LDIA
7FH
SUBA
FSR
SNZB
STATUS,C
JP
LOOP
;间接寻址指针指向 1FH
LOOP:
www.mcu.com.cn
;一直清零至 FSR 地址为 7FH
-13-
V1.1
Cmsemicon
2.3
CMS89F552x
堆栈
芯片的堆栈缓存器共 8 层,堆栈缓存器既不是数据存储器的一部分,也不是程序内存的一部分,且既不能
被读出,也不能被写入。对它的操作通过堆栈指针(SP)来实现,堆栈指针(SP)也不能读出或写入,当系
统复位后堆栈指针会指向堆栈顶部。当发生子程序调用及中断时的程序计数器(PC)值被压入堆栈缓存器,当
从中断或子程序返回时将数值返回给程序计数器(PC),下图说明其工作原理。
RET
CALL
SP7
RETI
中断
SP6
SP5
SP4
SP-1
SP+1
SP3
SP2
SP1
SP0
图 2-1:堆栈缓存器工作原理
堆栈缓存器的使用将遵循一个原则“先进后出”
。
注:堆栈缓存器只有 8 层,如果堆栈已满,并且发生不可屏蔽的中断,那么只有中断标志位会被记录下来,
而中断响应则会被抑制,直到堆栈指针发生递减,中断才会被响应,这个功能可以防止中断使堆栈溢
出,同样如果堆栈已满,并且发生子程序调用,那么堆栈将会发生溢出,首先进入堆栈的内容将会丢
失,只有最后 8 个返回地址被保留,故用户在写程序时应注意此点,以免发生程序走飞。
www.mcu.com.cn
-14-
V1.1
Cmsemicon
2.4
CMS89F552x
工作寄存器(ACC)
2.4.1 概述
ALU 是 8Bit 宽的算术逻辑单元,MCU 所有的数学、逻辑运算均通过它来完成。它可以对数据进行加、减、
移位及逻辑运算;ALU 也控制状态位(STATUS 状态寄存器中),用来表示运算结果的状态。
ACC 寄存器是一个 8-Bit 的寄存器,ALU 的运算结果可以存放在此,它并不属于数据存储器的一部分而是
位于 CPU 中供 ALU 在运算中使用,因此不能被寻址,只能通过所提供的指令来使用。
2.4.2 ACC 应用
例:用 ACC 做数据传送
LD
A,R01
;将寄存器 R01 的值赋给 ACC
LD
R02,A
;将 ACC 的值赋给寄存器 R02
例:用 ACC 做立即寻址目标操作数
LDIA
30H
;给 ACC 赋值 30H
ANDIA
30H
;将当前 ACC 的值跟立即数 30H 进行“与”操作,结果放入 ACC
XORIA
30H
;将当前 ACC 的值跟立即数 30H 进行“异或”操作,结果放入 ACC
例:用 ACC 做双操作数指令的第一操作数
HSUBA
R01
;ACC-R01,结果放入 ACC
HSUBR
R01
;ACC-R01,结果放入 R01
例:用 ACC 做双操作数指令的第二操作数
SUBA
R01
;R01-ACC,结果放入 ACC
SUBR
R01
; R01-ACC,结果放入 R01
www.mcu.com.cn
-15-
V1.1
Cmsemicon
2.5
CMS89F552x
程序状态寄存器(STATUS)
STATUS 寄存器如下表所示,包含:
◆ ALU 的算术状态。
◆ 复位状态。
◆ 数据存储器(GPR 和 SFR)的存储区选择位。
与其他寄存器一样,STATUS 寄存器可以是任何指令的目标寄存器。如果一条影响 Z、DC 或 C 位的指令
以 STATUS 寄存器作为目标寄存器,则不能写这 3 个状态位。这些位根据器件逻辑被置 1 或清零。而且也不能
写 TO 和 PD 位。因此将 STATUS 作为目标寄存器的指令可能无法得到预期的结果。
例如,CLRSTATUS 会清零高 3 位,并将 Z 位置 1。这样 STATUS 的值将为 000u u1uu(其中 u =不变)。
因此,建议仅使用 CLRB、SETB、SWAPA、SWAPR 指令来改变 STATUS 寄存器,因为这些指令不会影响任
何状态位。
程序状态寄存器 STATUS(03H)
03H
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
STATUS
IRP
RP1
RP0
TO
PD
Z
DC
C
读写
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位值
0
0
0
1
1
X
X
X
Bit7
Bit6~Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
www.mcu.com.cn
IRP:
1=
0=
RP[1:0]:
00:
01:
10:
11:
TO:
1=
0=
PD:
1=
0=
Z:
1=
0=
DC:
1=
0=
C:
1=
0=
寄存器存储器选择位(用于间接寻址);
Bank2和Bank3(100h-1FFh);
Bank0和Bank1(00h-FFh)。
存储区选择位;
选择Bank 0;
选择Bank 1;
选择Bank 2;
选择Bank 3。
超时位;
上电或执行了CLRWDT指令或STOP指令;
发生了WDT超时。
掉电位;
上电或执行了CLRWDT指令;
执行了STOP指令。
结果为零位;
算术或逻辑运算的结果为零;
算术或逻辑运算的结果不为零。
半进位/借位位;
发生了结果的第4低位向高位进位;
结果的第4低位没有向高位进位。
进位/借位位;
结果的最高位发生了进位或没有发生借位;
结果的最高位没有发生进位或发生了借位。
-16-
V1.1
Cmsemicon
CMS89F552x
TO 和 PD 标志位可反映出芯片复位的原因,下面列出影响 TO、PD 的事件及各种复位后 TO、PD 的状态。
事件
TO
PD
TO
PD
复位原因
电源上电
1
1
0
0
WDT 溢出唤醒休眠 MCU
WDT 溢出
0
X
0
1
WDT 溢出非休眠态
STOP 指令
1
0
1
1
电源上电
CLRWDT 指令
1
1
休眠
1
0
复位后 TO/PD 的状态
影响 TO/PD 的事件表
www.mcu.com.cn
-17-
V1.1
Cmsemicon
2.6
CMS89F552x
预分频器(OPTION_REG)
OPTION_REG 寄存器是可读写的寄存器,包括各种控制位用于配置:
◆ TIMER0/WDT 预分频器。
◆ TIMER0。
◆ PORTB 上拉电阻控制。
预分频器 OPTION_REG(81H)
81H
Bit7
Bit6
Bit5
Bit4
Bit3
OPTION_REG
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
读写
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位值
1
1
1
1
1
0
1
1
Bit7
Bit6
Bit5
Bit4
RBPU:
1=
0=
INTEDG:
1=
0=
T0CS:
0=
1=
T0SE:
0=
1=
Bit3
PSA:
0=
1=
Bit2~Bit0
PS2~PS0:
Bit2
Bit1
Bit0
PORTB 上拉使能位。
禁止 PORTB 上拉。
由端口的各个锁存值使能 PORTB 上拉。
触发中断的边沿选择位。
INT 引脚上升沿触发中断。
INT 引脚下降沿触发中断。
TIMER0 时钟源选择位。
内部指令周期时钟(FSYS/4)
。
T0CKI 引脚上的跳变沿。
TIMER0 时钟源边沿选择位。
在 T0CKI 引脚信号从低电平跳变到高电平时递增。
在 T0CKI 引脚信号从高电平跳变到低电平时递增。
预分频器分配位。
预分频器分配给 TIMER0 模块。
预分频器分配给 WDT。
预分配参数配置位。
PS2
0
0
0
0
1
1
1
1
PS1
0
0
1
1
0
0
1
1
PS0
0
1
0
1
0
1
0
1
TMR0 分频比
1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256
WDT 分频比
1:1
1:2
1:4
1:8
1:16
1:32
1:64
1:128
预分频寄存器实际上是一个 8 位的计数器,用于监视寄存器 WDT 时,是作为一个后分频器;用于定时器/
计数器时,
作为一个预分频器,
通常统称作预分频器。
在片内只有一个物理的分频器,
只能用于 WDT 或 TIMER0,
两者不能同时使用。也就是说,若用于 TIMER0,WDT 就不能使用预分频器,反之亦然。
当用于 WDT 时,CLRWDT 指令将同时对预分频器和 WDT 定时器清零。
当用于 TIMER0 时,有关写入 TIMER0 的所有指令(如:CLR TMR0,SETB TMR0,1 等)都会对预分频
器清零。
www.mcu.com.cn
-18-
V1.1
Cmsemicon
CMS89F552x
由 TIMER0 还是 WDT 使用预分频器,完全由软件控制。它可以动态改变。为了避免出现不该有的芯片复
位,当从 TIMER0 换为 WDT 使用时,应该执行以下指令。
;关中断总使能位,避免在执行以下特定时序时
进入中断程序
CLRB
INTCON,GIE
CLRB
STATUS,6
SETB
STATUS,5
LDIA
B’00000111’
ORR
OPTION_REG,A
;预分频器设置为最大值
CLRB
STATUS,5
选择 BANK0
CLR
TMR0
;TMR0 清零
SETB
STATUS,5
选择 BANK1
SETB
OPTION_REG,PSA
;设置预分频器分配给 WDT
选择 BANK1
;WDT 清零
CLRWDT
LDIA
B’xxxx1xxx’
;设置新的预分频器
LD
OPTION_REG,A
;WDT 清零
CLRWDT
SETB
INTCON,GIE
;若程序需要用到中断,此处重新打开总使能位
将预分频器从分配给 WDT 切换为分配给 TIMER0 模块,应该执行以下指令
;WDT 清零
CLRWDT
;设置新的预分频器
LDIA
B’00xx0xxx’
LD
OPTION_REG,A
注:要使 TIMER0 获取 1:1 的预分频比配置,可通过将选项寄存器的 PSA 位置 1 将预分频器分配给
WDT。
www.mcu.com.cn
-19-
V1.1
Cmsemicon
2.7
CMS89F552x
程序计数器(PC)
程序计数器(PC)控制程序内存 FLASH 中的指令执行顺序,它可以寻址整个 FLASH 的范围,取得指令
码后,程序计数器(PC)会自动加一,指向下一个指令码的地址。但如果执行跳转、条件跳转、向 PCL 赋值、
子程序调用、初始化复位、中断、中断返回、子程序返回等操作时,PC 会加载与指令相关的地址而不是下一
条指令的地址。
当遇到条件跳转指令且符合跳转条件时,当前指令执行过程中读取的下一条指令将会被丢弃,且会插入一
个空指令操作周期,随后才能取得正确的指令。反之,就会顺序执行下一条指令。
程序计数器(PC)是 12Bit 宽度,低 8 位通过 PCL(02H)寄存器用户可以访问,高 4 位用户不能访问。
可容纳 4K×14Bit 程序地址。对 PCL 赋值将会产生一个短跳转动作,跳转范围为当前页的 256 个地址。
注:当程序员作超过 2K 空间的 JP 或 CALL 操作时,要先对 PC 高位缓冲寄存器 PCLATH 进行赋值。
下面给出几种特殊情况的 PC 值,示意图见图 2-2。
复位时
PC=0000;
中断时
PC=0004(原来的 PC+1 会被自动压入堆栈)
;
CALL 时
PC[11]由 PCLATH[3]决定,PC[10:0]由操作码决定。
(原来的 PC+1 会被自动压入堆栈)
;
RET、RETI、RET i 时
PC=堆栈出来的值;
操作 PCL 时
PC[11:8]由 PCLATH[3:0]决定,PC[7:0]=用户指定的值;
JP 时
PC[11]由 PCLATH[3]决定,PC[10:0]由操作码决定。
其它指令
PC=PC+1;
11
8 7
0
PC
将PCL作为目标寄存器的指令
PCLATH[3:0]
ALU结果[7:0]
PCLATH
11
10
8 7
0
JP 或 CALL指令
PC
PCLATH[3]
操作码[10:0]
PCLATH
图 2-2:在不同情况下操作 PC 的原理
www.mcu.com.cn
-20-
V1.1
Cmsemicon
CMS89F552x
下面范例程序给出了使用 JP 或 CALL 指令的注意事项。
ORG
00H
JP
ORG
LABEL1:
ORG
LABLE4:
ORG
LABLE5:
ORG
LABLE2:
LABEL1
目标地址 LABEL1 位于 300H 地址,当前 PCLATH 值为
00H,在同一个 2K 范围内,所以在执行 JP 指令前,不需
要改变 PCLATH 值
08H
PCLATH,A
LABEL2
目标地址 LABEL2 位于 900H 地址,当前 PCLATH 值为
00H,不在同一个 2K 范围内,所以在执行 JP 指令前,需
要先对 PCLATH 赋值
…
300H
LDIA
LD
JP
…
7FEH
NOP
NOP
NOP
LDIA
LD
08H
PCLATH,A
JP
LABLE5
;7FEH
;7FFH
;800H
目标地址 LABEL5 位于 880H 地址,当前 PCLATH 值为
00H(程序正常运行,
当 PC 从 7FFH 变为 800H 时,
PCLATH
值不会随着变化),不在同一个 2K 范围内,所以在执行 JP
指令前,需要先对 PCLATH 赋值
…
880H
NOP
RET
…
900H
NOP
ORG
LABLE3:
CALL
LABLE3
LDIA
LD
CALL
NOP
…
…
0E00H
00H
PCLATH,A
LABLE4
目标地址 LABEL3 位于 E00H 地址,当前 PCLATH 值为
08H,在同一个 2K 范围内,所以在执行 CALL 指令前,不
需要改变 PCLATH 值
目标地址 LABEL4 位于 7FEH 地址,当前 PCLATH 值为
08H,不在同一个 2K 范围内,所以在执行 CALL 指令前,
需要先对 PCLATH 赋值
NOP
RET
…
www.mcu.com.cn
-21-
V1.1
Cmsemicon
CMS89F552x
看门狗计数器(WDT)
2.8
看门狗定时器(Watch Dog Timer)是一个片内自振式的 RC 振荡定时器,无需任何外围组件,即使芯片
的主时钟停止工作,WDT 也能保持计时。WDT 计时溢出将产生复位。
2.8.1 WDT 周期
WDT 与 TIMER0 共用 8 位预分频器。在所有复位后,WDT 溢出周期 18ms,假如你需要改变的 WDT 周
期,可以设置 OPTION_REG 寄存器。WDT 的溢出周期将受到环境温度、电源电压等参数影响。
“CLRWDT”和“STOP”指令将清除 WDT 定时器以及预分频器里的计数值(当预分频器分配给 WDT
时)
。WDT 一般用来防止系统失控,或者可以说是用来防止单片机程序失控。在正常情况下,WDT 应该在其
溢出前被“CLRWDT”指令清零,以防止产生复位。如果程序由于某种干扰而失控,那么不能在 WDT 溢出前
执行“CLRWDT”指令,就会使 WDT 溢出而产生复位。使系统重启而不至于失去控制。若是 WDT 溢出产生
的复位,则状态寄存器(STATUS)的“TO”位会被清零,用户可根据此位来判断复位是否是 WDT 溢出所造
成的。
注:
若使用 WDT 功能,一定要在程序的某些地方放置“CLRWDT”指令,以保证在 WDT 溢出前能被清
1.
零。否则会使芯片不停的复位,造成系统无法正常工作。
2.
不能在中断程序中对 WDT 进行清零,否则无法侦测到主程序“跑飞”的情况。
3.
程序中应在主程序中有一次清 WDT 的操作,尽量不要在多个分支中清零 WDT,这种架构能最大限度
发挥看门狗计数器的保护功能。
看门狗计数器不同芯片的溢出时间有一定差异,所以设置清 WDT 时间时,应与 WDT 的溢出时间有较
4.
大的冗余,以避免出现不必要的 WDT 复位。
2.8.2 看门狗定时器控制
SWDTEN:
1=
0=
软件使能或禁止看门狗定时器位。
使能 WDT。
禁止 WDT(复位值)。
注:
1.
SWDTEN 位于 OSCCON 寄存器 Bit1。
2.
如果 CONFIG 中 WDT 配置位=1,则 WDT 始终被使能,而与 SWDTEN 控制位的状态无关。如果
CONFIG 中 WDT 配置位=0,则可以使用 SWDTEN 控制位使能或禁止 WDT。
www.mcu.com.cn
-22-
V1.1
Cmsemicon
CMS89F552x
3. 系统时钟
概述
3.1
时钟信号从 OSCIN 引脚输入后(或者由内部振荡产生),在片内产生 4 个非重叠正交时钟信号,分别称作
Q1、Q2、Q3、Q4。在 IC 内部每个 Q1 使程序计数器(PC)增量加一,Q4 从程序存储单元中取出该指令,
并将其锁存在指令寄存器中。在下一个 Q1 到 Q4 之间对取出的指令进行译码和执行,也就是说 4 个时钟周期
才会执行一条指令。下图表示时钟与指令周期执行时序图。
一个指令周期含有 4 个 Q 周期,指令的执行和获取是采用流水线结构,取指占用一个指令周期,而译码和
执行占用另一个指令周期,但是由于流水线结构,从宏观上看,每条指令的有效执行时间是一个指令周期。如
果一条指令引起程序计数器地址发生改变(例如 JP)那么预取的指令操作码就无效,就需要两个指令周期来完
成该条指令,这就是对 PC 操作指令都占用两个时钟周期的原因。
Q1
Q3
Q2
Q4
Q1
Q2
Q3
Q4
Q1
Q2
Q3
Q4
CLK
Q1
Q2
Q3
Q4
PC
PC+1
PC+2
取址 PC
执行指令 PC-1
取址 PC+1
执行指令 PC
取址 PC+2
执行指令 PC+1
图 3-1:时钟与指令周期时序图
下面列出系统工作频率与指令速度的关系:
系统工作频率(Fsys)
双指令周期
单指令周期
1MHz
8μs
4μs
2MHz
4μs
2μs
4MHz
2μs
1μs
8MHz
1μs
500ns
www.mcu.com.cn
-23-
V1.1
Cmsemicon
3.2
CMS89F552x
系统振荡器
芯片只有内部 RC 振荡。
3.2.1 内部 RC 振荡
芯片默认的振荡方式为内部 RC 振荡,其振荡频率为 8MHz 可通过 OSCCON 寄存器设置芯片工作频率。
3.3
起振时间
起振时间(Reset Time)是指从芯片复位到芯片振荡稳定这段时间,其设计值约为 18ms。
注:无论芯片是电源上电复位,还是其它原因引起的复位,都会存在这个起振时间。
3.4
振荡器控制寄存器
振荡器控制(OSCCON)寄存器控制系统时钟和频率选择。
振荡器控制寄存器 OSCCON(88H)
88H
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
OSCCON
---
IRCF2
IRCF1
IRCF0
---
---
SWDTEN
---
R/W
---
R/W
R/W
R/W
---
---
R/W
---
复位值
---
1
0
1
---
---
0
---
Bit7
Bit6~Bit4
Bit3~Bit2
Bit1
Bit0
未用,读为 0。
IRCF:
111=
110=
101=
100=
011=
010=
001=
000=
未用。
SWDTEN:
1=
0=
未用。
内部振荡器分频选择位。
FSYS = FOSC/1
FSYS = FOSC /2
FSYS = FOSC /4(默认)
FSYS = FOSC /8
FSYS = FOSC /16
FSYS = FOSC /32
FSYS = FOSC /64
FSYS = 32kHz(LFINTOSC)。
软件使能或禁止看门狗定时器位。
使能WDT。
禁止WDT(复位值)
。
注:FOSC 为内部振荡器频率,可选择 8MHz 或 16MHz;FSYS 为系统工作频率。
www.mcu.com.cn
-24-
V1.1
Cmsemicon
CMS89F552x
4. 复位
芯片可用如下 3 种复位方式:
◆ 上电复位;
◆ 低电压复位;
◆ 正常工作下的看门狗溢出复位;
上述任意一种复位发生时,所有的系统寄存器将恢复默认状态,程序停止运行,同时程序计数器 PC 清零,
复位结束后程序从复位向量 0000H 开始运行。STATUS 的 TO 和 PD 标志位能够给出系统复位状态的信息,
(详
见 STATUS 的说明)
,用户可根据 PD 和 TO 的状态,控制程序运行路径。
任何一种复位情况都需要一定的响应时间,系统提供完善的复位流程以保证复位动作的顺利进行。
上电复位
4.1
上电复位与 LVR 操作密切相关。系统上电的过程呈逐渐上升的曲线形式,需要一定时间才能达到正常电平
值。下面给出上电复位的正常时序:
-
上电:系统检测到电源电压上升并等待其稳定;
-
系统初始化:所有的系统寄存器被置为初始值;
-
振荡器开始工作:振荡器开始提供系统时钟;
-
执行程序:上电结束,程序开始运行。
www.mcu.com.cn
-25-
V1.1
Cmsemicon
CMS89F552x
掉电复位
4.2
4.2.1 掉电复位概述
掉电复位针对外部因素引起的系统电压跌落情形(例如,干扰或外部负载的变化)。电压跌落可能会进入
系统死区,系统死区意味着电源不能满足系统的最小工作电压要求。
VDD
系统正常工作区域
V1
V2
V3
LVR检测电压
系统工作出错区域
图4-1:掉电复位示意图
上图是一个典型的掉电复位示意图。图中,VDD 受到严重的干扰,电压值降的非常低。虚线以上区域系统
正常工作,在虚线以下的区域内,系统进入未知的工作状态,这个区域称作死区。当 VDD 跌至 V1 时,系统仍
处于正常状态;当 VDD 跌至 V2 和 V3 时,系统进入死区,则容易导致出错。
以下情况系统可能进入死区:
⚫
DC 运用中:
-
DC 运用中一般都采用电池供电,当电池电压过低或单片机驱动负载时,系统电压可能跌落并进
入死区。这时,电源不会进一步下降到 LVD 检测电压,因此系统维持在死区。
⚫
AC 运用中:
-
系统采用 AC 供电时,DC 电压值受 AC 电源中的噪声影响。当外部负载过高,如驱动马达时,
负载动作产生的干扰也影响到 DC 电源。VDD 若由于受到干扰而跌落至最低工作电压以下时,则
系统将有可能进入不稳定工作状态。
-
在 AC 运用中,系统上、下电时间都较长。其中,上电时序保护使得系统正常上电,但下电过程
却和 DC 运用中情形类似,AC 电源关断后,VDD 电压在缓慢下降的过程中易进入死区。
如上图所示,系统正常工作电压区域一般高于系统复位电压,同时复位电压由低电压检测(LVR)电平决
定。当系统执行速度提高时,系统最低工作电压也相应提高,但由于系统复位电压是固定的,因此在系统最低
工作电压与系统复位电压之间就会出现一个电压区域,系统不能正常工作,也不会复位,这个区域即为死区。
www.mcu.com.cn
-26-
V1.1
Cmsemicon
CMS89F552x
4.2.2 掉电复位的改进办法
如何改进系统掉电复位性能,以下给出几点建议:
◆ 选择较高的 LVR 电压,有助于复位更可靠;
◆ 开启看门狗定时器;
◆ 降低系统的工作频率;
◆ 增大电压下降斜率。
看门狗定时器
看门狗定时器用于保证程序正常运行,当系统进入工作死区或者程序运行出错时,看门狗定时器会溢出,
系统复位。
降低系统的工作速度
系统工作频率越快,系统最低工作电压越高。从而增大了工作死区的范围,降低系统工作速度就可以降低
最低工作电压,从而有效的减小系统工作在死区电压的机率。
增大电压下降斜率
此方法可用于系统工作在 AC 供电的环境,一般 AC 供电系统,系统电压在掉电过程中下降很缓慢,这就
会造成芯片较长时间工作在死区电压,此时若系统重新上电,芯片工作状态可能出错,建议在芯片电源与地线
间加一个放电电阻,以便让 MCU 快速通过死区,进入复位区,避免芯片上电出错可能性。
看门狗复位
4.3
看门狗复位是系统的一种保护设置。在正常状态下,由程序将看门狗定时器清零。若出错,系统处于未知
状态,看门狗定时器溢出,此时系统复位。看门狗复位后,系统重启进入正常状态。
看门狗复位的时序如下:
-
看门狗定时器状态:系统检测看门狗定时器是否溢出,若溢出,则系统复位;
-
初始化:所有的系统寄存器被置为默认状态;
-
振荡器开始工作:振荡器开始提供系统时钟;
-
程序:复位结束,程序开始运行。
关于看门狗定时器的应用问题请参看 2.8WDT 应用章节。
www.mcu.com.cn
-27-
V1.1
Cmsemicon
CMS89F552x
5. 休眠模式
进入休眠模式
5.1
执行 STOP 指令可进入休眠模式。如果 WDT 使能,那么:
◆ WDT 将被清零并继续运行。
◆ STATUS 寄存器中的 PD 位被清零。
◆ TO 位被置 1。
◆ 关闭振荡器驱动器。
◆ I/O 端口保持执行 STOP 指令之前的状态(驱动为高电平、低电平或高阻态)。
在休眠模式下,为了尽量降低电流消耗,所有 I/O 引脚都应该保持为 VDD 或 GND,没有外部电路从 I/O
引脚消耗电流。为了避免输入引脚悬空而引入开关电流,应在外部将高阻输入的 I/O 引脚拉为高电平或低电平。
为了将电流消耗降至最低,还应考虑芯片内部上拉电阻的影响。
从休眠状态唤醒
5.2
可以通过下列任一事件将器件从休眠状态唤醒:
1.
看门狗定时器唤醒(WDT 强制使能);
2.
PORTB 电平变化中断或外设中断。
上述两种事件被认为是程序执行的延续,STATUS 寄存器中的 TO 和 PD 位用于确定器件复位的原因。PD
位在上电时被置 1,而在执行 STOP 指令时被清零。TO 位在发生 WDT 唤醒时被清零。
当执行 STOP 指令时,下一条指令(PC+1)被预先取出。如果希望通过中断事件唤醒器件,则必须将相
应的中断允许位置 1(允许)
。唤醒与 GIE 位的状态无关。如果 GIE 位被清零(禁止)
,器件将继续执行 STOP
指令之后的指令。如果 GIE 位被置 1(允许)
,器件执行 STOP 指令之后的指令,然后跳转到中断地址(0004h)
处执行代码。如果不想执行 STOP 指令之后的指令,用户应该在 STOP 指令后面放置一条 NOP 指令。器件从
休眠状态唤醒时,WDT 都将被清零,而与唤醒的原因无关。
使用中断唤醒
5.3
当禁止全局中断(GIE 被清零)时,并且有任一中断源将其中断允许位和中断标志位置 1,将会发生下列
事件之一:
-
如果在执行 STOP 指令之前产生了中断,那么 STOP 指令将被作为一条 NOP 指令执行。因此,WDT
及其预分频器和后分频器(如果使能)将不会被清零,并且 TO 位将不会被置 1,同时 PD 也不会被
清零。
-
如果在执行 STOP 指令期间或之后产生了中断,那么器件将被立即从休眠模式唤醒。STOP 指令将在
唤醒之前执行完毕。因此,WDT 及其预分频器和后分频器(如果使能)将被清零,并且 TO 位将被置
1,同时 PD 也将被清零。即使在执行 STOP 指令之前检查到标志位为 0,它也可能在 STOP 指令执
行完毕之前被置 1。要确定是否执行了 STOP 指令,可以测试 PD 位。如果 PD 位置 1,则说明 STOP
指令被作为一条 NOP 指令执行了。在执行 STOP 指令之前,必须先执行一条 CLRWDT 指令,来确
保将 WDT 清零。
www.mcu.com.cn
-28-
V1.1
Cmsemicon
5.4
CMS89F552x
休眠模式应用举例
系统在进入休眠模式之前,若用户需要获得较小的休眠电流,请先确认所有 I/O 的状态,若用户方案中存
在悬空的 I/O 口,把所有悬空口都设置为输出口,确保每一个 I/O 都有一个固定的状态,以避免 I/O 为输入状
态时,口线电平处于不定态而增大休眠电流;关断 AD 等其它外设模块;根据实际方案的功能需求可禁止 WDT
功能来减小休眠电流。
例:进入休眠的处理程序
SLEEP_MODE:
;关断中断使能
CLR
INTCON
LDIA
B’00000000’
LD
TRISA,A
LD
TRISB,A
LD
TRISC,A
LD
TRISE,A
;所有 I/O 设置为输出口
…
5.5
;关闭其它功能
LDIA
0A5H
LD
SP_FLAG,A
;置休眠状态记忆寄存器(用户自定义)
CLRWDT
;清零 WDT
STOP
;执行 STOP 指令
休眠模式唤醒时间
当 MCU 从休眠态被唤醒时,需要等待一个振荡稳定时间(Reset Time)
,这个时间在内部高速振荡模式下
为 1024 个 TSYS 时钟周期,在内部低速振荡模式下为 8 个 TSYS 时钟周期。具体关系如下表所示。
系统主频时钟源
内部高速 RC 振荡(FOSC)
内部低速 RC 振荡(FLFINTOSC)
www.mcu.com.cn
系统时钟分频选择(IRCF)
休眠唤醒等待时间 TWAIT
FSYS=FOSC
TWAIT=1024*1/FOSC
FSYS= FOSC /2
TWAIT=1024*2/FOSC
…
…
FSYS= FOSC /64
TWAIT=1024*64/FOSC
----
TWAIT=8/FLFINTOSC
-29-
V1.1
Cmsemicon
CMS89F552x
6. I/O 端口
芯片有两个 I/O 端口:PORTA、PORTB(最多 14 个 I/O)。可读写端口数据寄存器可直接存取这些端口。
端口
PROTA
PORTB
位
管脚描述
I/O
0
1
施密特触发输入,推挽式输出,AN0,PWM 输出,外部中断输入,运放 0 输出
I/O
施密特触发输入,推挽式输出,AN1,PWM 输出,运放 0 正端输入
I/O
2
施密特触发输入,推挽式输出,AN2,PWM 输出,运放 0 负端输入
I/O
3
施密特触发输入,推挽式输出,AN3,PWM 输出,运放 1 输出
I/O
4
施密特触发输入,推挽式输出,AN4,PWM 输出,运放 1 正端输入
I/O
5
施密特触发输入,推挽式输出,AN5,PWM 输出,运放 1 负端输入
I/O
0
施密特触发输入,推挽式输出,AN13,编程数据输入/输出,振荡输入口,PWM 输出
I/O
1
施密特触发输入,推挽式输出,AN12,编程时钟输入,振荡输出口,PWM 输出
I/O
2
施密特触发输入,推挽式输出,AN11,PWM 输出
I/O
3
施密特触发输入,推挽式输出,AN10,PWM 输出,TMR0 外部计数时钟输入
I/O
4
施密特触发输入,推挽式输出,AN9,PWM 输出
I/O
5
施密特触发输入,推挽式输出,AN8,PWM 输出
I/O
6
施密特触发输入,推挽式输出,AN7,PWM 输出
I/O
7
施密特触发输入,推挽式输出,AN6,PWM 输出
I/O
<表 6-1:端口配置总概>
www.mcu.com.cn
-30-
V1.1
Cmsemicon
6.1
CMS89F552x
I/O 口结构图
数据总线
写
WPUA
D
Q
VDD
弱上拉
CK Q
读
WPUA
D
写
PORTA
Q
VDD
CK Q
I/O引脚
D
写
TRISA
Q
VSS
CK Q
读
TRISA
读
PORTA
到A/D转换器
到OPA
图 6-1:I/O 口结构图(1)
www.mcu.com.cn
-31-
V1.1
Cmsemicon
数据总线
写
WPUB
CMS89F552x
D
Q
CK
模拟(1)
输入模式
VDD
弱上拉
Q
RBPU
读
WPUB
D
写
PORTB
Q
VDD
CK
Q
I/O引脚
D
写
TRISB
Q
CK
VSS
Q
模拟(1)
输入模式
读
TRISB
读
PORTB
D
写
IOCB
D
Q
CK
Q
EN
Q
D
读
IOCB
Q3
Q
EN
电平变化中断
读PORTB
D
写
WPUD
Q
CK
Q
到A/D转换器
图 6-2:I/O 口结构图(2)
www.mcu.com.cn
-32-
V1.1
Cmsemicon
6.2
CMS89F552x
PORTA
6.2.1 PORTA 数据及方向控制
PORTA 是 6Bit 宽的双向端口。它所对应的数据方向寄存器是 TRISA。将 TRISA 的一个位置 1(=1)可以
将相应的引脚配置为输入。清零 TRISA 的一个位(= 0)可将相应的 PORTA 引脚配置为输出。
读 PORTA 寄存器读的是引脚的状态而写该寄存器将会写入端口锁存器。所有写操作都是读-修改-写操
作。因此,写一个端口就意味着先读该端口的引脚电平,修改读到的值,然后再将改好的值写入端口数据锁存
器。即使在 PORTA 引脚用作模拟输入时,TRISA 寄存器仍然控制 PORTA 引脚的方向。当将 PORTA 引脚用
作模拟输入时,用户必须确保 TRISA 寄存器中的位保持为置 1 状态。配置为模拟输入的 I/O 引脚总是读为 0。
与 PORTA 口相关寄存器有 PORTA、TRISA、WPUA 等。
PORTA 数据寄存器 PORTA (05H)
05H
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
PORTA
----
----
RA5
RA4
RA3
RA2
RA1
RA0
R/W
----
----
R/W
R/W
R/W
R/W
R/W
R/W
复位值
----
----
X
X
X
X
X
X
未用。
Bit7~Bit6
Bit5~Bit0
PORTA:
PORTAI/O 引脚位;
1=
端口引脚电平>VIH;
0=
端口引脚电平VIH。
0=
端口引脚电平
很抱歉,暂时无法提供与“CMS89F5521”相匹配的价格&库存,您可以联系我们找货
免费人工找货