2024年1月17日发(作者:)

CMS中微半导体 CMS16P55/16P53/16P509

16P509/53/55功能说明

特点:

●工作电压范围:2.1—5.5V ●内置低压帧测电路LVR

●7位RAM寻址空间(00:7F) ●内置集成RC振荡器

●56个通用RAM ●程序可控(写RAM)上拉电阻

●1K ROM ●四种振荡模式:外部RC,XT,LVXT,内部●程序及RAM不必分页 ●WDT保护功能(强制使能)

●内置2路高精度比较器 ●P0口按键唤醒(复位)

●最多13个I/O口+1个输入口 ●16P53与ELAN153脚位兼容

一、 管脚说明

1、

脚位分布

1.05元/片 0.95元/片

第 1 页 共11页

RC

CMS中微半导体 CMS16P55/16P53/16P509

2、

管脚说明

类型 管脚说明

双向输入/输出口。输入/输出模式由控制寄存器P0CON(P0 控制寄存器:位选择)决定。每一位可设置上拉电阻选项. 每一位可设置为唤醒输入。P0.0和P0.1可由软件设为内置比较器0的输入端。P0.2也可作为外部时钟输入口使用

芯片复位口。可由掩模选项设置为输入口

振荡输入和输出口,可由掩模选项设置为双向输入/输出口。输入/输出模式由控制寄存器P0CON(P0 控制寄存器:位选择)决定。

8 位双向输入/输出口。输入/输出模式由控制寄存器P1CON(P1 控制寄存器:位选择)决定。每一位可设置上拉电阻选项.P1.0和P1.1可由软件设为内置比较器1的输入端

芯片的正电源

芯片的负电源,接参考地。

管脚名称

P0.0 /COMP0-

P0.1 /COMP0+

P0.2 /RTCC

P0.3

P0.4/RES

P0.6/OSCIN

P0.5/OSCOUT

P1.0 /COMP1-

P1.1 /COMP1+

P1.2~P1.6

VDD

GND

I/O

I

I/O

I/O

极限参数

电源供应电压………….VSS-0.3V~VSS+6.0V

端口输入电压………….VSS-0.3V~VDD+0.3V

IOL

总电流…………. ………. …150mA IOH

总消耗电流………. ………. ……500mW

储存温度………….-50℃~125℃

工作温度………….-40℃~85℃

总电流…………. …. -100mA

注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,

而且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。

三.程序存储器

16PXX可以对 1024 x 16 程序存储空间进行寻址。 访问物理实现的地址之外的单元会导致循环返回到有效地址空间。 复位向量单元处的 NOP 指令会导致重新从单元 000h 开 始执行指令。 16PXX的复位向量地址为 3FFh。

堆栈寄存器 — STACK

堆栈寄存器是特殊的存储器空间,用来保存PC 的值。16PXX有6 层堆栈,堆栈寄存器既不是数据存储器的一部分,也不是程序存储器的一部分,而且它既不能读出,也不能写入。堆栈的使用是通过堆栈指针(SP)来实现的,堆栈指针也不能读出或写入。当发生子程序调用时,程序计数器(PC)的值会被压入堆栈;在子程序调用结束时(执行指令RET),堆栈将原先压入堆栈的内容弹出,重新装入程序计数器中。在系统复位后,堆栈指针会指向堆栈顶部。如果堆栈已满,并且发生了子程序调用,那么堆栈会发生溢出,首先进入堆栈的内容将会丢失,只有最后的2个返回地址会被保留。

第 2 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

四.数据存储器

16Pxx 有两组RAM,他们的地址空间是不一样的,访问方法也不一样。这点用户编程时尤其要注意。

第一组为特别寄存器(SR),寻址空间为[0:F]共16个。SR只能写不能读,必须用专用指令(WRSR)来访问。

第二组为一般寄存器,寻址空间为[00:7F]共128个,(其中地址20~2FH,40~4FH,60~6FH,70~7FH的RAM不能使用)可以使用WRSR之外的指令访问。

1.特别功能寄存器(SR)

地址

0

1

2

3,4

5

6

7-F

名称

ACC

