Cmsemicon
CMS89FT6xx
CMS89FT6xx
用户手册
增强型闪存 8 位
CMOS 单片机
V1.7
请注意以下有关CMS知识产权政策
*中微半导体公司已申请了专利,享有绝对的合法权益。与中微半导体公司MCU或其他产品有关的专利权并未
被同意授权使用,任何经由不当手段侵害中微半导体公司专利权的公司、组织或个人,中微半导体公司将采取
一切可能的法律行动,遏止侵权者不当的侵权行为,并追讨中微半导体公司因侵权行为所受的损失、或侵权者
所得的不法利益。
*中微的名称和标识都是中微半导体公司的注册商标。
*中微半导体公司保留对规格书中产品在可靠性、功能和设计方面的改进作进一步说明的权利。然而中微半导
体公司对于规格内容的使用不负责任。文中提到的应用其目的仅仅是用来做说明,中微半导体公司不保证和不
表示这些应用没有更深入的修改就能适用,也不推荐它的产品使用在会由于故障或其它原因可能会对人身造成
危害的地方。中微半导体公司产品不授权适用于救生、维生器件或系统中作为关键器件。中微半导体公司拥有
不事先通知而修改产品的权利,对于最新的信息,请参考我们的网站http://www.mcu.com.cn
www.mcu.com.cn
-1-
V1.7
Cmsemicon
CMS89FT6xx
目录
CMS89FT6XX .............................................................................................................................. 1
1. 产品概述 ................................................................................................................................ 1
1.1
功能特性 ........................................................................................................................................................................ 1
1.2
系统结构框图 ................................................................................................................................................................. 2
1.3
管脚分布 ........................................................................................................................................................................ 3
1.3.1
CMS89FT623 引脚图 .................................................................................................................................................3
1.3.2
CMS89FT6231 引脚图 ...............................................................................................................................................4
1.3.3
CMS89FT626 引脚图 .................................................................................................................................................5
1.3.4
CMS89FT627 引脚图 .................................................................................................................................................6
1.3.5
CMS89FT628 引脚图 .................................................................................................................................................7
1.4
系统配置寄存器 ............................................................................................................................................................. 8
1.5
在线串行编程 ................................................................................................................................................................. 9
2. 中央处理器(CPU) ............................................................................................................ 10
2.1
内存 ............................................................................................................................................................................. 10
2.1.1
程序内存 ...................................................................................................................................................................10
2.1.2
数据存储器 ...............................................................................................................................................................15
2.2
寻址方式 ...................................................................................................................................................................... 20
2.2.1
直接寻址 ...................................................................................................................................................................20
2.2.2
立即寻址 ...................................................................................................................................................................20
2.2.3
间接寻址 ...................................................................................................................................................................20
2.3
堆栈 ............................................................................................................................................................................. 21
2.4
工作寄存器(ACC).................................................................................................................................................... 22
2.4.1
概述 ..........................................................................................................................................................................22
2.4.2
ACC 应用 .................................................................................................................................................................22
2.5
程序状态寄存器(STATUS) ...................................................................................................................................... 23
2.6
预分频器(OPTION_REG) ....................................................................................................................................... 25
2.7
程序计数器(PC) ...................................................................................................................................................... 27
2.8
看门狗计数器(WDT) ............................................................................................................................................... 28
2.8.1
WDT 周期 .................................................................................................................................................................28
2.8.2
看门狗定时器控制寄存器 WDTCON .........................................................................................................................28
3. 系统时钟 .............................................................................................................................. 29
3.1
概述 ............................................................................................................................................................................. 29
3.2
系统振荡器 .................................................................................................................................................................. 30
3.2.1
内部 RC 振荡 ............................................................................................................................................................30
3.3
起振时间 ...................................................................................................................................................................... 30
3.4
振荡器控制寄存器........................................................................................................................................................ 31
4. 复位 ..................................................................................................................................... 32
www.mcu.com.cn
-2-
V1.7
Cmsemicon
CMS89FT6xx
4.1
上电复位 ...................................................................................................................................................................... 32
4.2
掉电复位 ...................................................................................................................................................................... 33
4.2.1
概述 ..........................................................................................................................................................................33
4.2.2
掉电复位的改进办法 .................................................................................................................................................34
4.3
看门狗复位 .................................................................................................................................................................. 34
5. 休眠模式 .............................................................................................................................. 35
5.1
进入休眠模式 ............................................................................................................................................................... 35
5.2
从休眠状态唤醒 ........................................................................................................................................................... 35
5.3
使用中断唤醒 ............................................................................................................................................................... 35
5.4
休眠模式应用举例........................................................................................................................................................ 36
5.5
休眠模式唤醒时间........................................................................................................................................................ 36
6. I/O 端口 ................................................................................................................................ 37
6.1
I/O 口结构图 ................................................................................................................................................................ 38
6.2
PORTA ........................................................................................................................................................................ 39
6.2.1
PORTA 数据及方向控制 ...........................................................................................................................................39
6.2.2
PORTA 上拉电阻 ......................................................................................................................................................40
6.3
PORTB ........................................................................................................................................................................ 41
6.3.1
PORTB 数据及方向 ..................................................................................................................................................41
6.3.2
PORTB 上拉电阻......................................................................................................................................................42
6.4
PORTC ........................................................................................................................................................................ 43
6.4.1
PORTC 数据及方向 ..................................................................................................................................................43
6.4.2
PORTC 上拉电阻 .....................................................................................................................................................44
6.5
PORTD ........................................................................................................................................................................ 45
6.5.1
PORTD 数据及方向 ..................................................................................................................................................45
6.5.2
PORTD 上拉电阻 .....................................................................................................................................................46
6.6
I/O 使用 ....................................................................................................................................................................... 47
6.6.1
写 I/O 口 ...................................................................................................................................................................47
6.6.2
读 I/O 口 ...................................................................................................................................................................47
6.7
I/O 口使用注意事项 ..................................................................................................................................................... 48
7. 中断 ..................................................................................................................................... 49
7.1
中断概述 ...................................................................................................................................................................... 49
7.2
中断控制寄存器 ........................................................................................................................................................... 50
7.2.1
中断控制寄存器 ........................................................................................................................................................50
7.2.2
外设中断允许寄存器 .................................................................................................................................................51
7.2.3
外设中断请求寄存器 .................................................................................................................................................52
7.3
中断现场的保护方法 .................................................................................................................................................... 54
7.4
中断的优先级,及多中断嵌套 ...................................................................................................................................... 54
8. 定时计数器 TIMER0 ............................................................................................................. 55
8.1
定时计数器 TIMER0 概述 ............................................................................................................................................ 55
www.mcu.com.cn
-3-
V1.7
Cmsemicon
8.2
CMS89FT6xx
TIMER0 的工作原理 .................................................................................................................................................... 56
8.2.1
8 位定时器模式 ........................................................................................................................................................56
8.2.2
8 位计数器模式.........................................................................................................................................................56
8.2.3
软件可编程预分频器 .................................................................................................................................................56
8.2.4
在 TIMER0 和 WDT 模块间切换预分频器 .................................................................................................................57
8.2.5
TIMER0 中断 ............................................................................................................................................................57
8.3
与 TIMER0 相关寄存器 ................................................................................................................................................ 58
9. 定时计数器 TIMER2 ............................................................................................................. 59
9.1
TIMER2 概述 ............................................................................................................................................................... 59
9.2
TIMER2 的工作原理 .................................................................................................................................................... 60
9.3
TIMER2 相关的寄存器 ................................................................................................................................................. 61
10. 模数转换(ADC) ............................................................................................................... 62
10.1
ADC 概述..................................................................................................................................................................... 62
10.2
ADC 配置..................................................................................................................................................................... 63
10.2.1 端口配置 ...................................................................................................................................................................63
10.2.2 通道选择 ...................................................................................................................................................................63
10.2.3 ADC 参考电压 ..........................................................................................................................................................63
10.2.4 转换时钟 ...................................................................................................................................................................63
10.2.5 ADC 中断 .................................................................................................................................................................64
10.2.6 结果格式化 ...............................................................................................................................................................64
10.3
ADC 工作原理 ............................................................................................................................................................. 65
10.3.1 启动转换 ...................................................................................................................................................................65
10.3.2 完成转换 ...................................................................................................................................................................65
10.3.3 终止转换 ...................................................................................................................................................................65
10.3.4 ADC 在休眠模式下的工作原理 .................................................................................................................................65
10.3.5 A/D 转换步骤 ............................................................................................................................................................66
10.4
ADC 相关寄存器 .......................................................................................................................................................... 67
11. 主控同步串行端口(MSSP)模块 ....................................................................................... 70
11.1
主控 SSP(MSSP)模块概述 .......................................................................................................................................... 70
11.2
SPI 模式 ...................................................................................................................................................................... 70
11.2.2 SPI 相关寄存器 ........................................................................................................................................................71
11.2.3 SPI 工作原理 ............................................................................................................................................................73
11.2.4 使能 SPI I/O .............................................................................................................................................................74
11.2.5 主控模式 ...................................................................................................................................................................74
11.2.6 从动模式 ...................................................................................................................................................................75
11.2.7 从动选择同步............................................................................................................................................................76
11.2.8 休眠操作 ...................................................................................................................................................................78
11.2.9 复位的影响 ...............................................................................................................................................................78
11.3
2
I C 模块 ....................................................................................................................................................................... 79
www.mcu.com.cn
-4-
V1.7
Cmsemicon
CMS89FT6xx
11.3.1 相关寄存器说明 ........................................................................................................................................................80
11.3.2 主控模式 ...................................................................................................................................................................83
2
11.3.3 I C 主控模式支持 ......................................................................................................................................................84
11.3.4 波特率发生器............................................................................................................................................................86
2
11.3.5 I C 主控模式发送 ......................................................................................................................................................87
2
11.3.6 I C 主控模式接收 ......................................................................................................................................................88
2
11.3.7 I C 主控模式启动条件时序 .......................................................................................................................................90
2
11.3.8 I C 主控模式重复启动条件时序 ................................................................................................................................91
11.3.9 应答序列时序............................................................................................................................................................92
11.3.10 停止条件序列............................................................................................................................................................93
11.3.11 时钟仲裁 ...................................................................................................................................................................94
11.3.12 多主机模式 ...............................................................................................................................................................94
11.3.13 多主机通信、总线冲突与总线仲裁 ...........................................................................................................................95
11.3.14 从动模式 ...................................................................................................................................................................95
11.3.15 SSP 屏蔽寄存器 .......................................................................................................................................................98
11.3.16 休眠模式下的操作 ....................................................................................................................................................98
11.3.17 复位的影响 ...............................................................................................................................................................98
12. LCD/LED 驱动模块 .............................................................................................................. 99
12.1
LCD/LED 功能使能 ...................................................................................................................................................... 99
12.2
LCD/LED 功能管脚设置 ............................................................................................................................................... 99
12.3
LCD/LED 功能 COM 口设置 ...................................................................................................................................... 100
12.4
LCD/LED 功能的 SEG 口设置 ................................................................................................................................... 100
12.5
LCD/LED 功能的数据设置 ......................................................................................................................................... 101
12.6
LCD/LED 相关寄存器 ................................................................................................................................................ 102
13. 程序 EEPROM 控制 ........................................................................................................... 106
13.1
程序 EEPROM 概述................................................................................................................................................... 106
13.2
相关寄存器 ................................................................................................................................................................ 107
13.2.1 EEADR 寄存器 .......................................................................................................................................................107
13.2.2 EECON1 和 EECON2 寄存器.................................................................................................................................107
13.3
读程序 EEPROM ....................................................................................................................................................... 109
13.4
写程序 EEPROM ........................................................................................................................................................ 110
13.5
EPROM 操作注意事项 ................................................................................................................................................ 111
13.5.1 写校验 .................................................................................................................................................................... 111
13.5.2 避免误写的保护 ...................................................................................................................................................... 111
14. 触摸按键功能 ..................................................................................................................... 112
14.1
触摸按键结构 .............................................................................................................................................................. 112
14.2
触摸按键寄存器描述 ................................................................................................................................................... 112
14.3
触摸按键操作 .............................................................................................................................................................. 118
14.4
触摸按键中断 ............................................................................................................................................................. 120
www.mcu.com.cn
-5-
V1.7
Cmsemicon
CMS89FT6xx
15. 电气参数 ............................................................................................................................ 121
15.1
DC 特性 ..................................................................................................................................................................... 121
15.2
AC 特性 ..................................................................................................................................................................... 121
15.3
内部 RC 振荡特性 ...................................................................................................................................................... 122
15.3.1 内部 RC 振荡电压特性 ...........................................................................................................................................122
15.3.2 内部 RC 振荡温度特性 ...........................................................................................................................................122
16. 指令 ................................................................................................................................... 123
16.1
指令一览表 ................................................................................................................................................................ 123
16.2
指令说明 .................................................................................................................................................................... 125
17. 封装 ................................................................................................................................... 141
17.1
SOP 16 ...................................................................................................................................................................... 141
17.2
SOP 20 ...................................................................................................................................................................... 143
17.3
SOP24 ....................................................................................................................................................................... 144
17.4
SKY24 ....................................................................................................................................................................... 145
17.5
SOP28 ....................................................................................................................................................................... 146
18. 版本修订说明 ..................................................................................................................... 147
www.mcu.com.cn
-6-
V1.7
Cmsemicon
CMS89FT6xx
1. 产品概述
1.1
功能特性
◆
◆
工作电压范围:3.0V~5.5V @ 8MHz
2.5V~5.5V @ 4MHz
工作温度范围:-40℃~85℃
◆
内存
Flash:4K×16
通用 RAM:344×8
8 级堆栈缓存器
◆
◆
简洁实用的指令系统(68 条指令)
◆
一种振荡方式
内部 RC 振荡:设计频率 8MHz
指令周期(单指令或双指令)
◆
高精度 12 位 ADC
◆
内置 WDT 定时器
◆
内置低压侦测电路
◆
MSSP 通信模块(SPI/I2C)
◆
◆
定时器
8 位定时器 TIMER0,TIMER2
◆
中断源
2 个定时中断
其它外设中断
内置 32×16 程序 EEPROM
◆
内置触摸按键模块
◆
查表功能
◆
内置 LED/LCD 驱动模块
型号说明:
PRODUCT
Flash
RAM
PRO EE
LED
LCD
I/O
ADC
Touch
PACKAGE
CMS89FT623
4K×16
344×8
32×16
----
----
14
12Bit×2
6
SOP16
CMS89FT6231
4K×16
344×8
32×16
----
----
14
12Bit×3
8
SOP16
CMS89FT626
4K×16
344×8
32×16
7×3
15×3
18
12Bit×4
8
SOP20
CMS89FT627
4K×16
344×8
32×16
7×7
15×7
22
12Bit×8
8
SKY24/SOP24
CMS89FT628
4K×16
344×8
32×16
11×7
19×7
26
12Bit×8
12
SOP28
www.mcu.com.cn
-1-
V1.7
Cmsemicon
1.2
CMS89FT6xx
系统结构框图
4096×16
Program Memory
344×8
Data Memory
PC
AD Converter
Stack1
TIMER0
..
Addr Mux
TIMER2
Stack8
Fsr Reg
Instruction Reg
TOUCH KEY
I/O PORT
MSSP
Instruction Decode
and Control
ACC
Mux
Device Reset Timer
EEPROM
LED/LCD
Power-on Reset
ALU
Timing Generation
Watch Dog Timer
OSC
VDD,GND
www.mcu.com.cn
-2-
V1.7
Cmsemicon
1.3
CMS89FT6xx
管脚分布
1.3.1 CMS89FT623 引脚图
KEY1/RB0
1
16
RA0/SDI/SDA/ICSPDAT
KEY2/RB1
2
15
RA1/SDO
KEY3/RB2
3
14
RA2/SCK/SCL/ICSPCLK
KEY4/RB3
4
13
RA3/SS
KEY5/RB4
5
12
RA4/INT
KEY6/RB5
6
11
RA7/T0CKI
GND
7
10
RD1/AN1
VDD
8
9
RD0/AN0
CMS89FT623
CMS89FT623 引脚说明:
管脚名称
IO 类型
管脚说明
VDD,GND
P
电源电压输入脚,接地脚
RA0-RA4,RA7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RB0-RB5
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RD0,RD1
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
ICSPCLK/ICSPDAT
I
编程时钟输入脚
AN0,AN1
I
12 位 ADC 输入脚
KEY1-KEY6
O
触摸按键输入脚
SCK
I/O
SPI 时钟
SDI
I
SPI 数据输入
SDO
O
SPI 数据输出
SS
I
SPI 从动选择
SCL
I/O
I C 时钟
SDA
I/O
I C 数据输入/输出
INT
I
外部中断输入脚
T0CKI
I
TIMER0 外部时钟输入脚
www.mcu.com.cn
2
2
-3-
V1.7
Cmsemicon
CMS89FT6xx
1.3.2 CMS89FT6231 引脚图
KEY1/RB0
1
16
RA0/ICSPDAT
KEY2/RB1
2
15
RA2/ICSPCLK
KEY3/RB2
3
14
RA7/T0CKI
KEY4/RB3
4
13
RD6/AN6
KEY5/RB4
5
12
RD5/AN5
KEY6/RB5
6
11
RD0/AN0
KEY7/RB6
7
10
VDD
KEY8/RB7
8
9
GND
CMS89FT6231
CMS89FT6231 引脚说明:
管脚名称
IO 类型
管脚说明
VDD, GND
P
电源电压输入脚,接地脚
RA0, RA2, RA7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RB0-RB7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RD0, RD5, RD6
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
ICSPCLK/ICSPDAT
I
编程时钟输入脚
AN0, AN5, AN6
I
12 位 ADC 输入脚
KEY1-KEY8
O
触摸按键输入脚
www.mcu.com.cn
-4-
V1.7
Cmsemicon
CMS89FT6xx
1.3.3 CMS89FT626 引脚图
SEG11/KEY1/RB0
1
20
RA0/SDI/SDA/ICSPDAT/SEG0
SEG12/KEY2/RB1
2
19
RA1/SDO/SEG1
SEG13/KEY3/RB2
3
18
RA2/SCK/SCL/ICSPCLK/SEG2
SEG14/KEY4/RB3
4
17
RA3/SS/SEG3
SEG15/KEY5/RB4
5
16
RA4/INT/SEG4
SEG16/KEY6/RB5
6
15
RA7/T0CKI/SEG5
SEG17/KEY7/RB6
7
14
RD7/AN7/SEG6
SEG18/KEY8/RB7
8
13
RD6/AN6/COM6
GND
9
12
RD1/AN1/COM1
VDD
10
11
RD0/AN0/COM0
CMS89FT626
CMS89FT626 引脚说明:
管脚名称
IO 类型
管脚说明
VDD,GND
P
电源电压输入脚,接地脚
RA0-RA4,RA7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RB0-RB7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RD0,RD1,RD6,RD7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
ICSPCLK/ICSPDAT
I
编程时钟输入脚
AN0,AN1,AN6,AN7
I
12 位 ADC 输入脚
KEY1-KEY8
O
触摸按键输入脚
COM0,COM1,COM6
O
LED/LCD COM 口
SEG0-SEG6
O
LED/LCD SEG 口
SEG11-SEG18
O
LCD SEG 口
SCK
I/O
SPI 时钟
SDI
I
SPI 数据输入
SDO
O
SPI 数据输出
SS
I
SPI 从动选择
SCL
I/O
I C 时钟
SDA
I/O
I C 数据输入/输出
INT
I
外部中断输入脚
T0CKI
I
TIMER0 外部时钟输入脚
www.mcu.com.cn
2
2
-5-
V1.7
Cmsemicon
CMS89FT6xx
1.3.4 CMS89FT627 引脚图
SEG11/KEY1/RB0
1
24
RA0/SDI/SDA/ICSPDAT/SEG0
SEG12/KEY2/RB1
2
23
RA1/SDO/SEG1
SEG13/KEY3/RB2
3
22
RA2/SCK/SCL/ICSPCLK/SEG2
SEG14/KEY4/RB3
4
21
RA3/SS/SEG3
SEG15/KEY5/RB4
5
20
RA4/INT/SEG4
SEG16/KEY6/RB5
6
19
RA7/T0CKI/SEG5
SEG17/KEY7/RB6
7
18
RD7/AN7/SEG6
SEG18/KEY8/RB7
8
17
RD6/AN6/COM6
GND
9
16
RD5/AN5/COM5
VDD
10
15
RD4/AN4/COM4
COM0/AN0/RD0
11
14
RD3/AN3/COM3
COM1/AN1/RD1
12
13
RD2/AN2/COM2
CMS89FT627
CMS89FT627 引脚说明:
管脚名称
IO 类型
管脚说明
VDD,GND
P
电源电压输入脚,接地脚
RA0-RA4,RA7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RB0-RB7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RD0-RD7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
ICSPCLK/ICSPDAT
I
编程时钟输入脚
AN2-AN7
I
12 位 ADC 输入脚
KEY1-KEY8
O
触摸按键输入脚
COM0-COM6
O
LED/LCD COM 口
SEG0-SEG6
O
LED/LCD SEG 口
SEG11-SEG18
O
LCD SEG 口
SCK
I/O
SPI 时钟
SDI
I
SPI 数据输入
SDO
O
SPI 数据输出
SS
I
SPI 从动选择
SCL
I/O
I C 时钟
SDA
I/O
I C 数据输入/输出
INT
I
外部中断输入脚
T0CKI
I
TIMER0 外部时钟输入脚
www.mcu.com.cn
2
2
-6-
V1.7
Cmsemicon
CMS89FT6xx
1.3.5 CMS89FT628 引脚图
SEG11/KEY1/RB0
1
28
RA0/SDI/SDA/ICSPDAT/SEG0
SEG12/KEY2/RB1
2
27
RA1/SDO/SEG1
SEG13/KEY3/RB2
3
26
RA2/SCK/SCL/ICSPCLK/SEG2
SEG14/KEY4/RB3
4
25
RA3/SS/SEG3
SEG15/KEY5/RB4
5
24
RA4/INT/SEG4
SEG16/KEY6/RB5
6
23
RA7/T0CKI/SEG5
SEG17/KEY7/RB6
7
22
RD7/AN7/SEG6
SEG18/KEY8/RB7
8
21
RD6/AN6/COM6
SEG7/KEY9/RC0
9
20
RD5/AN5/COM5
SEG8/KEY10/RC1
10
19
RD4/AN4/COM4
SEG9/KEY11/RC2
11
18
RD3/AN3/COM3
SEG10/KEY12/RC3
12
17
RD2/AN2/COM2
GND
13
16
RD1/AN1/COM1
VDD
14
15
RD0/AN0/COM0
CMS89FT628
CMS89FT628 引脚说明:
管脚名称
IO 类型
管脚说明
VDD,GND
P
电源电压输入脚,接地脚
RA0-RA4,RA7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RB0-RB7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RC0-RC3
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
RD0-RD7
I/O
可编程为输入脚,推挽输出脚,带上拉电阻功能
ICSPCLK/ICSPDAT
I
编程时钟输入脚
AN0-AN7
I
12 位 ADC 输入脚
KEY1-KEY12
O
触摸按键输入脚
COM0-COM6
O
LED/LCD COM 口
SEG0-SEG10
O
LED/LCD SEG 口
SEG11-SEG18
O
LCD SEG 口
SCK
I/O
SPI 时钟
SDI
I
SPI 数据输入
SDO
O
SPI 数据输出
SS
I
SPI 从动选择
SCL
I/O
I C 时钟
SDA
I/O
I C 数据输入/输出
INT
I
外部中断输入脚
T0CKI
I
TIMER0 外部时钟输入脚
www.mcu.com.cn
2
2
-7-
V1.7
Cmsemicon
1.4
CMS89FT6xx
系统配置寄存器
系统配置寄存器(CONFIG)是 MCU 初始条件的 FLASH 选项。它只能被 CMS 烧写器烧写,用户不能通
过程序访问及操作。它包含了以下内容:
1.
2.
3.
4.
WDT(看门狗选择)
◆ ENABLE
打开看门狗定时器
◆
关闭看门狗定时器
DISABLE
PROTECT(加密)
◆
DISABLE
Flash 代码不加密
◆
ENABLE
Flash 代码加密,加密后烧写/仿真器读出来的值将不确定
EE_PROTECT(加密)
◆
DISABLE
程序 EEPROM 代码不加密
◆
ENABLE
程序 EEPROM 代码加密,加密后烧写/仿真器读出来的值将不确定
LVR_SEL(低压侦测电压选择)
◆
2.5V
◆
3.0V
www.mcu.com.cn
-8-
V1.7
Cmsemicon
1.5
CMS89FT6xx
在线串行编程
可在最终应用电路中对单片机进行串行编程。编程可以简单地通过以下 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
-9-
V1.7
Cmsemicon
CMS89FT6xx
2. 中央处理器(CPU)
2.1
内存
2.1.1 程序内存
FLASH:4K
0000H
复位向量
程序开始,跳转至用户程序
中断向量
中断入口,用户中断程序
0001H
0002H
0003H
0004H
...
用户程序区
...
...
0FFDH
0FFEH
0FFFH
2.1.1.1
跳转至复位向量0000H
程序结束
复位向量(0000H)
单片机具有一个字长的系统复位向量(0000H)
。具有以下三种复位方式:
上电复位
看门狗复位
低压复位(LVR)
发生上述任一种复位后,
程序将从 0000H 处重新开始执行,
系统寄存器也都将恢复为默认值。根据 STATUS
寄存器中的 PD 和 TO 标志位的内容可以判断系统复位方式。下面一段程序演示了如何定义 FLASH 中的复位
向量。
例:定义复位向量
ORG
JP
ORG
0000H
START
0010H
;系统复位向量
;用户程序起始
START:
…
…
END
www.mcu.com.cn
;用户程序
;程序结束
-10-
V1.7
Cmsemicon
2.1.1.2
CMS89FT6xx
中断向量
中断向量地址为 0004H。一旦有中断响应,程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 0004H
开始执行中断服务程序。所有中断都会进入 0004H 这个中断向量,具体执行哪个中断将由用户根据中断请求
标志位寄存器的位决定。下面的示例程序说明了如何编写中断服务程序。
例:定义中断向量,中断程序放在用户程序之后
ORG
JP
ORG
0000H
START
0004H
;系统复位向量
CALL
…
…
PUSH
;保存 ACC 跟 STATUS
;用户中断程序
CALL
RETI
POP
;返回 ACC 跟 STATUS
;中断返回
;用户程序起始
INT_START:
INT_BACK:
START:
…
…
;用户程序
END
;程序结束
注:由于单片机并未提供专门的出栈、压栈指令,故用户需自己保护中断现场。
例:中断入口保护现场
PUSH:
LD
ACC_BAK,A
;保存 ACC 至自定义寄存器 ACC_BAK
SWAPA
STATUS
;状态寄存器 STATUS 高低半字节互换
LD
STATUS_BAK,A
;保存至自定义寄存器 STATUS_BAK
SWAPA
STATUS_BAK
;将保存至 STATUS_BAK 的数据高低半字节互换给 ACC
LD
STATUS,A
;将 ACC 的值给状态寄存器 STATUS
SWAPR
ACC_BAK
;将保存至 ACC_BAK 的数据高低半字节互换
SWAPA
ACC_BAK
;将保存至 ACC_BAK 的数据高低半字节互换给 ACC
例:中断出口恢复现场
POP:
www.mcu.com.cn
-11-
V1.7
Cmsemicon
2.1.1.3
CMS89FT6xx
查表
芯片具有查表功能,FLASH 空间的任何地址都可做为查表使用。
相关指令:
相关指令:
TABLE [R]
把表格内容的低字节送给寄存器 R,高字节送到寄存器 TABLE_DATAH。
TABLEA
把表格内容的低字节送给累加器 ACC,高字节送到寄存器 TABLE_DATAH。
相关寄存器:
TABLE_SPH(110H)
可读写寄存器,用来指明表格高 4 位地址。
TABLE_SPL(111H)
可读写寄存器,用来指明表格低 8 位地址。
TABLE_DATAH(112H)
只读寄存器,存放表格高字节内容。
注:在查表之前要先把表格地址写入 TABLE_SPH 和 TABLE_SPL 中。如果主程序和中断服务程序都
用到查表指令,主程序中的 TABLE_SPH 的值可能会因为中断中执行的查表指令而发生变化,产
生错误。也就是说要避免在主程序和中断服务程序中都使用查表指令。但如果必须这样做的话,
我们可以在查表指令前先将中断禁止,在查表结束后再开放中断,以避免发生错误。
提供表格高 4 位地址给 TABLE_SPH
提供表格低 8 位地址给 TABLE_SPL
表格 12 位地址(TABLE_SPH+TABLE_SPL)
调表格指令(TABLEA 或 TABLE [R])
高 8 位数据给 TABLE_DATAH
低 8 位数据给 ACC(TABLEA)或 R(TABLE
[R])
:
图2-1:表格调用的流程图
www.mcu.com.cn
-12-
V1.7
Cmsemicon
CMS89FT6xx
下面例子给出了如何在程序中调用表格。
…
;上接用户程序
;表格低位地址
LDIA
02H
LD
TABLE_SPL,A
LDIA
06H
LD
TABLE_SPH,A
TABLE
R01
;表格指令,将表格低 8 位(56H)给自定义寄存器 R01
LD
A,TABLE_DATAH
;将查表结果的高 8 位(34H)给累加器 ACC
LD
R02,A
;将 ACC 值(34H)给自定义寄存器 R02
;表格高位地址
…
www.mcu.com.cn
;用户程序
ORG
0600H
;表格起始地址
DW
1234H
;0600H 地址表格内容
DW
2345H
;0601H 地址表格内容
DW
3456H
;0602H 地址表格内容
DW
0000H
;0603H 地址表格内容
-13-
V1.7
Cmsemicon
2.1.1.4
CMS89FT6xx
跳转表
跳转表能够实现多地址跳转功能。由于 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
-14-
V1.7
Cmsemicon
CMS89FT6xx
2.1.2 数据存储器
CMS89FT6xx 数据存储器列表
地址
地址
地址
地址
INDF
00h
INDF
80h
INDF
100h
INDF
180h
TMR0
01h
OPTION_REG
81h
TMR0
101h
OPTION_REG
181h
PCL
02h
PCL
82h
PCL
102h
PCL
182h
STATUS
03h
STATUS
83h
STATUS
103h
STATUS
183h
FSR
04h
FSR
84h
FSR
104h
FSR
184h
PORTA
05h
TRISA
85h
WDTCON
105h
----
185h
PORTB
06h
TRISB
86h
PORTB
106h
TRISB
186h
PORTC
07h
TRISC
87h
WPUB
107h
----
187h
PORTD
08h
TRISD
88h
WPUA
108h
----
188h
WPUC
09h
WPUD
89h
----
109h
----
189h
PCLATH
0Ah
PCLATH
8Ah
PCLATH
10Ah
PCLATH
18Ah
INTCON
0Bh
INTCON
8Bh
INTCON
10Bh
INTCON
18Bh
PIR1
0Ch
PIE1
8Ch
EEDATA
10Ch
EECON1
18Ch
PIR2
0Dh
PIE2
8Dh
EEADR
10Dh
EECON2
18Dh
----
0Eh
----
8Eh
EEDATH
10Eh
TKM216DL
18Eh
----
0Fh
OSCCON
8Fh
----
10Fh
TKM216DH
18Fh
----
10h
OSCTUNE
90h
TABLE_SPH
110h
TKM2ROL
190h
TMR2
11h
SSPCON2
91h
TABLE_SPL
111h
TKM2ROH
191h
T2CON
12h
PR2
92h
TABLE_DATAH
112h
TKM2C1
192h
TKM016DL
13h
SSPADD
93h
TK16DL
113h
TKM2C0
193h
TKM016DH
14h
SSPSTAT
94h
TK16DH
114h
----
194h
TKM0ROL
15h
SSPCON
95h
TKTMR
115h
----
195h
TKM0ROH
16h
SSPBUF
96h
TKC0
116h
----
196h
TKM0C1
17h
----
97h
TKC1
117h
----
197h
TKM0C0
18h
TKM116DL
98h
LCDCON0
118h
----
19h
TKM116DH
99h
LCDCON1
119h
199h
----
1Ah
TKM1ROL
9Ah
LCDADD
11Ah
19Ah
----
1Bh
TKM1ROH
9Bh
LCDDATA
11Bh
19Bh
----
1Ch
TKM1C1
9Ch
SEGEN2
11Ch
19Ch
----
1Dh
TKM1C0
9Dh
SEGEN1
11Dh
19Dh
ADRESH
1Eh
ADRESL
9Eh
SEGEN0
11Eh
ADCON0
1Fh
ADCON1
9Fh
COMEN
11Fh
20h
A0h
通用寄存器
80 字节
198h
通用寄存器
88 字节
19Eh
19Fh
120h
1A0h
16Fh
1EFh
通用寄存器
88 字节
通用寄存器
96 字节
6Fh
70h
-7Fh
BANK0
www.mcu.com.cn
EFh
快速存储区
70h-7Fh
F0h
-FFh
BANK1
快速存储区
70h-7Fh
BANK2
-15-
170h
-17Fh
快速存储区
70h-7Fh
1F0h
-1FFh
BANK3
V1.7
Cmsemicon
CMS89FT6xx
数据存储器由 344×8 位组成,分为两个功能区间:特殊功能寄存器和通用数据存储器。数据存储器单元
大多数是可读/写的,但有些只读的。特殊功能寄存器地址为从 00H-1FH,80-9FH,100-117H,180-197H。
CMS89FT6xx 特殊功能寄存器汇总 Bank0
地址
名称
00h
INDF
寻址该单元会使用FSR 的内容寻址数据存储器(不是物理寄存器)
xxxx xxxx
01h
TMR0
TIMER0数据寄存器
xxxxxxxx
02h
PCL
程序计数器低字节
03h
STATUS
04h
FSR
05h
PORTA
RA7
06h
PORTB
RB7
07h
PORTC
----
----
08h
PORTD
RD7
RD6
09h
WPUC
----
----
----
0Ah
PCLATH
----
---
----
----
0Bh
INTCON
GIE
PEIE
T0IE
INTE
----
0Ch
PIR1
----
ADIF
TKIF
----
0Dh
PIR2
----
----
----
EEIF
11h
TMR2
12h
T2CON
13h
TKM016DL
触摸按键模块0 16位计数器低字节内容
0000 0000
14h
TKM016DH
触摸按键模块0 16位计数器高字节内容
0000 0000
15h
TKM0ROL
触摸按键模块0 内建电容低8位选择
0000 0000
16h
TKM0ROH
触摸按键模块0 内建电容高2位选择
------00
17h
TKM0C1
M0TSS
----
M0ROEN
M0KOEN
M0K4IO
M0K3IO
M0K2IO
M0K1IO
0-00 0000
18h
TKM0C0
M0MXS1
M0MXS0
M0DFEN
M0FILEN
M0SOFC
M0SOF2
M0SOF1
M0SOF0
0000 0000
1Eh
ADRESH
1Fh
ADCON0
www.mcu.com.cn
Bit7
IRP
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
0000 0000
RP1
RP0
TO
PD
Z
DC
C
----
----
RA4
RA3
RA2
RA1
RA0
xxxx xxxx
RB6
RB5
RB4
RB3
RB2
RB1
RB0
xxxx xxxx
----
----
RC3
RC2
RC1
RC0
---- xxxx
RD5
RD4
RD3
RD2
RD1
RD0
xxxx xxxx
----
WPUC3
WPUC2
WPUC1
WPUC0
---- 0000
T0IF
INTF
----
0000 -00-
----
BCLIF
TMR2IF
----
-00--00-
----
----
----
SSPIF
---0---0
间接数据存储器地址指针
TOUTPS3
程序计数器高4位的写缓冲器
---- 0000
0000 0000
TOUTPS2
TOUTPS1
TOUTPS0
TMR2ON
T2CKPS1
T2CKPS0
A/D结果寄存器的高字节
ADCS1
ADCS0
0001 1xxx
xxxx xxxx
TIMER2模块寄存器
----
复位值
-000 0000
xxxx xxxx
CHS3
CHS2
-16-
CHS1
CHS0
GO/ DONE
ADON
0000 0000
V1.7
Cmsemicon
CMS89FT6xx
CMS89FT6xx 特殊功能寄存器汇总 Bank1
地址
名称
80h
INDF
81h
OPTION_REG
82h
PCL
83h
STATUS
84h
FSR
85h
TRISA
TRISA7
86h
TRISB
87h
TRISC
88h
TRISD
TRISD7
TRISD6
TRISD5
TRISD4
TRISD3
TRISD2
89h
WPUD
WPUD7
WPUD6
WPUD5
WPUD4
WPUD3
WPUD2
8Ah
PCLATH
----
----
----
----
8Bh
INTCON
GIE
PEIE
T0IE
INTE
----
T0IF
INTF
----
0000 -00-
8Ch
PIE1
----
ADIE
TKIE
----
----
BCLIE
TMR2IE
----
-00--00-
8Dh
PIE2
----
----
----
EEIE
----
----
----
SSPIE
---0---0
8Fh
OSCCON
----
IRCF2
IRCF1
IRCF0
----
----
----
SCS
-110 ---0
90h
OSCTUNE
----
----
----
TUN4
TUN3
TUN2
TUN1
TUN0
---0 0000
91H
SSPCON2
GCEN
ACKSTAT
ACKDT
ACKEN
RCEN
PEN
RSEN
SEN
0000 0000
92h
PR2
TIMER2周期寄存器
93H
SSPADD
同步串行端口(I
93H
SSPMSK
MSK7
MSK6
MSK5
MSK4
MSK3
MSK2
MSK1
MSK0
1111 1111
94H
SSPSTAT
SMP
CKE
D/A
P
S
R/W
UA
BF
0000 0000
95h
SSPCON
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
0000 0000
96h
SSPBUF
同步串行端口接收缓冲器/ 发送寄存器
xxxx xxxx
98h
TKM116DL
触摸按键模块1 16位计数器低字节内容
0000 0000
99h
TKM116DH
触摸按键模块1 16位计数器高字节内容
0000 0000
9Ah
TKM1ROL
触摸按键模块1 内建电容低8位选择
0000 0000
9Bh
TKM1ROH
触摸按键模块1 内建电容高2位选择
------00
9Ch
TKM1C1
M1TSS
----
M1ROEN
M1KOEN
M1K4IO
M1K3IO
M1K2IO
M1K1IO
0-00 0000
9Dh
TKM1C0
M1MXS1
M1MXS0
M1DFEN
M1FILEN
M1SOFC
M1SOF2
M1SOF1
M1SOF0
0000 0000
9Eh
ADRESL
9Fh
ADCON1
www.mcu.com.cn
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
PS2
PS1
PS0
寻址该地址单元会使用FSR的内容寻址数据存储器(不是物理寄存器)
----
INTEDG
T0CS
T0SE
PSA
xxxx xxxx
程序计数器(PC)的低字节
IRP
RP1
复位值
-111 1111
0000 0000
RP0
TO
PD
Z
DC
C
----
----
TRISA4
TRISA3
TRISA2
TRISA1
TRISA0
1--1 1111
TRISB7
TRISB6
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
1111 1111
----
----
----
----
TRISC3
TRISC2
TRISC1
TRISC0
---- 1111
TRISD1
TRISD0
1111 1111
WPUD1
WPUD0
0000 0000
间接数据存储器地址指针
2
xxxx xxxx
程序计数器高4位的写缓冲器
---- 0000
1111 1111
C模式)地址寄存器
0000 0000
A/D结果寄存器的低字节
ADFM
----
0001 1xxx
xxxx xxxx
----
----
-17-
----
----
----
----
0--- ----
V1.7
Cmsemicon
CMS89FT6xx
CMS89FT6xx 特殊功能寄存器汇总 Bank2
地址
名称
100h
INDF
寻址该地址单元会使用FSR的内容寻址数据存储器(不是物理寄存器)
xxxx xxxx
101h
TMR0
TIMER0模块寄存器
xxxx xxxx
102h
PCL
程序计数器(PC)的低字节
0000 0000
103h
STATUS
104h
FSR
105h
WDTCON
106h
PORTB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
xxxx xxxx
107h
WPUB
WPUB7
WPUB6
WPUB5
WPUB4
WPUB3
WPUB2
WPUB1
WPUB0
0000 0000
108h
WPUA
WPUA7
----
----
WPUA4
WPUA3
WPUA2
WPUA1
WPUA0
0--0 0000
10Ah
PCLATH
----
----
---
---
10Bh
INTCON
GIE
PEIE
T0IE
INTE
INTF
----
10CH
EEDATA
EEDAT7
EEDAT6
EEDAT5
EEDAT4
EEDAT3
EEDAT2
EEDAT1
EEDAT0
xxxxxxxx
10DH
EEADR
----
----
----
EEADR4
EEADR3
EEADR2
EEADR1
EEADR0
---0 0000
10EH
EEDATH
EEDATH7
EEDATH6
EEDATH5
EEDATH4
EEDATH3
EEDATH2
EEDATH1
EEDATH0
110h
TABLE_SPH
表格高位指针
---- xxxx
111h
TABLE_SPL
表格低位指针
xxxx xxxx
112h
TABLE_DATAH 表格高位数据
xxxx xxxx
113h
TK16DL
触摸按键模块16位计数器低字节内容
0000 0000
114h
TK16DH
触摸按键模块16位计数器高字节内容
0000 0000
115h
TKTMR
触摸按键8位定时/计数器寄存器
116h
TKC0
----
TKRCOV
TKST
TKCFOV
TK16OV
TSCS
TK16S1
TK16S0
-000 0000
117h
TKC1
----
----
----
----
----
----
TKFS1
TKFS0
---- --11
118h
LCDCON0
LCDEN
LEDEN
COMSEL[1:0]
LCDCLK[3:0]
00000000
119h
LCDCON1
VADJEN
----
SEGOUT[1:0]
VLCD[3:0]
00000000
11Ah
LCDADD
LCDCS
B2RES
11Bh
LCDDATA
LCDDATA[7:0]
11Ch
SEGEN2
SEGDRI[3:0]
11Dh
SEGEN1
SEG15EN
SEG14N
SEG13EN
11Eh
SEGEN0
SEG7EN
SEG6EN
SEG5EN
11Fh
COMEN
COM7EN
COM6EN
COM5EN
www.mcu.com.cn
Bit7
IRP
Bit6
RP1
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
RP0
TO
PD
Z
DC
C
----
----
----
----
----
SWDTEN
间接数据存储器地址指针
----
复位值
0001 1xxx
xxxx xxxx
----
程序计数器高4位的写缓冲器
----
T0IF
---- ---0
---- 0000
0000 -00-
0000 0000
0000 0000
COMEL[2]
LCDADD[4:0]
00000000
00000000
----
SEG18EN
SEG17EN
SEG16EN
0000-000
SEG12EN
SEG11EN
SEG10EN
SEG9EN
SEG8EN
00000000
SEG4EN
SEG3EN
SEG2EN
SEG1EN
SEG0EN
00000000
COM4EN
COM3EN
COM2EN
COM1EN
COM0EN
00000000
-18-
V1.7
Cmsemicon
CMS89FT6xx
CMS89FT6xx 特殊功能寄存器汇总 Bank3
地址
名称
180h
INDF
181h
OPTION_REG
182h
PCL
183h
STATUS
184h
FSR
186h
TRISB
18Ah
PCLATH
----
----
----
----
18Bh
INTCON
GIE
PEIE
T01E
INTE
----
18Ch
EECON1
EEPGD
----
----
----
WRERR
18Dh
EECON2
EEPROM控制寄存器2(不是物理寄存器)
---- ----
18EH
TKM216DL
触摸按键模块2 16位计数器低字节内容
0000 0000
18FH
TKM216DH
触摸按键模块2 16位计数器高字节内容
0000 0000
190h
TKM2ROL
触摸按键模块2 内建电容低8位选择
0000 0000
191h
TKM2ROH
触摸按键模块2 内建电容高2位选择
0000 0000
192h
TKM2C1
M2TSS
----
M2ROEN
M2KOEN
M2K4IO
M2K3IO
M2K2IO
M2K1IO
0-00 0000
193h
TKM2C0
M2MXS1
M2MXS0
M2DFEN
M2FILEN
M2SOFC
M2SOF2
M2SOF1
M2SOF0
0000 0000
www.mcu.com.cn
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
PS2
PS1
PS0
寻址该地址单元会使用FSR的内容寻址数据存储器(不是物理寄存器)
----
INTEDG
T0CS
T0SE
PSA
xxxx xxxx
程序计(PC)的低字节
IRP
RP1
TRISB6
-111 1111
0000 0000
RP0
TO
PD
Z
DC
C
TRISB5
TRISB4
TRISB3
TRISB2
TRISB1
TRISB0
T01F
INTF
----
0000 -00-
WREN
WR
RD
0--- x000
间接数据存储器地址指针
TRISB7
复位值
0001 1xxx
xxxx xxxx
-19-
程序计数器高4位的写缓冲器
1111 1111
---- 0000
V1.7
Cmsemicon
2.2
CMS89FT6xx
寻址方式
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
-20-
V1.7
Cmsemicon
2.3
CMS89FT6xx
堆栈
芯片的堆栈缓存器共 8 层,堆栈缓存器既不是数据存储器的一部分,也不是程序内存的一部分,且既不能
被读出,也不能被写入。对它的操作通过堆栈指针(SP)来实现,堆栈指针(SP)也不能读出或写入,当系
统复位后堆栈指针会指向堆栈顶部。当发生子程序调用及中断时的程序计数器(PC)值被压入堆栈缓存器,当
从中断或子程序返回时将数值返回给程序计数器(PC)
,下图说明其工作原理。
RET
CALL
SP7
RETI
中断
SP6
SP5
SP4
SP-1
SP+1
SP3
SP2
SP1
SP0
堆栈缓存器的使用将遵循一个原则“先进后出”。
注:堆栈缓存器只有 8 层,如果堆栈已满,并且发生不可屏蔽的中断,那么只有中断标志位会被记录下来,
而中断响应则会被抑制,直到堆栈指针发生递减,中断才会被响应,这个功能可以防止中断使堆栈溢
出,同样如果堆栈已满,并且发生子程序调用,那么堆栈将会发生溢出,首先进入堆栈的内容将会丢
失,只有最后 8 个返回地址被保留,故用户在写程序时应注意此点,以免发生程序走飞。
www.mcu.com.cn
-21-
V1.7
Cmsemicon
2.4
CMS89FT6xx
工作寄存器(ACC)
2.4.1 概述
ALU 是 8Bit 宽的算术逻辑单元,MCU 所有的数学、逻辑运算均通过它来完成。它可以对数据进行加、减、
移位及逻辑运算;ALU 也控制状态位(STATUS 状态寄存器中),用来表示运算结果的状态。
ACC 寄存器是一个 8Bit 的寄存器,ALU 的运算结果可以存放在此,它并不属于数据存储器的一部分而是
位于 CPU 中供 ALU 在运算中使用,因此不能被寻址,只能通过所提供的指令来使用。
2.4.2 ACC 应用
例:用 ACC 做数据传送
LD
A,R01
;将寄存器 R01 的值赋给 ACC
LD
R02,A
;将 ACC 的值赋给寄存器 R02
例:用 ACC 做立即寻址目标操作数
LDIA
30H
ANDIA
30H
XORIA
30H
;给 ACC 赋值 30H
;将当前 ACC 的值跟立即数 30H 进行“与”操作,
;结果放入 ACC
;将当前 ACC 的值跟立即数 30H 进行“异或”操作,
;结果放入 ACC
例:用 ACC 做双操作数指令的第一操作数
HSUBA
R01
;ACC-R01,结果放入 ACC
HSUBR
R01
;ACC-R01,结果放入 R01
例:用 ACC 做双操作数指令的第二操作数
www.mcu.com.cn
SUBA
R01
;R01-ACC,结果放入 ACC
SUBR
R01
; R01-ACC,结果放入 R01
-22-
V1.7
Cmsemicon
CMS89FT6xx
程序状态寄存器(STATUS)
2.5
STATUS 寄存器如寄存器下表所示,包含:
ALU 的算术状态;
复位状态;
数据存储器(GPR 和 SFR)的存储区选择位。
与其他寄存器一样,STATUS 寄存器可以是任何指令的目标寄存器。如果一条影响 Z、DC 或 C 位的指令
以 STATUS 寄存器作为目标寄存器,则不能写这 3 个状态位。这些位根据器件逻辑被置 1 或清零。而且也不能
写 TO 和 PD 位。因此将 STATUS 作为目标寄存器的指令可能无法得到预期的结果。
例如,CLR STATUS 会清零高 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=
寄存器存储区选择位(用于间接寻址);
Bank 2和Bank 3(100h-1FFh);
Bank 0和Bank 1(00h-FFh)。
存储区选择位;
选择Bank 0;
选择Bank 1;
选择Bank 2;
选择Bank 3。
超时位;
上电或执行了CLRWDT指令或STOP指令;
发生了WDT超时。
掉电位;
上电或执行了CLRWDT指令指令或STOP指令;
执行了STOP指令。
结果为零位;
算术或逻辑运算的结果为零;
算术或逻辑运算的结果不为零。
半进位/借位位;
发生了结果的低4位向高位进位;
结果的低4位没有向高位进位。
进位/借位位;
结果的最高位发生了进位或没有发生借位;
结果的最高位没有发生进位或发生了借位。
-23-
V1.7
Cmsemicon
CMS89FT6xx
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 的状态
影响 PD、TO 的事件表
www.mcu.com.cn
-24-
V1.7
Cmsemicon
CMS89FT6xx
预分频器(OPTION_REG)
2.6
OPTION_REG 寄存器是可读写的寄存器,包括各种控制位用于配置:
TIMER0/WDT 预分频器;
TIMER0。
预分频器 OPTION_REG(81H)
81H
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
OPTION_REG
----
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
读写
----
R/W
R/W
R/W
R/W
R/W
R/W
R/W
复位值
----
1
1
1
1
1
1
1
Bit7
Bit6
未用。
INTEDG:
1=
0=
Bit5
T0CS:
0:
1:
TMR0 时钟源选择位。
内部指令周期时钟(FSYS /4)
。
T0CKI 引脚上的跳变沿。
Bit4
T0SE:
0:
1:
TIMER0 时钟源边沿选择位。
在 T0CKI 引脚信号从低电平跳变到高电平时递增。
在 T0CKI 引脚信号从高电平跳变到低电平时递增。
Bit3
PSA:
0:
1:
Bit2~Bit0
PS2~PS0:
触发中断的边沿选择位。
INT 引脚上升沿触发中断。
INT 引脚下降沿触发中断。
预分频器分配位。
预分频器分配给 TIMER0 模块。
预分频器分配给 WDT。
预分配参数配置位。
PS2
PS1
PS0
TMR0 分频比
WDT 分频比
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256
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
-25-
V1.7
Cmsemicon
CMS89FT6xx
由 TIMER0 还是 WDT 使用预分频器,完全由软件控制,可以动态改变。为了避免出现不该有的芯片复位,
当从 TIMER0 换为 WDT 使用时,应该执行以下指令。
CLR
;TMR0 清零
TMR0
;WDT 清零
CLRWDT
LDIA
B’00xx1111’
;必要步骤,必须执行
LD
OPTION_REG,A
;必要步骤,必须执行
LDIA
B’00xx1xxx’
;设置新的预分频器
LD
OPTION_REG,A
将预分频器从分配给 WDT 切换为分配给 TIMER0 模块,应该执行以下指令。
;WDT 清零
CLRWDT
LDIA
B’00xx0xxx’
LD
OPTION_REG,A
;设置新的预分频器
注:
要使 TIMER0 获取 1:1 的预分频比配置,可通过将选项寄存器的 PSA 位置 1 将预分频器分配给 WDT。
www.mcu.com.cn
-26-
V1.7
Cmsemicon
2.7
CMS89FT6xx
程序计数器(PC)
程序计数器(PC)控制程序内存 FLASH 中的指令执行顺序,它可以寻址整个 FLASH 的范围,取得指令
码后,程序计数器(PC)会自动加一,指向下一个指令码的地址。但如果执行跳转、条件跳转、向 PCL 赋值、
子程序调用、初始化复位、中断、中断返回、子程序返回等操作时,PC 会加载与指令相关的地址而不是下一
条指令的地址。
当遇到条件跳转指令且符合跳转条件时,当前指令执行过程中读取的下一条指令将会被丢弃,且会插入一
个空指令操作周期,随后才能取得正确的指令。反之,就会顺序执行下一条指令。
程序计数器(PC)是 12Bit 宽度,低 8 位通过 PCL(02H)寄存器用户可以访问,高 4 位用户不能访问。
可容纳 4K×16Bit 程序地址。对 PCL 赋值将会产生一个短跳转动作,跳转范围为当前页的 256 个地址。
注:当程序员在利用 PCL 作短跳转时,要先对 PC 高位缓冲寄存器 PCLATH 进行赋值。
下面给出几种特殊情况的 PC 值
复位时
PC=0000;
中断时
PC=0004(原来的 PC+1 会被自动压入堆栈);
CALL 时
PC=程序指定地址(原来的 PC+1 会被自动压入堆栈);
RET、RETI、RET i 时
PC=堆栈出来的值;
操作 PCL 时
PC[11:8]不变,PC[7:0]=用户指定的值;
JP 时
PC=程序指定的值;
其它指令
PC=PC+1;
www.mcu.com.cn
-27-
V1.7
Cmsemicon
CMS89FT6xx
看门狗计数器(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 溢出所造
成的。
注:
1.
若使用 WDT 功能,一定要在程序的某些地方放置“CLRWDT”指令,以保证在 WDT 溢出前能被清
零。否则会使芯片不停的复位,造成系统无法正常工作。
2.
不能在中断程序中对 WDT 进行清零,否则无法侦测到主程序“跑飞”的情况。
3.
程序中应在主程序中有一次清 WDT 的操作,尽量不要在多个分支中清零 WDT,这种架构能最大限
度发挥看门狗计数器的保护功能。
4.
看门狗计数器不同芯片的溢出时间有一定差异,所以设置清 WDT 时间时,应与 WDT 的溢出时间有
较大的冗余,以避免出现不必要的 WDT 复位。
2.8.2 看门狗定时器控制寄存器 WDTCON
看门狗定时器控制寄存器 WDTCON(105H)
105H
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
WDTCON
---
---
---
---
---
---
---
SWDTEN
R/W
---
---
---
---
---
---
---
R/W
复位值
---
---
---
---
---
---
---
0
Bit7~Bit1
Bit0
未用。
SWDTEN:
1=
0=
软件使能或禁止看门狗定时器位
使能 WDT
禁止 WDT(复位值)
注:如果 CONFIG 中 WDT 配置位=1,则 WDT 始终被使能,而与 SWDTEN 控制位的状态无关。如果
CONFIG 中 WDT 配置位= 0,则可以使用 SWDTEN 控制位使能或禁止 WDT。
www.mcu.com.cn
-28-
V1.7
Cmsemicon
CMS89FT6xx
3. 系统时钟
3.1
概述
时钟信号由内部振荡产生,在片内产生 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
Q3
Q2
Q4
CLK
Q1
Q2
Q3
Q4
PC
PC+1
PC+2
取址 PC
执行指令 PC-1
取址 PC+1
执行指令 PC
取址 PC+2
执行指令 PC+1
图 3-1:时钟与指令周期时序图
下面列出振荡频率与指令速度的关系
www.mcu.com.cn
频率
双指令周期
单指令周期
1MHz
8μs
4μs
2MHz
4μs
2μs
4MHz
2μs
1μs
8MHz
1μs
500ns
-29-
V1.7
Cmsemicon
3.2
CMS89FT6xx
系统振荡器
芯片有 1 种振荡方式,内部 RC 振荡。
3.2.1 内部 RC 振荡
芯片的振荡方式为内部 RC 振荡,其振荡频率为 8M 可通过 OSCCON 寄存器设置芯片工作频率。
3.3
起振时间
起振时间(Reset Time)是指从芯片复位到芯片振荡稳定这段时间,其设计值为 18ms。
注:无论芯片是电源上电复位,还是其它原因引起的复位,都会存在这个起振时间。
www.mcu.com.cn
-30-
V1.7
Cmsemicon
3.4
CMS89FT6xx
振荡器控制寄存器
振荡器控制(OSCCON)寄存器控制系统时钟和频率选择,振荡器调节寄存器 OSCTUNE 可以用软件调
节内部振荡频率。
振荡器控制寄存器 OSCCON(8FH)
8FH
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
OSCCON
---
IRCF2
IRCF1
IRCF0
---
---
---
---
R/W
---
R/W
R/W
R/W
---
---
---
---
复位值
---
1
1
0
---
---
---
---
Bit7
未用,读为 0。
Bit6~Bit4
IRCF:
内部振荡器分频选择位。
111=
FSYS = FOSC /1
110=
FSYS = FOSC /2(默认)
101=
FSYS = FOSC /4
100=
FSYS = FOSC /8
011=
FSYS = FOSC /16
010=
FSYS = FOSC /32
001=
FSYS = FOSC /64
000=
FSYS = 32kHz(LFINTOSC)。
未用。
Bit3~Bit0
振荡器调节寄存器 OSCTUNE(90H)
90H
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
OSCTUNE
---
---
---
TUN4
TUN3
TUN2
TUN1
TUN0
R/W
---
---
---
R/W
R/W
R/W
R/W
R/W
复位值
---
---
---
0
0
0
0
0
Bit7~Bit5
禁用,读为 0。
Bit4~Bit0
TUN:
01111=
频率调节位。
最高频率。
01110=
.
.
.
00001=
00000=
振荡器模块以厂家校准后的频率运行。
11111=
.
.
.
10000=
www.mcu.com.cn
最低频率。
-31-
V1.7
Cmsemicon
CMS89FT6xx
4. 复位
芯片可用如下 3 种复位方式:
上电复位;
低电压复位;
正常工作下的看门狗溢出复位。
上述任意一种复位发生时,所有的系统寄存器将恢复默认状态,程序停止运行,同时程序计数器 PC 清零,
复位结束后程序从复位向量 0000H 开始运行。STATUS 的 TO 和 PD 标志位能够给出系统复位状态的信息,
(详
见 STATUS 的说明)
,用户可根据 PD 和 TO 的状态,控制程序运行路径。
任何一种复位情况都需要一定的响应时间,系统提供完善的复位流程以保证复位动作的顺利进行。
4.1
上电复位
上电复位与 LVR 操作密切相关。系统上电的过程呈逐渐上升的曲线形式,需要一定时间才能达到正常电平
值。下面给出上电复位的正常时序:
-
上电:系统检测到电源电压上升并等待其稳定;
-
系统初始化:所有的系统寄存器被置为初始值;
-
振荡器开始工作:振荡器开始提供系统时钟;
-
执行程序:上电结束,程序开始运行。
www.mcu.com.cn
-32-
V1.7
Cmsemicon
CMS89FT6xx
掉电复位
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
-33-
V1.7
Cmsemicon
CMS89FT6xx
4.2.2 掉电复位的改进办法
如何改进系统掉电复位性能,以下给出几点建议:
选择较高的 LVR 电压,有助于复位更可靠;
开启看门狗定时器;
降低系统的工作频率;
增大电压下降斜率。
开启 MCU 的低压侦测功能
芯片内部集成了低压侦测(LVR)功能,当系统电压跌至低于 LVR 电压时,LVR 被触发,系统复位。
看门狗定时器
看门狗定时器用于保证程序正常运行,当系统进入工作死区或者程序运行出错时,看门狗定时器会溢出,
系统复位。
降低系统的工作速度
系统工作频率越快,系统最低工作电压越高。从而增大了工作死区的范围,降低系统工作速度就可以降低
最低工作电压,从而有效的减小系统工作在死区电压的机率。
增大电压下降斜率
此方法可用于系统工作在 AC 供电的环境,一般 AC 供电系统,系统电压在掉电过程中下降很缓慢,这就
会造成芯片较长时间工作在死区电压,此时若系统重新上电,芯片工作状态可能出错,建议在芯片电源与地线
间加一个放电电阻,以便让 MCU 快速通过死区,进入复位区,避免芯片上电出错可能性。
4.3
看门狗复位
看门狗复位是系统的一种保护设置。在正常状态下,由程序将看门狗定时器清零。若出错,系统处于未知
状态,看门狗定时器溢出,此时系统复位。看门狗复位后,系统重启进入正常状态。
看门狗复位的时序如下:
-
看门狗定时器状态:系统检测看门狗定时器是否溢出,若溢出,则系统复位;
-
初始化:所有的系统寄存器被置为默认状态;
-
振荡器开始工作:振荡器开始提供系统时钟;
-
程序:复位结束,程序开始运行。
关于看门狗定时器的应用问题请参看 2.8WDT 应用章节。
www.mcu.com.cn
-34-
V1.7
Cmsemicon
CMS89FT6xx
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.
外设中断。
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
-35-
V1.7
Cmsemicon
5.4
CMS89FT6xx
休眠模式应用举例
系统在进入休眠模式之前,若用户需要获得较小的休眠电流,请先确认所有 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
TRISD,A
;关断中断使能
;所有 I/O 设置为输出口
…
5.5
;关闭其它功能
LDIA
0A5H
LD
SP_FLAG,A
;置休眠状态记忆寄存器(用户自定义)
CLRWDT
;清零 WDT
STOP
;执行 STOP 指令
休眠模式唤醒时间
当 MCU 从休眠态被唤醒时,需要等待一个振荡稳定时间(ResetTime)
,这个时间标称值为 18ms。
www.mcu.com.cn
-36-
V1.7
Cmsemicon
CMS89FT6xx
6. I/O 端口
芯片有四个 I/O 端口:PORTA、PORTB、PORTC、PORTD(最多 26 个 I/O)
。可读写端口数据寄存器可
直接存取这些端口。
端口
位
管脚描述
I/O
0
施密特触发输入,推挽式输出,编程数据输入/输出
I/O
1
施密特触发输入,推挽式输出
I/O
2
施密特触发输入,推挽式输出,编程时钟输入
I/O
3
施密特触发输入,推挽式输出
I/O
4
施密特触发输入,推挽式输出
I/O
7
施密特触发输入,推挽式输出
I/O
0
施密特触发输入,推挽式输出,触摸按键口
I/O
1
施密特触发输入,推挽式输出,触摸按键口
I/O
2
施密特触发输入,推挽式输出,触摸按键口
I/O
3
施密特触发输入,推挽式输出,触摸按键口
I/O
4
施密特触发输入,推挽式输出,触摸按键口
I/O
5
施密特触发输入,推挽式输出,触摸按键口
I/O
6
施密特触发输入,推挽式输出,触摸按键口
I/O
7
施密特触发输入,推挽式输出,触摸按键口
I/O
0
施密特触发输入,推挽式输出,触摸按键口
I/O
1
施密特触发输入,推挽式输出,触摸按键口
I/O
2
施密特触发输入,推挽式输出,触摸按键口
I/O
3
施密特触发输入,推挽式输出,触摸按键口
I/O
0
施密特触发输入,推挽式输出,AN0
I/O
1
施密特触发输入,推挽式输出,AN1
I/O
2
施密特触发输入,推挽式输出,AN2
I/O
3
施密特触发输入,推挽式输出,AN3
I/O
4
施密特触发输入,推挽式输出,AN4
I/O
5
施密特触发输入,推挽式输出,AN5
I/O
6
施密特触发输入,推挽式输出,AN6
I/O
7
施密特触发输入,推挽式输出,AN7
I/O
PROTA
PORTB
PORTC
PORTD
表 6-1:端口配置总概
www.mcu.com.cn
-37-
V1.7
Cmsemicon
6.1
数据总线
写
WPUA
CMS89FT6xx
I/O 口结构图
D
数据总线
Q
VDD
弱上拉
CK Q
写
WPUB
Q
CK Q
VDD
弱上拉
读
WPUB
读
WPUA
D
D
Q
VDD
写
PORTA
D
写
PORTB
CK Q
Q
VDD
CK Q
I/O引脚
I/O引脚
D
D
写
TRIS
A
Q
VSS
写
TRISB
CK Q
Q
VSS
CK Q
读
TRISB
读
TRISA
读
PORTB
读
PORTA
到触摸按键模块
PORTA
PORTB/PORTC
图 6-1:I/O 结构图
www.mcu.com.cn
-38-
V1.7
Cmsemicon
6.2
CMS89FT6xx
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
RA7
---
---
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
PORTA
PORTA I/O 引脚位;
1=
端口引脚电平>VIH;
0=
端口引脚电平VIH;
0=
端口引脚电平VIH;
0=
端口引脚电平VIH;
0=
端口引脚电平VIH;
0=
端口引脚电平