晟矽微电子MC30P6060 8位单片机用户手册说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SinoMCU 8位单片机
MC30P6060 用户手册
V1.9
目录
1产品概要 (4)
1.1产品特性 (4)
1.2订购信息 (5)
1.3引脚排列 (5)
1.4端口说明 (6)
2电气特性 (7)
2.1极限参数 (7)
2.2直流电气特性 (7)
2.3交流电气特性 (9)
3CPU及存储器 (10)
3.1指令集 (10)
3.2程序存储器 (12)
3.3数据存储器 (12)
3.4堆栈 (13)
3.5控制寄存器 (13)
3.6用户配置字 (15)
4系统时钟 (17)
4.1内部高频RC振荡器 (18)
4.2内部低频RC振荡器 (18)
4.3外部晶体振荡器 (18)
4.4系统工作模式 (18)
4.5低功耗模式 (19)
5复位 (20)
5.1复位条件 (20)
5.2上电复位 (21)
5.3外部复位 (21)
5.4低电压复位 (21)
5.5看门狗复位 (21)
6I/O端口 (22)
6.1通用I/O功能 (22)
6.2内部上/下拉电阻 (23)
6.3端口模式控制 (23)
7定时器TIMER (24)
7.1看门狗定时器WDT (24)
7.2定时器T0 (25)
7.3定时器T1 (27)
8低电压检测LVD (32)
9中断 (33)
9.1外部中断 (33)
9.2定时器中断 (33)
9.3键盘中断 (33)
9.4中断相关寄存器 (34)
10特性曲线 (36)
10.1I/O特性 (36)
10.2功耗特性 (41)
10.3模拟电路特性 (49)
10.4最低工作电压与系统时钟的关系 (57)
11封装尺寸 (59)
11.1SOP14 (59)
11.2DIP14 (59)
11.3SOP8 (60)
11.4DIP8 (60)
11.5SOT23-6 (61)
11.6TSSOP8 (61)
12修订记录 (62)
1产品概要
1.1产品特性
⏹8位CPU内核
✧精简指令集,5级深度硬件堆栈
✧CPU为单时钟,仅在系统主时钟下运行
✧系统主时钟下F CPU可配置为2/4分频
⏹存储器
✧1K×14位OTP型程序存储器
✧49字节SRAM/REG型通用数据存储器,支持直接寻址、间接寻址等多种寻址方式
⏹2组共12个I/O
✧P0(P00~P03),P1(P10~P17)
✧P13可配置为单输入口或输入/开漏输出口,可复用为外部复位RST输入,编程时为高压
VPP输入
✧P15/P14可复用为外部时钟振荡器输入/输出
✧P10~P17内置上拉电阻,P00~P03/P10~P12内置下拉电阻,均可单独使能
✧P10~P12/P14~P17可选开漏或推挽输出
✧P1所有端口均支持键盘中断唤醒功能,并可单独使能
⏹系统时钟源
✧内置高频RC振荡器(16MHz/8MHz/4MHz/2MHz/1MHz/455KHz),可用作系统主时钟源
✧内置低频RC振荡器(32KHz),可用作系统主时钟源
✧支持外接高频晶体振荡器(455KHz/4MHz~16MHz),可用作系统主时钟源
✧支持外接低频晶体振荡器(32768Hz),可用作系统主时钟源、或定时器RTC时钟源
⏹系统工作模式
✧运行模式:CPU在系统主时钟下运行
✧休眠模式:CPU停止运行,系统主时钟源停止工作
⏹内部自振式看门狗计数器(WDT)
✧与定时器T0共用预分频器
✧溢出时间可配置:4.5ms/18ms/72ms/288ms(无预分频)
✧工作模式可配置:开启WDT、关闭WDT,也可软件控制开启或关闭
⏹2个定时器
✧8位定时器T0,支持外部RTC时钟,可实现外部计数功能,与WDT共用预分频器
✧8位定时器T1,可实现外部计数、BUZ、3路共周期独立占空比的PWM(可组合成1对
带死区的互补PWM)
⏹中断
✧外部中断(INT),键盘中断(P10~P17),定时器中断(T0~T1)
⏹低电压复位LVR
✧ 1.8V/2.0V/2.2V/2.4V/2.5V/2.6V/2.7V/2.8V/3.0V/3.2V/3.6V/3.8V
⏹低电压检测LVD
✧ 1.8V/2.0V/2.1V/2.2V/2.4V/2.5V/2.6V/2.7V/2.8V/3.0V/3.2V/3.3V/3.6V/4.0V/4.2V
✧可选择LVDI输入电压与内部1.08V比较
⏹
工作电压
✧ V LVR30 ~ 5.5V @ Fcpu = 0~8MHz ✧ V LVR27 ~ 5.5V @ Fcpu = 0~4MHz ✧ V LVR20 ~ 5.5V @ Fcpu = 0~2MHz ✧ V LVR18 ~ 5.5V @ Fcpu = 0~32KHz/2 ⏹ 封装形式
✧ SOP14/DIP14/SOP8/DIP8/SOT23-6/TSSOP8
1.2 订购信息
产品名称 封装形式 备注 MC30P6060A0J SOP14 MC30P6060A0B DIP14 MC30P6060A0H SOP8 MC30P6060A0A DIP8 MC30P6060A0T SOT23-6 MC30P6060A1T SOT23-6 MC30P6060A0U
TSSOP8
1.3 引脚排列
MC30P6060A0J/A0B
VDD
P00P17P16OSCI/P15
[SDO]/OSCO/P14[VPP]/RST/LVDI/P13
GND
P02P03P01P10/INT/TC1/PWM2/[SDO]P11/PWM1/[SDI]
P12/TC0/BUZ/PWM0/[SCK]
MC30P6060A0J/A0B
SOP14/DIP14
1234567
8
14131211109
MC30P6060A0H/A0A/A0U
MC30P6060A0H/A0A/A0U
SOP8/DIP8/TSSOP8
1234
8765
VDD
OSCI/P15
[SDO]/OSCO/P14[VPP]/RST/LVDI/P13
GND
P10/INT/TC1/PWM2/[SDO]P11/PWM1/[SDI]
P12/TC0/BUZ/PWM0/[SCK]
MC30P6060A0T
MC30P6060A0T
SOT23-6
123
654
VDD
P13/LVDI/RST/[VPP]
P12/TC0/BUZ/PWM0/[SCK][SDI]/PWM1/P11
GND
[SDO]/P14
MC30P6060A1T
MC30P6060A1T
SOT23-6
123
654
VDD
[SCK]/PWM0/BUZ/TC0/P12
[VPP]/RST/LVDI/P13GND
P10/INT/TC1/PWM2/[SDO]P11/PWM1/[SDI]
1.4 端口说明
端口名称 类型 功能说明
VDD P 电源 GND P 地
P00~P03 D GPIO (推挽输出),内部下拉
P10~P12 D GPIO (可选推挽/开漏输出),内部上/下拉 P14~P17 D GPIO (可选推挽/开漏输出),内部上拉 P13 D GPIO (可配置为单输入口或输入/开漏输出口) 内部上拉 INT DI 外部中断输入
TC0~TC1 DI 定时器T0~T1的外部计数输入 PWM0~PWM2
DO 定时器T1的3路PWM 输出 BUZ DO 定时器T1的BUZ 输出 LVDI AI LVD 外部电压输入 OSCI ,OSCO
A 外部时钟振荡器输入/输出 RST
DI 外部复位输入
SCK ,SDI ,SDO
D 编程时钟/数据输入/数据输出接口 VPP
P
编程高压输入
注:P-电源;D-数字输入输出,DI-数字输入,DO-数字输出;A-模拟输入输出,AI-模拟输入,AO-模拟输出。
2电气特性
2.1极限参数
参数符号值单位
电源电压VDD -0.3~6.0 V
输入电压Vin -0.3~VDD+0.3 V
工作温度Ta -40~85 ℃
储存温度Tstg -65~150 ℃流入VDD最大电流IVDDmax 50 mA 流出GND最大电流IGNDmax 50 mA
注:若芯片工作条件超过极限值,则将造成永久性损坏;若芯片长时间工作在极限条件下,则会影响其可靠性。
2.2直流电气特性
VDD=5V,T=25℃
特性符号端口条件最小典型最大单位
工作电压VDD VDD Fcpu=0~8MHz V LVR30 5.5
V Fcpu=0~4MHz V LVR27 5.5
Fcpu=0~2MHz V LVR20 5.5
Fcpu=0~1MHz V LVR20 5.5
Fcpu=0~500KHz V LVR20 5.5
Fcpu=0~455KHz/2 V LVR20 5.5
Fcpu=0~32KHz/2 V LVR18 5.5
输入漏电流Ileak 所有输入脚VDD=5V -1 1 uA
输入高电平Vih1
所有输入脚
VDD=5V, SMT开启, SMTVS配置 2.0 V
VDD=3V, SMT开启, SMTVS配置 1.6 V Vih2 SMT开启, SMTVS配置0.8VDD V Vih3
VDD=5V, SMT关闭 2.0 V
VDD=3V, SMT关闭 1.5 V
输入低电平Vil1
所有输入脚
VDD=5V, SMT开启, SMTVS配置0.8 V
VDD=3V, SMT开启, SMTVS配置0.6 V Vil2 SMT开启, SMTVS配置0.2VDD V Vil3
VDD=5V, SMT关闭 1.0 V
VDD=3V, SMT关闭0.7 V
输出拉电流Ioh1
推挽输出脚
VDD=5V, Voh=VDD-0.6V. 正常驱动 1.75 3.5 mA
VDD=3V, Voh=VDD-0.6V. 正常驱动 1.05 2.1 mA Ioh2
VDD=5V, Voh=VDD-0.6V. 弱驱动0.45 0.9 mA
VDD=3V, Voh=VDD-0.6V. 弱驱动0.25 0.55 mA
输出灌电流Iol1
所有输出脚
VDD=5V, Vol=0.6V, 正常驱动10.5 21 mA
VDD=3V, Vol=0.6V, 正常驱动7 14 mA Iol2
VDD=5V, Vol=0.6V, 弱驱动 2 4 mA
VDD=3V, Vol=0.6V, 弱驱动 1.25 2.5 mA
上拉电阻Rpu1 P1
VDD=5V, Vin=0, RUSEL配置40 80 160 KΩ
VDD=3V, Vin=0, RUSEL配置90 190 380 KΩRpu2 P1(除P13) VDD=5V, Vin=0, RUSEL配置10 20 40 KΩ
下拉电阻Rpd P00-P03
P10-P12
Vin=VDD=5V 60 125 250 KΩ
Vin=VDD=3V 225 450 900 KΩ
运行模式功耗Irun VDD Fcpu=8MHz@HIRC(16M) 2.0 mA Fcpu=8MHz@HEXT(16M) 2.5 mA Fcpu=4MHz@HIRC(8M) 1.0 mA Fcpu=4MHz@HEXT(8M) 1.5 mA Fcpu=2MHz@HIRC(4M) 0.55 mA Fcpu=2MHz@HEXT(4M) 1.2 mA Fcpu=1MHz@HIRC(2M) 300 uA Fcpu=500KHz@HIRC(1M) 250 uA Fcpu=227.5KHz@HIRC(455K) 220 uA Fcpu=227.5KHz@HEXT(455K) 350 uA VDD=5V, Fcpu=F LIRC/2, LVR开 4.2 8 uA VDD=3V, Fcpu=F LIRC/2, LVR开 2.2 5 uA VDD=5V, Fcpu=F LEXT/2, LVR开17.2 32 uA VDD=3V, Fcpu=F LEXT/2, LVR开 4.2 8 uA
休眠模式功耗Istop VDD WDT关, LVR开 1 3 uA VDD=5V, WDT开, LVR开 2 6 uA VDD=3V, WDT开, LVR开 1 4 uA VDD=5V, LEXT开, LVR开15.2 30 uA VDD=3V, LEXT开, LVR开 3.3 7 uA
低压检测电压V LVD VDD LVDSEL=0001 -25% 1.08 +25%
V LVDSEL=其他-15% +15%
LVD响应时间T LVD0.3 2 ms
低压复位电压V LVR18
VDD
-15% 1.8 +15%
V V LVR20-15% 2.0 +15%
V LVR27-15% 2.7 +15%
V LVR30-15% 3.0 +15%
其他-15% +15%
LVD/LVR
回滞电压
VDD 6% 12%
注:条件项中,未注明模块默认关闭,无关端口状态为输出无负载、输入或开漏输出高则端口电压为VDD/GND。
2.3交流电气特性
特性符号条件最小典型最大单位
HIRC振荡频率F HIRC1
VDD=5V, T=25℃-3%
16M
+3%
Hz VDD=2.0V~5.5V, T=-40℃~85℃-5% +5%
F HIRC2
VDD=5V, T=25℃-3%
8M
+3%
Hz VDD=2.0V~5.5V, T=-40℃~85℃-8% +8%
F HIRC3
VDD=5V, T=25℃-3%
4M
+3%
Hz VDD=2.0V~5.5V, T=-40℃~85℃-10% +10%
F HIRC4
VDD=5V, T=25℃-3%
2M
+3%
Hz VDD=2.0V~5.5V, T=-40℃~85℃-20% +20%
F HIRC5
VDD=5V, T=25℃-3%
1M
+3%
Hz VDD=2.0V~5.5V, T=-40℃~85℃-20% +20%
F HIRC6
VDD=5V, T=25℃-3%
455K
+3%
Hz VDD=2.0V~5.5V, T=-40℃~85℃-20% +20%
LIRC振荡频率F LIRC VDD=5V, T=25℃-50% 32 +50% KHz 16M晶振起振电压T=25℃ 2.0 V 8M晶振起振电压T=25℃ 1.8 V 4M晶振起振电压T=25℃ 1.8 V 455K晶振起振电压T=25℃ 1.8 V 32768晶振起振电压T=25℃ 1.6 V 32768晶振起振时间VDD=5V, T=25℃ 1 s
3CPU及存储器
3.1指令集
芯片的指令集为精简指令集。
除程序跳转类指令,其余指令均为单周期指令,即执行时间为1个指令周期;所有指令均为单字指令,即指令码只占用1个程序存储器地址空间。
指令汇总表
助记符说明操作周期长度标志ADDAR R R和ACC相加,结果存入ACC R+ACC→ACC 1 1 C,DC,Z ADDRA R R和ACC相加,结果存入R R+ACC→R 1 1 C,DC,Z ADCAR R R和ACC相加(带C标志),结果存入ACC R+ACC+C→ACC 1 1 C,DC,Z ADCRA R R和ACC相加(带C标志),结果存入R R+ACC+C→R 1 1 C,DC,Z RSUBAR R R和ACC相减,结果存入ACC R-ACC→ACC 1 1 C,DC,Z RSUBRA R R和ACC相减,结果存入R R-ACC→R 1 1 C,DC,Z RSBCAR R R和ACC相减(带C标志),结果存入ACC R-ACC-/C→ACC 1 1 C,DC,Z RSBCRA R R和ACC相减(带C标志),结果存入R R-ACC-/C→R 1 1 C,DC,Z ANDAR R R和ACC与操作,结果存入ACC R and ACC→ACC 1 1 Z ANDRA R R和ACC与操作,结果存入R R and ACC→R 1 1 Z ORAR R R和ACC或操作,结果存入ACC R or ACC→ACC 1 1 Z ORRA R R和ACC或操作,结果存入R R or ACC→R 1 1 Z XORAR R R和ACC异或操作,结果存入ACC R xor ACC→ACC 1 1 Z XORRA R R和ACC异或操作,结果存入R R xor ACC→R 1 1 Z COMAR R 对R取反,结果存入ACC R取反→ACC 1 1 Z COMR R 对R取反,结果存入R R取反→R 1 1 Z
RLAR R R循环左移(带C标志),结果存入ACC R[7]→C
R[6:0]→ACC[7:1]
C→ACC[0]
1 1 C
RLR R R循环左移(带C标志),结果存入R R[7]→C
R[6:0]→R[7:1]
C→R[0]
1 1 C
RRAR R R循环右移(带C标志),结果存入ACC R[0]→C
R[7:1]→ACC[6:0]
C→ACC[7]
1 1 C
RRR R R循环右移(带C标志),结果存入R R[0]→C
R[7:1]→R[6:0]
C→R[7]
1 1 C
SWAPAR R 交换R的高低半字节,结果存入ACC R[7:4]→ACC[3:0]
R[3:0]→ACC[7:4]
1 1 -
SWAPR R 交换R的高低半字节,结果存入R R[7:4]→R[3:0]
R[3:0]→R[7:4]
1 1 -
MOVRA R 将ACC存入R ACC→R 1 1 - MOVAR R 将R存入ACC R→ACC 1 1 Z MOVR R 将R存入R R→R 1 1 Z CLRA 清零ACC 0→ACC 1 1 Z CLRR R 清零R 0→R 1 1 Z INCR R R自加1 R+1→R 1 1 Z INCAR R R加1,结果存入AC C R+1→ACC 1 1 Z DECR R R自减1 R-1→R 1 1 Z DECAR R R减1,结果存入AC C R-1→ACC 1 1 Z JZR R R自加1;结果为0则跳过下一条指令R+1→R;结果为0则PC+2→PC 1/2 1 - JZAR R R加1,结果存入AC C;结果为0则跳过下一条指令 R+1→ACC;结果为0则PC+2→PC 1/2 1 - DJZR R R自减1;结果为0则跳过下一条指令R-1→R;结果为0则PC+2→PC 1/2 1 - DJZAR R R减1,结果存入AC C;结果为0则跳过下一条指令 R-1→ACC;结果为0则PC+2→PC 1/2 1 - BCLR R,b 将R的第b位清0 0→R[b] 1 1 - BSET R,b 将R的第b位置1 1→R[b] 1 1 - JBCLR R,b 若R的第b位为0,则跳过下一条指令若R[b]=0,则PC+2→PC 1/2 1 - JBSET R,b 若R的第b位为1,则跳过下一条指令若R[b]=1,则PC+2→PC 1/2 1 - ADDAI K K和ACC相加,结果存入AC C K+ACC→ACC 1 1 C,DC,Z ISUBAI K K和ACC相减,结果存入AC C K-ACC→ACC 1 1 C,DC,Z ANDAI K K和ACC与操作,结果存入ACC K and ACC→ACC 1 1 Z ORAI K K和ACC或操作,结果存入ACC K or ACC→ACC 1 1 Z XORAI K K和ACC异或操作,结果存入ACC K xor ACC→ACC 1 1 Z MOVAI K 将K存入ACC K→ACC 1 1 -
CALL K 子程序调用PC+1→TOS
K→PC[10:0]
2 1 -
GOTO K 无条件跳转K→PC[10:0] 2 1 - RETURN 从子程序返回TOS→PC 2 1 -
RETAI K 从子程序返回,并将K存入AC C TOS→PC
K→ACC
2 1 -
RETIE 从中断返回TOS→PC
1→GIE
2 1 -
NOP 空操作空操作 1 1 - DAA BCD码加法后,将ACC的值调整为BCD码ACC(HEX码)→ACC(BCD码) 1 1 C DSA BCD码减法后,将ACC的值调整为BCD码ACC(HEX码)→ACC(BCD码) 1 1 - CLRWDT 清零看门狗定时器0→WD T 1 1 TO,PD STOP 进入低功耗模式0→WD T;CPU暂停 1 1 TO,PD
注:
1、ACC-算术逻辑单元累加器,R-数据存储器,K-立即数;
2、对于条件跳转类指令,若跳转条件成立,则指令需2个周期,否则只需1个周期;
3.2
程序存储器
芯片的程序存储器为OTP 型存储器,1K×14位的地址空间范围为0000H~03FFH 。
程序存储器地址分配如下图所示:
复位起始地址(0000H )通用程序区(0009H - 03FFH )
中断入口地址(0008H )通用程序区(0001H - 0007H )
3.3 数据存储器
数据存储器包括通用数据存储器GPR 和特殊功能寄存器SFR ,具体地址分配参照下表。
GPR/SFR0可直接寻址或通过INDF 间接寻址,SFR1仅支持直接寻址。
数据存储器区地址映射表
地址
类型 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F 00H-07H SFR0 INDF T0CNT PCL STA TUS FSR P0
P1
GPR0
08H-0FH MCR
KBIM
PCLA TH
PDCON
ODCON
PUCON INTECON INTFLAG 10H-3FH GPR 通用数据存储器区
40H-47H SFR1 T0CR DDR0 DDR1 48H-4FH PWMCR
T1DA T1
T1DA T2
TM0CR
T1CR T1CNT
T1LOAD
T1DA T0
50H-7FH
保留
注:
1、 上表中灰色部分地址为系统保留区,读出数据不确定,写入操作可能会影响芯片正常工作;
2、 SFR 中的GPR0(07H )可用作通用数据存储器GPR ;
数据存储器寻址模式地址组成
15 14 13 12 11 10 9 8 7 6
5
4
3
2
1
寻址模式 / / / / / / / / / 来自指令的7位地址
直接寻址模式 /
/
/
/
/
/
/
/
/
0 FSR
间接寻址模式
直接寻址模式,是以指令的低7位为数据存储器地址,通过指令访问,寻址范围为00H~7FH 。
例:通过直接寻址模式将数据55H 写入数据存储器10H 地址 MOVAI 55H
MOVRA
10H
;将数据55H 写入数据存储器10H 地址
间接寻址模式,是以FSR为数据存储器地址指针,通过INDF访问,寻址范围为00H~3FH。
例:通过间接寻址模式将数据55H写入数据存储器10H地址
MOVAI 10H
MOVRA FSR
MOVAI 55H
MOVRA INDF ;将数据55H写入FSR指向的数据存储器中
3.4堆栈
5级堆栈深度,当程序响应中断或执行子程序调用指令时CPU会将PC自动压栈保存;当执行中断返回指令或子程序返回指令时,栈顶数据自动出栈载入PC。
3.5控制寄存器
数据指针寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 FSR - - FSR5 FSR4 FSR3 FSR2 FSR1 FSR0 R/W R R R/W R/W R/W R/W R/W R/W 初始值 1 1 0 0 0 0 0 0
BIT[5:0] FSR[5:0]–数据指针寄存器
FSR:间接寻址模式的指针,仅低6位有效。
间接寻址寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INDF INDF7 INDF6 INDF5 INDF4 INDF3 INDF2 INDF1 INDF0 R/W R/W R/W R/W R/W R/W R/W R/W R/W 初始值X X X X X X X X
BIT[7:0] INDF[7:0]–间接寻址寄存器
INDF:INDF不是物理寄存器,对INDF寻址实际是对FSR指向的数据存储器地址进行访
问,从而实现间接寻址功能。
程序指针计数器低字节
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 R/W R/W R/W R/W R/W R/W R/W R/W R/W 初始值0 0 0 0 0 0 0 0
BIT[7:0] PC[7:0]–程序指针计数器低8位
程序指针计数器高位缓存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PCLATH - - - - - - PCH1 PCH0 R/W - - - - - - R/W R/W 初始值- - - - - - 0 0 BIT[1:0] PCH[1:0]–程序指针计数器高2位缓存器
程序指针计数器(PC)有以下几种操作模式:
✧顺序运行指令:PC = PC + 1;
✧分支指令GOTO/CALL:PC = 指令码低10位;
✧返回指令RETIE/RETURN/RETAI:PC = 堆栈栈顶(TOS);
对PCL操作指令(兼容义隆模式):
✧对PCL操作的加法指令:PC = (PC[9:0]+ALU[7:0]);
✧对PCL操作的其他指令:PC = {PC[9:8]:ALU[7:0](ALU运算结果)};
对PCL操作指令(兼容菲林模式):
✧对PCL操作指令:PC = {PCLA TH[1:0]:ALU[7:0](ALU运算结果)};
CPU状态寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 STATUS RST - - TO PD Z DC C R/W R/W - - R R R/W R/W R/W 初始值0 - - 1 1 X X X BIT[7] RST–唤醒源标志位
0:芯片通过其他唤醒源唤醒;
1:芯片通过外部中断或键盘中断唤醒;
BIT[4] TO–看门狗溢出标志位
0:发生WDT溢出;
1:上电复位,或执行CLRWDT/STOP指令;
BIT[3] PD–进入低功耗模式标志位
0:执行STOP指令;
1:上电复位,或执行CLRWDT指令;
BIT[2] Z–零标志位
0:算术或逻辑运算的结果不为零;
1:算术或逻辑运算的结果为零;
BIT[1] DC–半字节进/借位标志位
0:加法运算时半字节无进位;减法运算时半字节有借位;
1:加法运算时半字节有进位;减法运算时半字节无借位;
BIT[0] C–进/借位标志位
0:加法运算时无进位;减法运算时有借位;移位后移出逻辑0;
1:加法运算时有进位;减法运算时无借位;移位后移出逻辑1;
3.6用户配置字
芯片为保证系统正常工作,会将关键模块的配置信息预先存储于单独的存储器区域中,在上电或其他复位发生后将配置信息载入寄存器中,通过寄存器控制关键模块的工作状态。
该部分存储器中用户可选的内容即为用户配置字,可在烧录用户程序代码时进行配置与烧录。
芯片的用户配置字,定义如下:
符号功能说明
OSCM 系统时钟振荡模式设置:
单时钟模式:内部高频RC振荡器HIRC的1分频;
单时钟模式:内部高频RC振荡器HIRC的2分频;
单时钟模式:内部高频RC振荡器HIRC的4分频;
单时钟模式:内部高频RC振荡器HIRC的8分频;
单时钟模式:内部高频RC振荡器HIRC的32分频;
单时钟模式:内部高频RC振荡器HIRC的64分频;
单时钟模式:内部低频RC振荡器LIRC;
单时钟模式:外部4M-16M晶体振荡器;(支持外部4MHz~16MHz晶振)单时钟模式:外部455K晶体振荡器;(支持外部455KHz晶振)
单时钟模式:外部32K晶体振荡器;(支持外部32768Hz晶振)
双时钟模式:内部HIRC + 外部32K晶体振荡器(RTC时钟源);
HIRCFS HIRC振荡频率选择:
F HIRC=16MHz;8MHz;4MHz;2MHz;1MHz;455KHz;
FCPUS CPU时钟频率选择:
F CPU=F OSC/2;F CPU=F OSC/4;
RSTEN RST外部复位设置:
P13为外部复位脚;P13为输入/输出脚;
LVRVS LVR复位电压选择:(LVR电压应满足由F CPU决定的工作电压特性)
1.8V;
2.0V;2.2V;2.4V;2.5V;2.6V;
2.7V;2.8V;
3.0V;3.2V;3.6V;3.8V;
WDTM WDT模式设置:
WDT始终关闭;WDT始终开启;
WDTT 上电延时及WDT溢出时间(无预分频)选择:(时间均为典型值)上电延时=2.2ms,WDT溢出时间=4.5ms;
上电延时=9ms,WDT溢出时间=18ms;
上电延时=36ms,WDT溢出时间=72ms;
上电延时=144ms,WDT溢出时间=288ms;
SMTEN 端口输入施密特设置:
输入SMT功能关闭;输入SMT功能开启;
SMTVS 端口施密特阈值选择:
2.0V/0.8V;0.8VDD/0.2VDD;
RUSEL 端口上拉电阻选择(除P13):
80KΩ;20KΩ;
P13PMS P13端口模式选择:
P13为单输入口;P13为输入/开漏输出口;
RDPORT 输出口读操作设置:
输出口读操作将读取寄存器内容;输出口读操作将读取端口电平状态;
DRVIS 端口驱动电流选择:
弱驱动;正常驱动;
MCUSEL 芯片模式选择:
兼容义隆模式;兼容菲林模式;
ENCR 程序代码加密设置:
程序代码加密;程序代码不加密;
芯片模式说明
模块/功能兼容义隆模式兼容菲林模式
复位地址0000H 存储空间最后地址P1键盘中断允许位有键盘中断功能,无允许位有键盘中断功能且有允许位P03内部下拉电阻无有
外部中断触发沿下降沿上升沿或下降沿
指令操作GIE 只能用BSET/BCLR指令无指令限制
PC高位缓存器PCLA TH 无有
指令操作PCL ADDRA指令:PC={PC[9:0]+ALU[7:0]};
其它指令:PC={PC[9:8]:ALU[7:0]};(ALU运算结果)
PC={PCLATH[1:0]:ALU[7:0]};
(ALU运算结果)
4 系统时钟
芯片为双时钟系统(可配置为单时钟模式),内部电路均在系统主时钟F OSC 或系统低频时钟F LOSC 下工作,部分模块的时钟还可在F OSC 和F LOSC 之间切换。
系统主时钟F OSC 可通过配置字OSCM 选择以下时钟:
✧ 内部高频RC 振荡器HIRC (16MHz/8MHz/4MHz/2MHz/1MHz/455KHz )时钟F HIRC 的1/2/4/ 8/32/64分频;
✧ 内部低频RC 振荡器LIRC (32KHz )时钟F LIRC ;
✧ 外部高频晶体振荡器HEXT (455KHz/4MHz~16MHz )时钟F HEXT ; ✧ 外部低频晶体振荡器LEXT (32768Hz )时钟F LEXT ;
系统低频时钟F LOSC 在通过配置字OSCM 配置为双时钟模式时固定为外部低频晶体振荡器LEXT (32768Hz )时钟F LEXT ,同时也用作RTC 时钟。
CPU 为单时钟,时钟源固定为系统主时钟F OSC ,CPU 的时钟频率F CPU 通过配置字FCPUS 选择。
WDT (看门狗)电路的时钟源固定为内部低频RC 振荡器。
系统时钟示意图
/8/32/64
/1/4/2OSCM F HIRC
HIRCFS
2M 1M 455K
16M 4M 8M F LIRC
F OSC
F CPU
FCPUS
/4/2
F RTC
OSCM
F LOSC 外部晶体谐振器XTAL OSCI OSCO
32768
4M-16M
455K F LEXT
内部高频RC 振荡器HIRC
内部低频RC 振荡器LIRC:32KHz
分频器
分频器
4.1内部高频RC振荡器
芯片内置1个振荡频率可通过配置字HIRCFS选择(16MHz/8MHz/4MHz/2MHz/1MHz/455KHz)的高精度HIRC振荡器,可用作系统主时钟源。
4.2内部低频RC振荡器
芯片内置1个振荡频率典型值为32KHz的LIRC振荡器,可用作系统主时钟源,也用于系统上电延时控制、WDT定时器等电路。
4.3外部晶体振荡器
芯片支持外接高频455KHz/4MHz~16MHz、或低频32768Hz的晶体振荡器作为系统主时钟源。
还可在系统时钟配置为双时钟模式时,选择外接32768Hz晶体振荡器作为系统低频时钟源和RTC时钟源。
外接晶振的实际应用中,晶振两端的对地电容CG/CD是必需的。
用户应使晶振离OSCI/OSCO引脚的距离尽可能短,这样有助于振荡器的起振和振荡的稳定性。
下表是典型频率晶振选用电容CG/CD的推荐值和相应最低起振电压参考值。
晶振频率(Hz)电容CG/CD(pF)最低起振电压(V)
16M 10 2.0
8M 10/20 1.8
4M 10/20 1.8
455K 100/220 1.8
32768 10 1.6
注:因晶振品牌繁多且工艺差异较大,故上表中的参数仅供参考,具体应用请以晶振的实测结果为准。
4.4系统工作模式
芯片支持运行模式和休眠模式2种系统工作模式。
工作模式切入条件系统状态
运行模式系统复位
CPU运行,主时钟源工作休眠模式下,CPU唤醒
休眠模式运行模式下,执行STOP指令CPU暂停,主时钟源停止
注:
1、LEXT为系统低频时钟源时不受工作模式影响,若系统时钟配置为双时钟模式则LEXT将一直工作;
2、系统时钟配置为LIRC单时钟模式时,运行模式下LIRC一直工作,休眠模式下LIRC是否工作由WDT决定;
而系统时钟配置为其他单时钟模式时,无论运行模式还是休眠模式,LIRC是否工作均由WDT决定;
4.5低功耗模式
芯片的低功耗模式即为休眠模式。
执行STOP指令可使系统进入低功耗模式,同时对系统会产生以下影响:
✧CPU停止运行;
✧根据不同模式停止相应时钟源的振荡;
✧RAM内容保持不变;
✧所有的输入输出端口保持原态不变;
✧定时器若其时钟源未停止,则可以保持继续工作;
以下情况可使系统退出低功耗模式:
✧上电复位;
✧外部复位(若有外部复位功能);
✧有WDT溢出(若低功耗模式下WDT保持继续工作);
✧有外部中断请求发生(若有外部中断功能);
✧定时器溢出中断发生(若低功耗模式下定时器保持继续工作);
✧有键盘中断请求发生(若有键盘中断功能);
注:
1、低功耗模式下触发中断请求时,若对应的中断使能位关闭,则不会退出低功耗模式;若对应的中断使能位开启
而中断总使能位关闭,则仅唤醒CPU执行下一条指令;若对应的中断使能位和中断总使能位均开启,则唤醒CPU后执行中断服务程序;
2、未使用或未封出的引脚,应将其对应的I/O端口设置为输出、输入上拉或输入下拉等稳定态,以免因引脚浮空
而产生漏电流或非预期的中断唤醒;
5复位
5.1复位条件
芯片共有如下几种复位方式:
✧上电复位POR;
✧外部复位;
✧低电压复位LVR;
✧WDT看门狗复位;
任何一种复位发生后,系统进入复位状态,执行初始化操作并重置SFR为复位初始值;复位条件解除后,系统退出复位状态,CPU开始重新从程序存储器0000H地址处执行指令。
上电复位POR和低电压复位LVR会关闭系统主时钟振荡器,复位解除后才重新打开振荡器,因为振荡器起振和稳定需要一定的时间,所以系统会保持一定时间的上电延时和振荡等待后才开始工作;而外部复位和WDT复位不会关闭主时钟振荡器,复位解除时系统会在较短的复位延时和振荡等待后即开始工作。
下图是复位产生和系统工作状态之间时序关系的示意图:
系统复位上
电
延
时
振
荡
等
待
系统
运行
电源电压
系统复位复
位
延
时
振
荡
等
待
系统
运行
系统
复位
复
位
延
时
振
荡
等
待
系
统
运
行
系统
复位
上
电
延
时
振
荡
等
待
系统运行
外部复位WDT复位系统时钟系统状态VLVR VPOR
注:若应用系统在上电或掉电回升时芯片的VDD电压上升较慢,则应通过配置字选择较长的上电延时时间,或在复位后进行软件延时,以确保芯片开始工作时VDD已稳定在F CPU对应的工作电压范围内。
5.2上电复位
芯片的上电复位电路可以适应快速、慢速上电的情况,且当芯片上电过程中出现电源电压抖动时均能保证系统可靠的复位。
上电复位过程可以概括为以下几个步骤:
(1)检测系统工作电压,等待电压高于上电复位电压V POR并保持稳定;
(2)若有LVR功能,则需等待电压高于V LVR并保持稳定;
(3)若有外部复位功能,则需等待复位引脚电压高于V ih;
(4)初始化所有寄存器;
(5)开启主时钟振荡器,并等待一段时间以待振荡器稳定;
(6)上电结束,系统开始执行指令。
5.3外部复位
芯片的外部复位功能可通过配置字RSTEN开启,引脚设为外部复位脚即开启外部复位功能,端口的内部上拉电阻自动使能。
外部复位输入端口RST为施密特结构,低电平有效。
当端口输入为高电平时,系统正常运行;输入为低电平时,系统复位。
5.4低电压复位
芯片的低电压复位电压可通过配置字LVRVS选择。
电压检测电路有一定的回滞特性,回滞电压为6%左右(典型值),当电源电压下降至LVR电压时LVR复位有效,反之则电源电压需上升至LVR电压+6%后LVR复位才解除。
5.5看门狗复位
看门狗(WDT)复位是一种对程序正常运行的保护机制。
正常情况下,用户程序需定时对WDT定时器进行清零操作,以保证WDT不溢出。
若出现异常情况,程序未按时对WDT定时器清零,则芯片会因WDT溢出而产生看门狗复位,系统重新初始化,返回受控状态。
注:低功耗模式下CPU暂停工作,若此时有WDT溢出,则仅唤醒CPU而不产生复位。
6I/O端口
6.1通用I/O功能
芯片的输入/输出端口包括一组4位端口P0和一组8位端口P1。
所有I/O端口均支持施密特输入,除P13外的I/O端口均支持推挽输出。
除用作通用数字I/O端口外,部分端口还具有外部中断输入、PWM输出等复用功能。
端口数据寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 P0 - - - - P03D P02D P01D P00D R/W - - - - R/W R/W R/W R/W 初始值- - - - X X X X
BIT[3:0] P0nD– P0n端口数据位(n=3-0)
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 P1 P17D P16D P15D P14D P13D P12D P11D P10D R/W R/W R/W R/W R/W R/W R/W R/W R/W 初始值X X X X X X X X
BIT[7:0] P1nD– P1n端口数据位(n=7-0)
端口方向寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 DDR0 - - - - DDR03 DDR02 DDR01 DDR00 R/W - - - - W W W W 初始值- - - - 1 1 1 1
BIT[3:0] DDR0n– P0n端口方向控制位(n=3-0)
0:端口作为输出口,读端口操作可配置为读取端口数据寄存器值或端口输入电平状态;
1:端口作为输入口,读端口操作将读取端口的输入电平状态;
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 DDR1 DDR17 DDR16 DDR15 DDR14 DDR13 DDR12 DDR11 DDR10 R/W W W W W W W W W 初始值 1 1 1 1 1 1 1 1
BIT[7:0] DDR1n– P1n端口方向控制位(n=7-0)
0:端口作为输出口,读端口操作可配置为读取端口数据寄存器值或端口输入电平状态;
1:端口作为输入口,读端口操作将读取端口的输入电平状态;
注:端口P13配置为单输入口时,DDR13位无效;配置为外部复位输入时,读端口操作的数据不确定。
6.2内部上/下拉电阻
所有端口均有内部上拉或下拉电阻,且均有单独的寄存器位控制其上/下拉电阻在端口处于输入状态时是否有效。
端口处于输出状态时,上/下拉电阻及其控制位无效。
上拉电阻控制寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PUCON P17PU P16PU P15PU P14PU P13PU P12PU P11PU P10PU R/W R/W R/W R/W R/W R/W R/W R/W R/W 初始值 1 1 1 1 1 1 1 1
BIT[7:0] P1nPU– P1n端口上拉电阻控制位(n=7-0)
0:端口内部上拉电阻有效;
1:端口内部上拉电阻无效;
下拉电阻控制寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PDCON - P12PD P11PD P10PD P03PD P02PD P01PD P00PD R/W - R/W R/W R/W R/W R/W R/W R/W 初始值- 1 1 1 1 1 1 1
BIT[6:4] P1nPD– P1n端口下拉电阻控制位(n=2-0)
0:端口内部下拉电阻有效;
1:端口内部下拉电阻无效;
BIT[3:0] P0nPD– P0n端口下拉电阻控制位(n=3-0)
0:端口内部下拉电阻有效;
1:端口内部下拉电阻无效;
6.3端口模式控制
用作数字输出口时,除P13固定为开漏输出外,P1其余端口可选择推挽输出或开漏输出。
端口输出模式寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ODCON P17OD P16OD P15OD P14OD - P12OD P11OD P10OD R/W R/W R/W R/W R/W - R/W R/W R/W 初始值0 0 0 0 - 0 0 0
BIT[7:4,2:0] P1nOD– P1n端口输出模式选择位(n=7-4,2-0)
0:输出时端口为推挽输出;
1:输出时端口为开漏输出;
注:开漏输出口输出高电平时,若端口电压低于VDD电压则会产生漏电流。
7定时器TIMER
7.1看门狗定时器WDT
看门狗定时器WDT的时钟源为内部低频RC振荡器,可通过预分频器选择不同的计数时钟频率。
WDT计数器溢出将复位芯片或唤醒CPU。
可通过配置字WDTM和寄存器位WDTEN共同决定是否开启WDT。
当WDTM选择始终关闭或WDTEN为0时WDT定时器被关闭;当WDTM选择始终开启且WDTEN为1时WDT定时器才开启。
若WDT定时器开启,则在休眠模式下WDT依然工作,溢出时将唤醒CPU;而在CPU运行时WDT溢出,则将复位芯片。
WDT和定时器T0共用一个预分频器,并通过寄存器位决定预分频器的分配。
当预分频器分配给T0时,WDT时钟不分频;而预分频器分配给WDT时,T0时钟不分频。
执行CLRWDT指令或STOP指令将清零WDT计数器,若预分频器分配给WDT,则还将清零预分频计数器(预分频比不变)。
WDT的基本溢出时间(即无预分频的时间)可配置为4.5ms/18ms/72ms/288ms。
注:WDT溢出时间为典型值,实际值偏差大,必须保证清WDT时间小于典型值的1/4。
杂项控制寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 MCR WDTEN EIS LVDF LVDSEL3 LVDSEL2 LVDSEL1 LVDSEL0 LVDEN R/W R/W R/W R/W R/W R/W R/W R/W R/W 初始值 1 0 0 0 0 0 0 0
BIT[7] WDTEN–看门狗使能位
0:关闭WDT;
1:开启WDT;
BIT[6] EIS– INT中断外部输入使能位
0:INT中断外部输入无效,端口用作其他功能;
1:INT中断外部输入有效,端口需设为输入;
BIT[5] LVDF– LVD检测状态标志位
BIT[4:1] LVDSEL[3:0]– LVD电压检测量值选择位
BIT[0] LVDEN–低电压检测LVD使能位
7.2
定时器T0
定时器T0为8位定时/计数器,包含1个8位递增计数器、可编程预分频器、控制寄存器。
✧ 可通过预分频比设置计数频率;
✧ 时钟源可选:F RTC 、F CPU 、外部时钟(TC0输入);
✧ 支持溢出中断和溢出唤醒功能;
分频器
/1
/2/4/128…T0PR
WDTM T0PTA
01
F CPU F LIRC
WDTEN TBS 10
T0PTS
01
F RTC TC0
T0SE T0CNT
T0PTA
10
T0PTA
1
WDTCNT
WDT 溢出
溢出
T0IF
8位定时器T0及WDT 示意图
/2
T0CNT 为8位可读写的递增计数器,计数溢出到0时产生溢出信号并触发中断,中断标志T0IF 将被置1。
预分频器为T0与WDT 共用,通过寄存器位T0PTA 控制预分频器的分配。
T0PTA=0时,预分频器分配给T0使用;T0PTA=1时,预分频器分配给WDT 使用。
不管预分频器是否分配给T0,写T0CNT 都将清零预分频计数器,预分频比保持不变。
T0计数周期 = 预分频比 / T0计数时钟频率。
当系统时钟通过配置字OSCM 配置为双时钟模式时,通过TBS 选择外部32768Hz 低频晶体振荡器时钟F RTC 作为T0时钟,则在低功耗模式下T0将继续工作,溢出可唤醒。
定时器T0控制寄存器
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 T0CR - INTOM T0PTS T0SE T0PTA T0PR2 T0PR1 T0PR0 R/W - R/W R/W R/W R/W R/W R/W R/W 初始值
-
1
1
1
1
1
1
BIT[6]
INTOM – 外部中断INT 触发方式选择位 0: 下降沿触发; 1: 上升沿触发;
BIT[5]
T0PTS – T0时钟源选择位 0: T0时钟源为F CPU ;
1: T0时钟源为TC0输入的外部时钟;
BIT[4]
T0SE – T0外部时钟计数沿选择位 0: 外部时钟上升沿计数; 1: 外部时钟下降沿计数;。