-----

PRESCALE

-----

P0CON

P1CON

-----

功能说明

工作累加寄存器

未使用

预分频器

未使用

P0端口方向控制寄存器

P1端口方向控制寄存器

未使用

备注

禁止访问

禁止访问

禁止访问

⑴. 累加器累加器(ACC)

ACC与算术逻辑单元(ALU)有密切关系。存储器之间的数据传送必须经过累加器。

⑵.预分频器—PRESCALE

预分频器(PRESCALE)寄存器是 6 位宽,只可写的寄存器,它包含各种用于配置 TMR/WDT 预分频器和 TMR 的 控制位。 通过执行 WRSR PRESCALE指令可将累加寄存器的内容传送到预分频器。复位将把预分频器(PRESCALE)<5:0> 位置 1

名称

说明

7

---

6

----

5

TCS

4

TCE

3

PSA

2

PS2

1

PS1

0

PS0

bit 7-6 未用

bit 5 TCS:TMR 时钟源选择位

1 = RTCC 引脚上的跳变信号作为时钟源

0 = 内部指令周期时钟 (CLKOUT)作为时钟源

bit 4 TCE:TMR 时钟源边沿选择位

1 = 在 T0CKI 引脚电平的下降沿递增

0 = 在 T0CKI 引脚电平的上升沿递增

bit 3 PSA:预分频器分配位

1 = 预分频器分配给 WDT

0 = 预分频器分配给 TMR

bit 2-0 PS<2:0>:预分频比选择位,见下表

PS[2:0] 000 001

2

4

010

4

8

011

8

16

100

16

32

101

32

64

110

64

128

111

128

256

WDT分频比 1

TMR分频比 2

第 3 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

⑶.I/O口方向控制器

P0CON,P1CON分别控制P0,P1,的输入输出状态

2.一般寄存器

地址

00H

01H

02H

03H

04H

05H

06H

07H

08H-0FH

10H—1FH

20H---2FH

30H---3FH

40H---4FH

50H---5FH

60H---6FH

70H---7FH

名称

IAR

TMR

PCL

FLAGS

MP

P0

P1

COMPCON

USER DEFINE

USER DEFINE

UNUSE

USER DEFINE

UNUSE

USER DEFINE

UNUSE

UNUSE

说明

间接寻址寄存器

内部定时/计数器

程序指针PC低8位

系统状态标志寄存器

间接寻址指针

P0 IO口数据寄存器

P1 IO口数据寄存器

比较器及上拉电阻控制寄存器

用户自由操作的通用RAM

用户自由操作的通用RAM

禁止用户使用

用户自由操作的通用RAM

禁止用户使用

用户自由操作的通用RAM

禁止用户使用

禁止用户使用

⑴.

间接数据寻址; IAR 和 MP 寄存器

MP寄存器不是物理寄存器。 寻址IAR实际上是寻址 地址包含在 MP 寄存器中的寄存器(MP

是一个指 针)。 这是间接寻址。间接读 IAR 本身 (MP = 0)将返回 00h。 间接写 IAR 寄存器将导致不执行任何操作(虽然状态寄存器 中的几位将受到影响)。 使用间接寻址清10-1F,30-3F,50-5F,70-7F RAM如下例:

LDIA H’0F’

LD A, MP

LOOP:

INCR MP

SETB MP, 4

CLR IAR

SZINCA MP

JP LOOP

EXIT:

⑵.

状态寄存器

此寄存器包含 ALU 的算术状态。 状态寄存器和任何其他寄存器一样,可以作为任何指令

的目标寄存器。如果一条影响 Z、 HC 或 C 位的指令的 目标寄存器是状态寄存器,则会禁止对这 3 位进行写操 作。根据器件逻辑,这些位会被置 1 或清零。 而且,TF 和 PF 位是不可写的。所以当执行一条把状态寄存器作 为目标寄存器的指令后,状态寄存器的结果可能和预想 的不一样。例如, CLR FLAGS 将把高三位清零并将 Z 位置 1。 这将把状态寄存器变为 000u u1uu(其中 u = 不变)。 因此,建议仅使用 CLRB、SETB、 LD 和 SWAPA 指令 来改

