MC30P6030UMAN.docx
《MC30P6030UMAN.docx》由会员分享,可在线阅读,更多相关《MC30P6030UMAN.docx(57页珍藏版)》请在冰豆网上搜索。
MC30P6030UMAN
MC30P6030用户手册
(原产品名MC30P011)
SinoMCU8位单片机
2014/02/17
上海晟矽微电子股份有限公司
ShanghaiSinoMCUMicroelectronicsCo.,Ltd.
MC30P6030用户手册
1产品简介
MC30P6030是一款高性能8位OTP型MCU,内置高精度RC振荡器。
产品的高抗干扰性能为小家电产品提供良好的解决方案。
1.1产品特性
✧8位RISCCPU内核,2T
✧存储器
✓1K*14位程序存储器空间,5级深度硬件堆栈
✓49字节通用数据寄存器空间
✧2组IO口(最多可支持11个通用IO口和1个输入口)
✧低功耗模式,STOP模式功耗小于1uA,RTC模式功耗小于10uA
✧定时器
✓内部自振式看门狗计数器(WDT)
✓1个带有RTC功能8位定时器,可设置溢出中断
✓1个带有PWM/BUZ、自动加载功能8位定时器,可设置溢出中断
✧中断
✓定时器0中断
✓定时器1中断
✓1个外部中断口(可软件设置为上升沿、下降沿触发)
✓8路键盘中断功能
✧振荡器
✓内部28KRC振荡器,用于看门狗计数
✓内部8MRC振荡器,用于系统时钟
✓外部32768低频晶体振荡器,用于系统时钟或RTC
✓外部高频晶体振荡器432KHz-8MHz
✧低电压复位LVR(多级复位电压可选)
✧工作电压
✓1.6-5.5V@(振荡频率432K-1MHz)
✓2.0-5.5V@(振荡频率432K-2MHz)
✓2.2-5.5V@(振荡频率432K-4MHz)
✓2.7-5.5V@(振荡频率432K-8MHz)
✧封装形式:
DIP14、SOP14、DIP8、SOP8、SOT23-6
1.2系统框图
1.3引脚排列
1.4引脚说明
引脚名
I/O
描述
P00-P03
IO
IO,下拉
P10/INT0
IO/I
IO,上下拉,开漏/外部中断输入,TIMER1时钟输入
P11
IO
IO,上下拉,开漏
P12/BUZZ/PWM/TCC
IO/O/O/I
IO,上下拉,开漏/蜂鸣器输出/PWM输出/TIMER0时钟输入
P13/RESETB
I/I/P
输入端口/外部复位端口
P14/OSCO
IO/O
IO,上拉,开漏/振荡器输出
P15/OSCI
IO/I
IO,上拉,开漏/振荡器输入
P16-P17
IO
IO,上拉,开漏
VDD
P
VDD
GND
P
GND
1.5引脚结构示意图
P00-P03:
P10:
P11:
P12:
P13:
P14、P15:
P16、P17:
2中央处理器
2.1指令集
MC30P6030的指令是精简指令集。
下表是指令汇总表。
助记符
说明
操作
周期数
影响
ADDARR
寄存器R内容和ACC相加,结果存到ACC
R+ACC→ACC
1
C,DC,Z
ADDRAR
寄存器R内容和ACC相加,结果存到R
R+ACC→R
1
C,DC,Z
ADCARR
带C标志的加法,结果存到ACC
R+ACC+C→ACC
1
C,DC,Z
ADCRAR
带C标志的加法,结果存到R
R+ACC+C→R
1
C,DC,Z
RSUBARR
寄存器R内容和ACC相减,结果存到ACC
R-ACC→ACC
1
C,DC,Z
RSUBRAR
寄存器R内容和ACC相减,结果存到R
R-ACC→R
1
C,DC,Z
RSBCARR
寄存器R内容和ACC相减(带C标志),结果存到ACC
R-ACC-/C→ACC
1
C,DC,Z
RSBCRAR
寄存器R内容和ACC相减(带C标志),结果存到R
R-ACC-/C→R
1
C,DC,Z
ANDARR
寄存器R内容和ACC与操作,结果存到ACC
RandACC→ACC
1
Z
ANDRAR
寄存器R内容和ACC与操作,结果存到R
RandACC→R
1
Z
ORARR
寄存器R内容和ACC或操作,结果存到ACC
RorACC→ACC
1
Z
ORRAR
寄存器R内容和ACC或操作,结果存到R
RorACC→R
1
Z
XORARR
寄存器R内容和ACC异或操作,结果存到ACC
RxorACC→ACC
1
Z
XORRAR
寄存器R内容和ACC异或操作,结果存到R
RxorACC→R
1
Z
COMARR
对R取反,结果存到ACC
R取反→ACC
1
Z
COMRR
对R取反,结果存到R
R取反→R
1
Z
CLRA
对ACC清零
0→ACC
1
Z
CLRRR
对R清零
0→R
1
Z
RLARR
寄存器R循环左移(带C标志),结果存到ACC
R[7]→C
R[6:
0]→ACC[7:
1]
C→ACC[0]
1
C
RLRR
寄存器R循环左移(带C标志),结果存到R
R[7]→C
R[6:
0]→R[7:
1]
C→R[0]
1
C
RRARR
寄存器R循环右移(带C标志),结果存到ACC
C→ACC[7]
R[7:
1]→ACC[6:
0]
R[0]→C
1
C
RRRR
寄存器R循环右移(带C标志),结果存到R
C→R[7]
R[7:
1]→R[6:
0]
R[0]→C
1
C
SWAPARR
交换R的高低字节,结果存到ACC
R[7:
4]→ACC[3:
0]
R[3:
0]→ACC[7:
4]
1
-
SWAPRR
交换R的高低字节,结果存到R
R[7:
4]→R[3:
0]
R[3:
0]→R[7:
4]
1
-
MOVARR
将R存到ACC
R→ACC
1
Z
MOVRR
将R存到R
R→R
1
Z
MOVRAR
将ACC存到R
ACC→R
1
-
INCARR
R加1,结果存到ACC
R+1→ACC
1
Z
INCRR
R加1,结果存到R
R+1→R
1
Z
DECARR
R减1,结果存到ACC
R-1→ACC
1
Z
DECRR
R减1,结果存到R
R-1→R
1
Z
JZARR
R加1,结果存到ACC;结果为0,则跳过下一条指令
R+1→ACC,结果为0,则PC+2→PC
1或2
-
JZRR
R加1,结果存到R;结果为0,则跳过下一条指令
R+1→R,结果为0,则PC+2→PC
1或2
-
DJZARR
R减1,结果存到ACC;结果为0,则跳过下一条指令
R-1→ACC,结果为0,则PC+2→PC
1或2
-
DJZRR
R减1,结果存到R;结果为0,则跳过下一条指令
R-1→R,结果为0,则PC+2→PC
1或2
-
BCLRR,b
对R的第b位清零
0→R[b]
1
-
BSETR,b
对R的第b位置1
1→R[b]
1
-
JBCLRR,b
如R的第b位为0,则跳过下一条指令
如R[b]=0,则PC+2→PC
1或2
-
JBSETR,b
如R的第b位为1,则跳过下一条指令
如R[b]=1,则PC+2→PC
1或2
-
ADDAIK
立即数K和ACC相加,结果存到ACC
K+ACC→ACC
1
C,DC,Z
ISUBAIK
立即数和ACC相减,结果存到ACC
K-ACC→ACC
1
C,DC,Z
ANDAIK
立即数K和ACC与操作,结果存到ACC
KandACC→ACC
1
Z
ORAIK
立即数K和ACC或操作,结果存到ACC
KorACC→ACC
1
Z
XORAIK
立即数和ACC异或,结果存到ACC
KxorACC→ACC
1
Z
MOVAIK
将立即数存到ACC
K→ACC
1
-
RETAIK
从子程序返回,并将立即数存到ACC
TOS→PC
K→ACC
2
-
RETURN
从子程序返回
TOS→PC
2
-
RETIE
从中断返回
TOS→PC
1→GIE
2
-
CALLK
子程序调用
PC+1→TOS
K→PC
2
-
GOTOK
无条件跳转
K→PC
2
-
NOP
空操作
空操作
1
-
DAA
加法后,将ACC的值调整到十进制
ACC(十六进制)→ACC(十进制)
1
C
DSA
减法后,将ACC的值调整到十进制
ACC(十六进制)→ACC(十进制)
1
-
CLRWDT
清看门狗定时器
0→WDT
1
TO,PD
STOP
进入休眠模式
0→WDT
进入休眠模式
1
TO,PD
2.2程序存储器ROM
MC30P6030的程序存储器是1K*14bits的OTPROM,可用于存放用户程序。
地址范围:
0x0000—0x03ff。
2.3用户数据存储器RAM
MC30P6030的用户数据存储器有49字节(8bits)。
地址列表如下:
地址
Bank0
(可直接寻址或间接寻址)
地址
Bank1
(仅直接寻址)
@00
INDF
@40
保留
@01
T0CNT
@41
T0CR
@02
PCL
@42
保留
@03
STATUS
@43
保留
@04
FSR
@44
保留
@05
P0
@45
DDR0
@06
P1
@46
DDR1
@07
GPR(通用寄存器)
@47
保留
@08
MCR
@48
保留
@09
KBIM
@49
保留
@0A
PCLATH
@4A
保留
@0B
PDCON
@4B
TMCR
@0C
ODCON
@4C
T1CR
@0D
PUCON
@4D
T1CNT
@0E
INTECON
@4E
T1LOAD
@0F
INTFLAG
@4F
T1DATA
@10
~
@3F
GPR(通用寄存器)
直接寻址:
以指令的低7位作为数据存储器地址,例:
MOVAI0x55
MOVRA0x20;把数据0x55的内容写入0x20地址的数据存储器中
间接寻址:
当寄存器访问INDF(0x00地址)时,FSR作为数据存储器地址,例:
MOVAI0x20
MOVRAFSR
MOVAI0x55
MOVRAINDF;把数据0x55的内容写入0x20地址的数据存储器中
注:
间接寻址不可以寻址0x40以上地址空间
2.4堆栈
MC30P6030有5级堆栈深度,当程序响应中断或执行子程序调用指令时CPU会将PC自动压栈;当运行子程序返回指令时,栈顶数据赋予PC
2.5用户配置字OPBIT
用户配置字简称OPBIT是OTP中的一个特殊字节,用于对系统功能进行配置。
OPBIT在烧写用户程序时通过专用烧写器来设置。
MC30P6030的OPBIT定义如下。
地址
BIT13
BIT12
BIT11
BIT10
BIT9
BIT8
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
OPBIT0
1
1
WDTEN
TWDT
FCPU
FINTOSC
MCLRE
VBORS
OPBIT1
CP
OSCM
1
SMTEN
RDPORT
INTOSCCAL
配置字
说明
VBORS
低电压复位点选择
000:
1.5V001:
1.8V010:
2.0V011:
2.2V
100:
2.4V101:
2.6V010:
3.0V111:
3.6V
MCLRE
外部复位使能
1:
使能外部复位功能
0:
屏蔽外部复位功能,管脚复用为输入脚
FINTOSC
内部RC振荡器频率选择
111:
8M110:
4M101:
2M100:
1M
010:
444K
FCPU(默认为0)
1-4T0-2T
TWDT
看门狗溢出时间及上电复位时间选择
111:
PWRT=TWDT(noPrescaler)=18ms
110:
PWRT=TWDT(noPrescaler)=4.5ms
101:
PWRT=TWDT(noPrescaler)=288ms
100:
PWRT=TWDT(noPrescaler)=72ms
011:
PWRT=140us;TWDT(noPrescaler)=18ms
010:
PWRT=140us;TWDT(noPrescaler)=4.5ms
001:
PWRT=140us;TWDT(noPrescaler)=288ms
000:
PWRT=140us;TWDT(noPrescaler)=72m
WDTE
WDT使能
1:
使能WDT0:
关闭WDT
RDPORT(默认为0)
1:
OutputPortReadFromPin
0:
OutputPortReadFromRegister
SMTEN(默认为1)
1:
InputPortSMT功能
0:
InputPortSMT功能屏蔽
OSCM
振荡器模式选择
11:
内部高频RC振荡器&RTC模式10:
内部高频RC振荡器
01:
高频晶体振荡器模式00:
低频晶体振荡器模式
CP
代码保护使能
1:
屏蔽代码保护功能0:
使能代码保护功能
2.6控制寄存器
MC30P6030的全部控制寄存器列在下表中,具体功能详见各功能模块的说明。
地址
助记符
R/W
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
初始值
00h
INDF
R/W
INDF0
INDF0
INDF0
INDF0
INDF0
INDF0
INDF0
INDF0
xxxxxxxx
01h
T0CNT
R/W
T0C7
T0C6
T0C5
T0C4
T0C3
T0C2
T0C1
T0C0
xxxxxxxx
02h
PCL
R/W
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
--000000
03h
STATUS
R/W
RST
-
-
TO
PD
Z
DC
C
0–11xxx
04h
FSR
R/W
-
-
FSR5
FSR4
FSR3
FSR2
FSR1
FSR0
--000000
05h
P0
R/W
-
-
-
-
P03D
P02D
R01D
P00D
----0000
06h
P1
R/W
P17D
P16D
R15D
P14D
-
P12D
R11D
P10D
0000-000
07h
GPR
R/W
xxxxxxxx
08h
MCR
R/W
WDTEN
EIS
-
-
-
-
-
-
00000000
09h
KBIM
R/W
KBIM7
KBIM6
KBIM5
KBIM4
KBIM3
KBIM2
KBIM1
KBIM0
00000000
0Ah
PCLATH
R/W
-
-
-
-
-
-
PCH1
PCH0
------00
0Bh
PDCON
R/W
-
P12PD
P11PD
P10PD
P03PD
P02PD
P01PD
P00PD
-1111111
0Ch
ODCON
R/W
P17OD
P16OD
P15OD
P14OD
-
P12OD
P11OD
P10OD
----0000
0Dh
PUCON
R/W
P17PU
P16PU
P15PU
P14PU
-
P12PU
P11PU
P10PU
1111-111
0Eh
INTECON
R/W
GIE
-
-
-
-
INT0IE
KBIE
T0IE
0----000
0Fh
INTFLAG
R/W
-
-
-
-
-
INT0IF
KBIF
T0IF
-----000
41h
T0CR
R/W
-
INT0M
T0PTS
T0SE
T0PTA
T0PR2
T0PR1
T0PR0
-0000000
45h
DDR0
R/W
-
-
-
-
DDR03
DDR02
DDR01
DDR00
----1111
46h
DDR1
R/W
DDR17
DDR16
DDR15
DDR14
-
DDR12
DDR11
DDR10
1111-111
4Bh
TMCR
R/W
TBS
-
-
-
-
-
T1IE
T1IF
0-----00
4Ch
T1CR
R/W
TMR1EN
PWMOUT
BUZOUT
T1PTS1
T1PTS0
T1PR2
T1PR1
T1PR0
00000000
4Dh
T1CNT
R/W
T1C7
T1C6
T1C5
T1C4
T1C3
T1C2
T1C1
T1C0
00000000
4Eh
T1LOAD
R/W
T1LOAD7
T1LOAD6
T1LOAD5
T1LOAD4
T1LOAD3
T1LOAD2
T1LOAD1
T1LOAD0
11111111
4Fh
T1DATA
R/W
T1DATA7
T1DATA6
T1DATA5
T1DATA4
T1DATA3
T1DATA2
T1DATA1
T1DATA0
00000000
注:
1.07H为用户通用寄存器。
2.“-”表示保留BIT
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
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]INDFn–间接寻址寄存器
INDF:
INDF不是物理寄存器,对INDF的寻址时间上是对FSR指向的地址进行访问,从而实现间接寻址模式,
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
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
初始值
1
1
1
1
1
1
1
1
BIT[7:
0]PCn–程序指针计数器低8位
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
PCLATH
-
-
-
-
-
-
PCH1
PCH0
R/W
-
-
-
-
-
-
R/W
R/W
初始值
-
-
-
-
-
-
0
0
BIT[7:
0]PCHn–程序指针高2位缓冲器n=1-0
程序指针计数器(PC)有以下几种操作模式
顺序运行指令:
PC=PC+1
分支指令GOTO/CALL:
PC=INST[9:
0](指令码低10位)
子程序返回指令RETIE/RETURN/RETAI:
PC=TOS(堆栈栈顶)
对PCL操作指令:
PC={PCLATH[1:
0],ALU[7:
0](ALU运算结果)}
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
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唤醒源标志
1:
芯片通过P1变化唤醒
0:
芯片通过其它唤醒源唤醒
BIT[6:
5]未用
BIT[4]TO看门狗溢出标志
1:
上电复位,执行CLRWDT或STOP指令
0:
发生WDT溢出
BIT[3]PD进入低功耗休眠模式标志
1:
上电复位,执行CLRWDT
0:
执行STOP指令
BIT[2]Z零标志
1:
算术或逻辑运算的结果为零
0:
算术或逻辑运算的结果不为零
BIT[1]DC半进位标志
1:
加法运算时低四位有进位/减法运算时没有向高四位借位
0:
加法运算时低四位没有进位/减法运算时有向高四位借位
BIT[0]C进位标志
1:
加法运算时有进位/减法运算时没有借位发生/移位后移出逻辑1
0:
加法运算时没有进位/减法运算时有借位发生/移位后移出逻辑0
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
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
X
X
X
X
X
X
BIT[7:
6]无效
BIT[5:
0]FSRn–间接选址数据指针
3系统时钟
由外接晶体振荡器或内置高精度RC电路(由OPBIT的OSCS[2:
0]配置)产生的振荡时钟信号Fosc经2分频后产生系统主时钟Fsys。
另有一个低速RC振荡器专供WDT(看门狗)电路使用。
当选择内部高频振荡器&RTC模式时,系统使能内部高频RC振荡器作为主时钟,外部32768晶体振荡器可用作定时器0的计数时钟源
3.1外接晶振
外部晶体有外接高频和外接低频两种振荡工作模式,连接方式见下图。
高频晶体可选用432KHz~8MHz,低频一般是接32768时钟晶体,通常Cx是必须的。
在实际使用中,用户应使晶体离OSCI、OSCO引脚的距离尽可能短,这样有助于振荡器的起振和振荡的稳定性。
下表列出几种典型频率晶振选用电容Cx的推荐值。
晶体频率
电容Cx
8MHz
15p
4MHz
15p/30p
3.64MHz
15p/3