0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
CMS89F5521

CMS89F5521

  • 厂商:

    CMSEMICON(中微)

  • 封装:

    SOP-8

  • 描述:

    CMS89F5521

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

很抱歉,暂时无法提供与“CMS89F5521”相匹配的价格&库存,您可以联系我们找货

免费人工找货