第 4 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

变状态寄存器,因为这些指令不会影响状态存器中 的 Z、 DC 或 C 位。 欲知其他影响状态位的指令,请参见 “指令集综述”。

B7

B6 B5 TF PF Z HC C

B[7:5]----未作定义

B[4]------- TF:超时位

1 = 上电或执行了 CLRWDT 或 SLEEP 指令

0 = 发生了 WDT 超时

B[3]------- PF: 低功耗标志,

1 = 上电或执行了 CLRWDT 指令

0 = 执行了 SLEEP 指令

B[2]-------Z : 结果为“0”标志位

B[1]-------HC: 半字节进位标志

B[0]-------C 进位标志

C

C

ADD

1 = 发生进位

0 = 未发生进位

SUB

0 = 发生借位

RRC 或 RLC

1 = 未发生借位 分别装载最低位或最高位

⑶.

程序计数器

在指令被执行后,程序计数器 (PCL)将包含将要执行 的下一条指令的地址。 PC 值在每个指令周期加一,除 非该指令更改了 PC 值。

在复位时 PCL 被置为全 1,这意味着 PC 将寻址最后一 页中的最后一个单元 (即复位向量)。

五. 输入输出口

同其他一般寄存器一样, I/O 寄存器也可以在程序控制下进 行读写。在复位时,所 有

I/O 端口都被定义为输入 (输入呈现高阻态),因为 I/O 控制寄存器(P0CON和P1CON)都被置 1.

16PXX最多有13个I/O口+1个输入口。记为P0、P1,其分别对应RAM 地址05H和06H。

05:P0

B7

B6 B5 B4 B3 B2 B1 B0

B[7]---------- 未用,读出来永远为“0” ;

B[6]---------- 与OSCOUT复用,当OSC选择INTRC时,自动为I/O口,当OSC选择其它时,自动为振荡口;

B[5]---------- 与OSCIN复用,当OSC选择INTRC时,自动为I/O口,当OSC选择其它时,,自动为振荡口;

B[4]---------- 与复位口复用,只能输入;当LVR选择EN,自动为输入口,当LVR选择DIS,自动为复位功能口;

B[3:2]--------- 普通双向I/O口.

B[1]---------- 普通双向I/O口,与比较器“+”端共用一个引脚。

B[0]---------- 普通双向I/O口,与比较器“-”端共用一个引脚。

P0 的B[3:0]都具有唤醒系统的能力。

第 5 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

06:P1

0 B6 B5 B4 B3 B2 B1 B0

B[7]------------未用,读出来永远为“0”

B[6:2]----------普通双向I/O口.

B[1]------------普通双向I/O口,与比较器“+”端共用一个引脚。

B[0]------------普通双向I/O口,与比较器“-”端共用一个引脚。

P0,P1,口可以由软件设置上拉电阻。可通过将寄存器COMPCON的bit0,bit1置1设置为上拉电阻有效。

建议用软件将未使用和没有外接的输入/输出口设置为输出模式,以防止这些端口在输入浮空时增加系统的功耗

六. TMR 模块和 TMR 寄存器

TMR 模块具有如下特性: 1. 8 位定时器 / 计数器寄存器 可读写 3. 软件可编程的 8 位预分频器 4. 内部或外部时钟选择。 通过清零 TCS 位 (PRESCALE<5>)选择定时器模式。 在定时器模式下,TMR 模块在每个指令周期都会递增 (不使用预分频器)。 如果对TMR寄存器执行写操作, 在接下来的两个指令周期禁止递增。 用户可通过将校正值写入 TMR

寄存器来避开这个问 题。

通过将 TCS 位 (PRESCALE <5>)置 1 来选择计数器模 式。 在此模式下, TMR 会在

RTCC引脚的每个上升 沿和下降沿递增。具体的计数沿由时钟源边沿选择位 TCE(PRESCALE

<4>)决定。 通过清零 TCE 位来选择 上升沿。

8位计数器可分别被用作TMR模块的预分频器和看门 狗定时器(WDT)的后分频器。为简化起见,在本数据手册中将它们统称为预分频器。 注意,TMR 模块和看门狗定时器中只有一个 可以使用预分频器,两者不能同时使用预分频器。 因此,如果预分频器分配给 TMR 模块,看门狗定时器 就没有预分频器可用了,反之亦然。如果预分频器分配给TMR 模块,所有写入 TMR 寄存器的指令都会使预分频器清零。 如果分配给看门狗定时器,CLRWDT 指令将使该预分频器和看门狗定时器同时清零。

预分频器的分配完全由软件控制,即可以在程序执行期 间随时更改。为避免器件意外复位,请在将预分频器从分配给 TMR切换为分配给WDT 时,务必执行以下序 列

CLRWDT ;Clear WDT

CLRF TMR ;Clear TMR0 & ;Prescaler

LDIA B'00xx1111’ ;Last 3 instructions ;in this example

WRSR PRESCALE ;are required only if desired

CLRWDT ;PS<2:0> are 000 or 001

LDIA B'00xx1xxx’ ;Set Prescaler to desired WDT rate

WRSR PRESCALE

要将预分频器从分配给 WDT 切换为分配给 Timer0 模 块,请执行例 7-2 中给出的序列。 即便 WDT 被禁用也 要执行该序列。 切换预分频器前要执行 CLRWDT 指令

CLRWDT

LDIA

WRSR

;Clear WDT and prescaler

B'00xx1111’;Select TMR, new prescale value and clock source

PRESCALE

第 6 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

七. 比较器

16PXX提供两路比较器,COMP0及COMP1,可由COMPCON(0DH)选择是否打开比较器功能

07:COMPCON (复位值:00H)

B7 B6 B5 B4 B3 B2 B1 B0

B[7] ------ 没有特殊功能,用户可以对其进行位操作;

B[6] ------ 比较器1的“+”端选择,

0-- 比较器1的“+”端接到GND,

1-- 比较器1的“+”端接到P1.1;

B[5] ------ 比较器1的使能控制,

0-- 比较器1 关闭,P1.0,P1.1为普通IO口;

1-- 比较器1 工作,P1.0为比较器“-”端输入;

B[4] ------ 比较器0的“+”端选择,

0-- 比较器0的“+”端接到GND,

1-- 比较器0的“+”端接到P0.1;

B[3] ------ 比较器0的使能控制,

0-- 比较器0 关闭,P0.0,P0.1为普通IO口;

1-- 比较器0 工作,P0.0为比较器“-”端输入;

B[2] ------ 未使用

B[1] ------ P1口的上拉电阻选择,

0-- 上拉电阻无效,

1-- 上拉电阻有效;

B[0] ------ P0口的上拉电阻选择,

0-- 上拉电阻无效,

1-- 上拉电阻有效;

1、 COMP0

(1)、输入输出端口说明:

“-”端 ----- 对应于IO口P0.0,

“+”端 ----- 对应于IO口P0.1或内部短路到地,

“输出”端 -- 对应于[05H].0 即 P0.0。

(2)、控制说明:

① 使能控制-- COMPCON[07H].3=1打开比较器

COMPCON[07H].3=0关闭比较器

②“-”端 -- 只要COMPCON[07H].3=1,P0.0自动设为比较器输入口,否则为普通IO口

③“+”端 -- 只要COMPCON[07H].[4:3]=11,P0.1自动设为比较器“+”端输入口,COMPCON[07H].[4:3]=01,比较器“+”端连接到内部地。

④“输出”端 -- 与P0.0复用。

(3)、程序流程:

① 设置COMPCON.3=1,( 如果需要正端输入则设置 COMPCON.4=1)

② 等待比较稳定

③ 读取比较结果[05H].0

④ 设置COMPCON.3=0 ,关闭比较器。

第 7 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

示例:

SETB

SETB

NOP

SZB

JP

N_LT_P:

.JP

P_LT_N:

EXIT:

CLRB

CLRB

COMPCON, 3;

COMPCON, 4

;等待信号稳定

P0, 0 ;判断比较结果

P_LT_N

EXIT

COMPCON, 3 ;关闭比较器0模块

COMPCON, 4

2、 COMP1

(1)、输入输出端口说明:

“-”端 ----- 对应于IO口P1.0,

“+”端 ----- 对应于IO口P1.1或内部短路到地,

“输出”端 -- 对应于[06H].0 即 P1.0。

(2)、控制说明:

① 使能控制-- COMPCON[07H].5=1打开比较器

COMPCON[07H].5=0关闭比较器

②“-”端 -- 只要COMPCON[07H].5=1,P1.0自动设为比较器输入口,否则为普通IO口

③“+”端 -- 只要COMPCON[07H].[6:5]=11,P1.1自动设为比较器“+”端输入口,COMPCON[07H].[6:5]=01,比较器“+”端连接到内部地。

④“输出”端 -- 与P1.0复用。

(3)、程序流程:

① 设置COMPCON.5=1,( 如果需要正端输入则设置 COMPCON.6=1)

② 等待比较稳定

③ 读取比较结果[06H].0

④ 设置COMPCON.5=0 ,关闭比较器。

八. 看门狗定时器

看门狗定时器(WDT)是自由运行的片上 RC 振荡器, 它不需要任何外部组件。 此 RC 振荡器与 OSC1/CLKIN 引脚上的 RC 振荡器是分开的。 这意味着即使 OSC1/ CLKIN 和

OSC2/CLKOUT 引脚上的时钟被停止(例如, 通过执行 SLEEP 指令)WDT 也将继续运行。在正常工 作或休眠过程中, WDT 复位或唤醒复位都会导致器件复位。 在看门狗定时器复位时,TF 位(FLAGS<4>)将被清零.

16PXX芯片系列中WDT被设置为一直起作用。

第 8 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

九. 休眠模式

通过执行STOP指令可进入掉电模式。 使能时,看门狗定时器将被清零,但是仍然保持运行, TF 位(FLAGS<4>)被置 1,PF位(FLAGS<3>) 被清零并且关闭振荡器驱动器。 I/O 端口将保持 STOP 指令执行之前的状态 (驱动为高电平、低电平或高阻 态)。 应该注意 WDT 超时溢出所产生的复位不会将 RES/ VPP 引脚驱动为低电平。

可以通过下列任一事件将器件从休眠状态唤醒: 引脚上的外部复位输入。 2. 看

门 狗 定 时 器 超 时 溢 出 复 位。P0口线上电平的下降沿这两种事件都会导致器件复位。

可以使用 TO 和 PD 位 来确定器件复位的原因。 如果发生 WDT 超时溢出 (并 导致唤醒),

TO 将被清零。 PD 在上电时置 1,在调用 SLEEP 指令时清零。 当器件从休眠模式唤醒时,不管唤醒源是哪个,WDT 都 会清零。另外P0口线上电平的下降沿也会唤醒器件,从复位地址开始执行程序;

十. 振荡方式

16PXX器件可以在四种不同的振荡模式下工作。用户可以对两个配置位进行编程来在 4 种模式中进行选择:

EXTRC: 外部RC

XT: 晶振

LXT: 低压晶振

INTRC: 内部晶振

在内部晶振模式下,两个振荡口可作为双向I/O口使用

十一. 烧写选择项

1.振荡方式

EXTRC: 外部RC

XT: 晶振

LXT: 低压晶振

INTRC: 内部晶振

代码加密或不加密

3.复位时间:18mS, 9mS, 2.2mS, 560uS

: 低压侦测电路:使能或禁止;LVR使能则RES口可以做输入口使用

5.WDT:在芯片内部WDT是强制使能的

第 9 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

十二.

助记符

条件转移

SZB R, b

SNZB R, b

SZDECA R

SZDECR R

SZINCA R

SZINCR R

无条件转移

JP addr

CALL addr

RET i

数据传送

LD R,A

LD R,A

LD R

LDIA i

数学运算

ADDA R

ADDR R

SUBA R

SUBR R

INCA R

INCR R

DECA R

DECR R

逻辑运算

ANDA R

ANDR R

ANDIA i

ORA R

ORR R

Logical AND, The result save in ACC

[R] ∩ ACC ACC

Logical AND, The result save in

[R] ∩ ACC R

Register

Logical AND ACC and Immediate

Logical OR, The result save in ACC

i ∩ ACC ACC

[R] ∪ ACC ACC

1

1

1

1

1

Z

Z

Z

Z

Z

Add , The result save in ACC

Add, The result save in Register

Subtract, The result save in ACC

Subtract, The result save in Register

Increment, The result save in ACC

Decrement, The result save in ACC

[R]+ACCACC

[R]+ACCR

[R]-ACCACC

[R]-ACCR

[R]+1ACC

[R]-1ACC

1

1

1

1

1

1

1

1

C,HC,Z

C,HC,Z

C,HC,Z

C,HC,Z

Z

Z

Z

Z

Load Data From ACC to Register

Load Data From Register to ACC

Load Data From Register to Register

Load Immediate to ACC

ACC  R

[R] ACC

[R] R

iACC

1

1

1

1

---

Z

Z

---

Jump

Call Procedure

Return, place immediate to ACC

addr  PC

+1 Stack;

 PC

1.i ACC;

 PC

2

2

2

---

---

---

Skip if Zero

Skip if Not Zero

Skip next instruction if R.b=0

Skip next instruction if R.b=1

1or2

1or2

1or2

1or2

1or2

1or2

---

---

---

---

---

---

指令综述

涵义 操作 周期 标志位

Skip if Zero After Decrement,The 1. [R]-1ACC

result save in ACC next instruction if [R]-1=0

Skip if Zero After Decrement, The 1. [R]-1R

result save in Register next instruction if [R]-1=0

Skip if Zero After Increment, The 1. [R]+1ACC

result save in ACC next instruction if [R]+1=0

Skip if Zero After Increment, The 1. [R]+1R

result save in Register next instruction if [R]+1=0

Increment, The result save in Register [R]+1R

Decrement, The result save in [R]-1R

Register

Logical OR, The result save in

[R] ∪ ACC R

Register

第 10 页 共11页

CMS中微半导体 CMS16P55/16P53/16P509

ORIA i

XORA R

XORR R

XORIA i

COMA R

COMR R

移位操作

RLCA R

RLCR R

RRCA R

RRCR R

SWAPA R

SWAPR R

位操作

CLRB R,b

SETB R,b

其它指令

NOP

STOP

CLRWDT

WRSR SR

CLRA

CLR R

Logical OR ACC and Immediate

i ∪ ACC ACC

1

1

1

1

1

1

Z

Z

Z

Z

Z

Z

Logical Exclusive OR, The result

[R] ⊕ ACC ACC

save in ACC

Logical Exclusive OR, The result

[R] ⊕ ACC R

save in Register

Exclusive OR ACC and Immediate

Complement, The result save in ACC

i ⊕ ACC ACC

NOT [R]ACC

Complement, The result save in NOT [R]R

Register

Rotate Left Through Carry, The result 1. CR.0, R.(n+1)R.(n),CR.7

save in ACC 2. [R]ACC

Rotate Left Through Carry, The result 1. CR.0, R.(n+1)R.(n),CR.7

save in Register 2. [R]R

Rotate Right Through Carry, The 1. CR.7, R.(n+1)R.(n),R.0C

result save in ACC 2. [R]ACC

Rotate Right Through Carry, The 1. CR.7, R.(n+1)R.(n),R.0C

result save in Register 2. [R]R

Swap halves register, The result save 1.R.(3:0) R.(7:4);

in ACC 2.[R]ACC

Swap halves register, The result save 1.R.(3:0) R.(7:4);

in Register 2.[R]R

Clear Bit

Set Bit

No Operation

Stop Operation

Clear Watchdog Timer

Write Special Register

Clear ACC

Clear Register

0  R.(b)

1  R.(b)

None

Stop OSC

0WDT

ACC  SR

00  ACC

00  R

1

1

1

1

1

1

C

C

C

C

---

---

1

1

1

1

1

1

1

1

---

---

---

TF,PF

TF,PF

---

Z

Z

第 11 页 共11页