找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9592|回复: 3
打印 上一主题 下一主题
收起左侧

东软(海尔MCU)HR7P153数据手册和运用笔记及源码资料下载

[复制链接]
跳转到指定楼层
楼主
HR7P153单片机pdf格式数据手册资料和运用笔记分享给大家

HR7P153引脚图:


注 1: MRSTN 表示低电平复位有效;
注 2: 如果产品封装引脚数小于最大引脚数,则未引出的和未使用的 I/O 管脚都需设置为输出低电平。否则芯片功
耗可能会出现异常, 芯片工作稳定性也容易因外界干扰而降低。
注 4:用户系统必须保证 VPP 管脚电压低于芯片电源电压 VDD,否则芯片可能进入异常工作模式。如果该管脚上
电压存在过冲,则用户系统必须限制该脉冲的电压不高于 VDD+0.5V,脉冲宽度不超过 100us。



2. 1 CPU内核概述
内核特性
- 高性能哈佛型 RISC CPU 内核
- 79 条精简指令
- 系统时钟工作频率最高为 20MHz
- 机器周期为 2 个系统时钟周期
- 支持中断处理,共 12 个中断源
2. 2 系统时钟和机器周期
系统时钟频率(Fosc)最高支持 20MHz。两个系统时钟周期通过片内时钟生成器产生两个不重叠的正交时钟 phase1(p1),phase2(p2)。两个不重叠的正交时钟周期组成一个机器周期。若系统时钟频率为 4MHz,一个机器周期的时
间为 500ns。
2. 3 指令集概述
采用 HR7P 系列 79 条精简指令集系统。
除部分条件跳转与控制程序流程的指令为双(机器)周期指令外,其他指令均为单(机器)周期指令。具体指令集请参考《附录 1 指令集》。

2. 4 特殊功能寄存器
CPU 相关寄存器包括 11-bit 程序计数器 PCRL/PCRH,程序状态字寄存器 PSW 和累加器 A 寄存器 AREG。其中程序状态寄存器 PSW 用于存放各个状态标志位,包括程序出栈/压栈溢出、负数标志位、溢出标志位、零标志位、半进位/半借位标志位,以及全进位或全借位标志位等。



注 1:仅部分指令可对 PSW 寄存器进行写操作,包括 JDEC、JINC、SWAP、BCC、BSS、BTT、MOVA 和 SETR。其它指令对 PSW 寄存器的写操作,只根据运行结果影响相应状态标志位。
注 2:OF 和 UF 位为只读标志位,仅上电复位、复位指令和 MRSTN 复位会将其清零,其他复位不影响该两位标志位。

3. 1 概述
本芯片采用哈佛总线架构,程序寻址空间和数据寻址空间相互独立。
片内存储器资源包括:
2K Words OTP 程序存储器;
64 字节 SRAM
其中 OTP 程序存储器被映射到程序寻址空间,SRAM 数据存储器被映射到数据寻址空间。

3. 2 程序存储器
3. 2. 1 概述
OTP 程序存储器用于存储用户程序。由于芯片指令位宽为 16 位(2 个字节),因此 2K Words
OTP 程序存储器被映射到程序寻址空间为 000H~7FFH,其中 7E0H~7FFH 为保留区。每个访问地址对应 16 位宽(2 个字节)的存储单元。通过 11 位程序计数器 PC 进行程序寻址访问。复位向量位于 000H,中断向量入口地址位于 004H,支持 8 级硬件堆栈。



3. 2. 3 程序计数器(PC)
程序计数器中存放的是要执行的下一条指令的地址。PC 在每个指令周期后都会自动加 1,除非 PC 的值被指令或中断异常改写。11 位程序计数器 PC<10:0>,无实际物理地址,不可读写,可寻址 2K 程序存储空间 000H ~ 7FFH,超出地址范围会导致 PC 循环(又从 000H 开始访问)。

PC<7:0>可通过 PCRL 寄存器的读/写操作进行读/写,而 PC<10:8>通过 PCRH 寄存器来间接(如 RCALL、CALL、GOTO 等指令)赋值。
芯片复位时,PCRL、PCRH 和 PC 都会被清零。PC 硬件堆栈操作不会影响 PCRH 的值。

注:各种指令对 PC 的影响:
1. 通过指令直接修改 PC 值时,对 PCRL 为目标寄存器的操作可直接修改 PC<7:0>,即 PC<7:0>=PCRL<7:0>;
而操作 PC<7:0>的同时也会执行 PC<10:8>=PCRH<2:0>,因此,修改 PC 时,应先修改 PCRH<2:0>,再修
改 PCRL<7:0>。
2. 执行 RCALL 指令时,PC<7:0>为寄存器 R 中的值;而 PC<10:8> =PCRH<2:0>。
3. 执行 CALL,GOTO 指令时,PC<10:0>为指令中 11 位立即数 I(操作数)。
4. 执行 LCALL 指令时,该指令为双字指令共有 16 位立即数 I(操作数)。PC<10:0>被修改为该 16 位立即数 I
的值的低 11 位;同时 PCRH<2:0>被修改为 I<10:8>的值。
5. 执行 AJMP 指令时,该指令为双字指令共有 16 位立即数 I(操作数)。PC<10:0> 被修改为该 16 位立即数 I
的值低 11 位,同时 PCRH<2:0>修改为 I<10:8>的值。
6. 执行 PAGE 指令时,PCRH<7:3>的值将被该指令的立即数 I 替换。(本芯片的程序存储器大小为 2K Words,
因此 PCRH<7:3>被固定为全零,执行 PAGE 指令后 PC 值不受影响)
7. 执行其他指令时,PC 值自动加 1。

应用实例:以 PCRL 为目标寄存器的指令应用程序
……
MOVI pageaddr
MOVA PCRH ;设置表格页面地址
MOVI tableaddr ;设置偏移量给 A 寄存器
CALL TABLE ;调用子程序方式查表
……
TABLE:
ADD PCRL, F ;PC 加上偏移量,指向访问的地址
RETIA 0X01
RETIA 0X02
RETIA 0X03
……

3. 2. 4 程序堆栈
芯片内有 8 级程序堆栈(硬件堆栈),堆栈位宽与 PC 位宽相等,用于 PC 的压栈和出栈。执行 CALL、LCALL 和 RCALL 指令或中断被响应后,PC 自动压栈保护;当执行 RET、RETIA 或 RETIE 指令时,堆栈会将最近一次压栈的值返回至 PC。
程序堆栈只支持 8 级缓冲操作,即程序堆栈只保存最近的 8 次压栈值,对于连续超过 8 次的压栈操作,第 9 次的压栈数据使得第 1 次的压栈数据丢失。同样,超过 8 次的连续出栈,第 9 次出栈操作,可能使得程序流程不可控。芯片复位后,堆栈指针将重新指向堆栈顶部。



3. 3 IAP访问OTP操作
3. 3. 1 OTP存储器
OTP 存储器是一次可编程存储器,在 VPP 复用端口施加高压 8.45V 时,可通过 IAP 对未
编程过的 OTP 地址单元进行软件控制编程。IAP 写入操作以字(Word)为单位,通过 FRA
(FRAH,FRAL)寻址。当 OTP 存储器进行 IAP 写入操作时 CPU 内核暂停执行,外设
可按预设状态继续运行,外设的中断请求将置位相应的中断标志。当 IAP 写入操作完成时,
CPU 内核恢复执行。
3. 3. 2 查表指令
HR7P 79 条指令集中包含 8 条查表指令。
查表读指令:
查表读指令用于将 FRA(FRAH,FRAL)所指向的 OTP 地址单元中的一个字(Word)
读入 ROMD(ROMDH,ROMDL)中。
TBR
TBR#1
TBR_1
TBR1#
查表写指令:本芯片查表写指令保留未用。
TBW
TBW#1
TBW_1
TBW1#
查表指令的具体操作可参考《附录 1 指令集》

3. 3. 3 IAP编程
IAP 编程操作通过 IAPC 控制寄存器将 ROMD(ROMDH,ROMDL)中的内容写入 FRA(FRAH,FRAL)指向的 OTP 地址单元。IAP 编程访问地址空间范围 200H~7DFH。建议每个地址编程完成,查表读出验证是否成功,如果不成功需返回编程操作,直到读出验证成功后再编程后续地址空间。单地址编程,编程时间至少为 2ms。

应用例程 1:IAP 编程
MOVI 0x02 ;将 55AAH 写入 OTP 的 0210H 地址单元
MOVA FRAH
MOVI 0x10
MOVA FRAL
MOVI 0xAA
MOVA ROMDL
MOVI 0x55
MOVA ROMDH
BSS IAPC, IAPEN ;使能 IAP 操作
BSS IAPC, IAPGO ;触发 IAP 操作
WAIT:
JBC IAPC, IAPGO
GOTO WAIT
......
应用例程 2:IAP 查表读
MOVI 0x02 ;读取数据存储器 0210H 单元
MOVA FRAH
MOVI 0X10
MOVA FRAL
TBR ;查表读指令,读取数据到 ROMDH/L 寄存器
MOV ROMDH, 0
… …
MOV ROMDL, 0
… …

3. 4. 3 通用数据存储器
通用数据存储器被用于临时存放数据和控制信息,可以在程序控制下进行读写操作。本芯片通用数据存储器空间为 64 Bytes,地址范围为 0000H~003FH。通用数据存储器的内容在上电复位后是不确定的,未下电的其他复位后,将保存复位前的内容。
3. 4. 4 特殊功能寄存器
特殊功能寄存器用于芯片对外设操作的控制设定。本芯片支持 128 个特殊寄存器,地址范围 FF80H~FFFFH。大多数寄存器都是可以读写的,仅有少数部分寄存器不对外开放。相关功能所使用的寄存器将分别在各个章节中描述。

3. 4. 5 寻址方式
SRAM 数据存储器的寻址方式支持直接寻址和间接寻址。
3. 4. 5. 1 直接寻址
在直接寻址时,指令中的 8 位地址信息用于 GPR 和 SFR 寻址。当指令中的 8 位地址信息R<7:0>小于 80H时,直接寻址 GPR 映射区。当 R<7:0>大于或等于 80H时,直接寻址 SFR映射区。



3. 4. 5. 2 间接寻址
间接寻址是通过 16 位间接地址寄存器 IAA(由 2 个 8 位寄存器 IAAH 和 IAAL 组成)和 8位虚拟数据寄存器 IAD 间接访问数据寻址空间中的存储单元,寻址空间为 0000H~ FFFFH。先将访问目的地址存放于间接地址寄存器 IAA,再通过指令对 IAD 进行读/写操作,实际的读/写操作对象则是 IAA 指向的数据寻址空间中的目的地址单元。
由于 IAD 寄存器本身也映射到数据寻址空间的 FF80H 地址,因此,当 IAA 存放的地址值为 FF80H 时,读/写 IAD 相当于用间接寻址方式访问虚拟寄存器 IAD 本身,此时读操作将始终读出为 00H,写操作则是一个空操作(可能影响状态位)。
ISTEP 指令,用来对 16 位间接寻址寄存器 IAAH/IAAL 进行偏移操作。执行该指令时,先将指令字中的 8 位有符号立即数进行符号位扩展为 16 位数,再将 IAA 的值加上这个数的结果存回 IAA 寄存器。ISTEP 可实现的偏移范围为-128~127。虽然只有 8 位立即数,但是该条指令对整个IAA(IAAL和IAAH)进行16位计算。计算的结果依然存放于IAAL和IAAH中。


应用例程:采用间接寻址将(020H ~ 02FH)的寄存器清零。
……
CLR IAAH
MOVI 0X20 ;对指针初始化
MOVA IAAL ;IAA 指向 RAM
NEXT1:
CLR IAD ;清零 IAD 寄存器
ISTEP 0X01 ;指针 IAA 内容加 1
JBS IAAL, 4 ;
GOTO NEXT1 ;未完成,循环到下一个单元清零
CONTINUE: ;已经完成,继续执行后面的程序
……

第 4 章 输入/输出端口
4. 1 概述
输入/输出端口是芯片的最基本组成部分,本芯片最多支持 13 个 I/O 端口和 1 个输入端口。
一个输入端口 PA3 是 TTL 输入,其它所有 I/O 端口都是 TTL/SMT 输入和 CMOS 输出驱
动。

PA 输入/输出端口功能组件
- 7 位双向输入/输出和 1 位输入端口
- TTL/SMT 输入和 CMOS 输出驱动
- 端口输入/输出控制寄存器(PAT)
- 端口弱上拉控制寄存器(N_PAU)
- 端口弱下拉控制寄存器(N_PAD)
- PA0~PA7 支持外部按键中断功能
- PA0~PA2,PA7 I/O 端口数模选择寄存器(ANS)

PB 输入/输出端口功能组件
- 6 位双向输入/输出端口
- TTL/SMT 输入和 CMOS 输出驱动
- 端口输入/输出控制寄存器(PBT)
- 端口弱上拉控制寄存器(N_PBU)
- 端口弱下拉控制寄存器(N_PBD)
- PB0~PB5 支持外部端口中断功能
- PB0~PB1 I/O 端口数模选择寄存器(ANS)
注 1:当端口设置为输出、外部振荡器时钟端口时,内部弱上/下拉自动禁止。

4. 3. 3 I/O端口大电流控制功能
寄存器 N_PBD<5>(PLCS)可控制端口 PA(PA7-4,PA2-0),PB(PB5-0)的电流驱动能力。
4. 3. 4 I/O端口模拟/数字类型选择功能
当数字信号和模拟信号共用管脚时,在使用对应端口的数字信号或模拟信号功能前,须正确设置端口的类型,否则可能不会达到预期的结果。本芯片中 PA0~PA2, PA7, PB0~PB1 端口均具有独立的模拟/数字信号选择功能,由 ANS 寄存器控制选择。当端口被配置为模拟端口时,读相应 Px 寄存器始终读到“0”。
4. 3. 5 I/O端口复用功能
为了使资源合理利用最优化,本芯片大部分的 I/O 端口都具有复用功能。当端口用于复用功能时,管脚电平由复用功能决定。
4. 4 端口中断
4. 4. 1 按键中断(KINT)
本芯片外部端口支持 1 组外部按键中断。按键中断支持最多 8 个按键输入端 KIN<7:0>, 8 个按键共用一个按键中断使能位 KIE(INTE0<0>)及按键中断标志位 KIF(INTF0<0>),每个输入端可以由相应的按键屏蔽位 KMSKx(INTC0<7:0>)屏蔽,任何其中一个按键中断产生将影响中断标志 KIF。
当 KINn 复用端口被配置为数字输入端口,且 1 组中任何一个端口输入信号发生电平变化时,将产生按键中断 KINT。使用外部按键中断时,须配置相应的控制寄存器,并且使能外部按键中断端口的内部弱上拉电阻。外部按键电平比较,是比较按键输入端口电平与锁存器上的最后输入值。清除按键中断标志位前,必须对相应复用端口进行一次读/写操作,否则按键中断标志位无法被清除。在按键中断使能(KMSKn=1,KIE=1)前,先对端口寄存器进行读或者写的操作,清除中断标志位,以免误产生中断。此中断能将芯片从睡眠状态唤醒。


4. 4. 2 外部端口中断(PINT)
本芯片外部端口支持 4 个外部端口中断,外部中断源由外部中断选择位 PINT3S~PINT0S(PINTS<7:0>)选择。外部端口中断由相应的 PIE3~PIE0(INTE1<3:0>)使能,通过PEG3~PEG0(INTC1<3:0>)选择上升沿触发还是下降沿触发。当 PINTn 复用端口被配置为数字输入端口,且输入信号变化满足触发条件时,将产生 PINTn 外部端口中断,中断产生将影响相应的中断标志 PIFn(INTF1<3:0>)。此中断能将芯片从睡眠状态唤醒。

4. 5 I/O端口操作注意事项
当执行以端口寄存器为目标的操作(除位操作指令)时,芯片实际执行读-修改-写过程,即先读取该组全部 I/O 端口的电平,修改后再写回端口寄存器。位操作指令对 I/O 的修改操作只影响选定的位,不会影响同组其它 I/O 端口。因此建议用户对单个 I/O 的修改采用位操作指令。此外用户在对 I/O 端口的复用功能使能和关闭时,应充分考虑当前 I/O 端口的输出寄存器值,并判断是否需要重新对这些 I/O 端口进行初始化赋值。
4. 6 特殊功能寄存器
输入/输出端口的设置包括一系列的寄存器控制,PX 寄存器用于显示 PX 端口的电平状态,PXT 寄存器用于设置 PX 端口的输入输出状态,N_PXU / N_PXD 用于设置 PX 端口的弱上拉 / 弱下拉电阻的连接状况。ANS 用于设置 PX 端口的数据类型。


第 5 章 特殊功能及操作特性
5. 1 系统时钟与振荡器
5. 1. 1 概述
芯片运行所需要的时钟源由振荡器提供,不同的振荡器选择可以让使用者在不同的应用需求中实现更大范围的功能。本款芯片所提供的振荡器有三种:外部晶体/陶瓷振荡器XTAL、内部高速RC振荡器(16MHz)和内部低速RC振荡器(32KHz)。灵活选择振荡器,使得产品在速度和功耗方面可以达到最优化。外部LP振荡器和内部低速RC振荡器除了作为系统时钟源外,还可以为看门狗定时器等提供所需要的时钟源。

振荡器模式
- 外部振荡器(HS/XT/LP)
- 内部 16MHz RC 振荡器(可配置为 INTOSC 和 INTOSCO)
- 内部 32KHz RC 振荡器
内部 16MHz RC 振荡器
- 8 位校准寄存器(OSCCAL)
- 出厂前,在常温下已经校准到精度为±2%
- 支持多种分频时钟
内部 32KHz RC 振荡器
- 8 位校准寄存器(WDTCAL)
系统时钟切换
- HS/XT/INTOSCH 16MHz 振荡时钟与内部低速 INTOSCL 32KHz 时钟切换
- 外部低速 LP 振荡时钟与内部高速 INTOSCH 16MHz 时钟切换
振荡和暂停
- 在 IDLE0 模式下,振荡器暂停振荡
- 在 IDLE1 模式下,振荡器保持振荡,系统时钟暂停


5. 1. 2. 1 外部时钟
外部时钟包括晶体/陶瓷振荡器模式(HS/XT/LP)。对于晶体/陶瓷振荡器而言,只要简单地将晶体连接至 OSC1 和 OSC2 管脚间,就会产生振荡所需的相移及反馈。为保证振荡频率更精准,需连接两个小容量电容 C1 和 C2 到 VSS,具体数值与所使用的晶体/陶瓷振荡器有关,电容参考取值范围为 15~33pF。根据所选择的振荡器频率,可分为三种模式:HS 模式、XT 模式和 LP 模式。当芯片配置字 OSCS<2:0> = 000 时,选择 LP 模式;当OSCS<2:0> = 010 时,选择 HS 模式;当芯片配置字 OSCS<2:0> = 100 时,选择 XT 模式。芯片配置字 OSCS<2:0>客户通过编程界面选择。

晶体/陶瓷振荡器模式(HS、XT、LP 模式)
HS/XT 晶振起振稳定时间为 512 个系统时钟。LP 晶振设计为低功耗振荡,起振稳定时间约一秒左右。

5. 1. 2. 2 内部高速 16MHz RC振荡器模式(INTOSCH)
芯片内置 16MHz RC 时钟振荡器,不需要外接其它 外部器件。当 配置字中的OSCS<2:0>=000/110/111且寄存器OSCC中的CLKSS=1时,选择内部16MHz RC作为系统时钟源,此时PA2和PA3管脚复用为通用I/O端口。INTOSCH 16MHz最低可分频至32KHz,出厂前,内置16MHz RC时钟振荡器已在常温下校准。芯片上电时,会自动加载校准值,客户不需要对校准寄存器OSCCAL进行任何操作。

5. 1. 2. 3 内部低速 32kHz RC振荡器模式(INTOSCL)
芯片内置32KHz RC时钟振荡器,不需要外接其它外部器件,可用作WDT计数时钟源,也可配置为主系统时钟源。当配置字中的OSCS<2:0>=010/100/110/111且寄存器OSCC中的CLKSS=0时,选择内部32KHz RC作为系统时钟源,此时PA和PA3管脚复用为通用I/O端口。芯片上电时,会自动加载校准值,客户不需要对校准寄存器WDTCAL进行任何操作。5. 1. 3 系统时钟切换
高频时钟能提供系统更高的性能,低频时钟能够提供更低的功耗。因此,根据用户需要,灵活地安排高低频时钟切换,可以使系统在执行速度和功耗方面最优化。系统可软件设置寄存器位 CLKSS(OSCC<7>),选择高、低速系统时钟。系统上电时,寄存器 CLKSS 的值默认为 0,工作在低速系统时钟模式下。
系统支持四种时钟切换:
内部低速 INTOSCL 32KHz 时钟切换到内部高速 INTOSCH/外部高速 HS/XT 时钟
- 设置芯片配置字 CFG_WD 中的 OSCS<2:0>=010/100/110/111;
- 设置 OSCC 寄存器中的 CLKSS=1;
- 检测 OSCC 寄存器中的 HSOSCF 位,直到检测到 HSOSCF=1;
- 等待一条 NOP 指令;
- 检测 PWEN 寄存器的 SW_HS 位,直到检测到 SW_HS=1;
内部高速 INTOSCH/外部高速 HS/XT 时钟切换到内部低速 INTOSCL 时钟
- 设置芯片配置字 CFG_WD 中的 OSCS<2:0>=010/100/110/111;
- 设置 OSCC 寄存器中的 CLKSS=0;
- 检测 OSCC 寄存器中的 WDTOSCF 位,直到检测到 WDTOSCF =1;
- 等待一条 NOP 指令;
- 检测 PWEN 寄存器的 SW_WDT 位,直到检测到 SW_WDT =1;
外部低速 LP 时钟切换到 INTOSCH 时钟钟
- 设置芯片配置字 CFG_WD 中的 OSCS<2:0>=000;
- 设置 OSCC 寄存器中的 CLKSS=1;
- 检测 OSCC 寄存器中的 HSOSCF 位,直到检测到 HSOSCF=1;
- 等待一条 NOP 指令;
- 检测 PWEN 寄存器的 SW_HS 位,直到检测到 SW_HS=1;

内部高速 INTOSCH 时钟切换到外部低速 LP 时钟
- 设置芯片配置字 CFG_WD 中的 OSCS<2:0>=000;
- 设置 OSCC 寄存器中的 CLKSS=0;
- 检测 OSCC 寄存器中的 LPOSCF 位,直到检测到 LPOSCF =1;
- 等待一条 NOP 指令;
- 检测 PWEN 寄存器的 SW_LP 位,直到检测到 SW_LP =1;

5. 2 看门狗定时器
5. 2. 1 概述
看门狗定时器是芯片的一个组成部分,它的功能在于在发生软件故障时,通过器件复位将
芯片复位。若系统进入了错误的工作状态,看门狗可以在合理的时间范围内使芯片复位。
使能看门狗时,若用户程序清除看门狗定时器失败,则在预定的时间范围内,看门狗会使
系统复位。
WDT 定时器
- 8 位 WDT 定时计数器(无实际物理地址,不可读写)
- 8 位预分频器(无实际物理地址,不可读写)
- WDT 控制寄存器(WDTC)
- WDT 计数周期匹配寄存器(WDTP)
- 唤醒功能
- 复位功能
内部 WDT RC 振荡器
- 定时器时钟源为内部 32KHz RC 时钟或外部 LP 振荡时钟
- 8 位 WDT 时钟校准寄存器(WDTCAL)
- 出厂前,在常温下已经将频率校准在±15%以内,其高低温频偏对 WDT 计数
溢出周期的影响,见《电气特性》章节的描述

5. 2. 3 WDT定时器
芯片提供8位WDT定时计数器,通过芯片配置字WDTEN可使能硬件看门狗WDT。当芯片配置字WDTEN使能时,WDT定时器计数使能;当WDTEN关闭时,WDT定时器计数禁止。客户通过编程界面选择。
当配置字 OSCS<2:0>位配置为 LP 模式时,WDT 的计数时钟源有两种选择:内部 32KHzRC 时钟和外部 LP 振荡时钟。如果 WDTCKS=0 时,WDT 的计数时钟为 WDT RC 时钟;当 WDTCKS=1 时,WDT 的计数时钟为 LP 振荡时钟。WDT 支持一个预分频器,可通过 WDTC 寄存器中的 WDTPRS<3:0>位设置 WDT 时钟源的预分频比,再将分频后的时钟信号作为 WDT 定时器的计数时钟。当 WDTPRE
(WDTC<4>)清零,禁止预分频器,WDT 时钟为 32KHz;当 WDTPRE(WDTC<4>)置 1,使能预分频器。
WDT 支持一组可读/写的定时周期寄存器 WDTP,当看门狗计数到定时周期时,超时溢出。在 IDLE 模式下,WDT 计数溢出会唤醒 CPU;此外,WDT 计数溢出会复位芯片。为了避免不必要的复位,可使用 CWDT 指令适时清零 WDT 计数器。
在预分频器分频比为 1:2,且周期寄存器 WDTP 设置为 FFH 时,WDT 使用内部 WDT 时钟进行计数,常温下时钟频率约为 32KHz,计数溢出时间约为 16ms。当禁止预分频器时,WDT 的计数溢出时间约为 8ms。 其它工作条件下,WDT 的计数溢出时间,可参考《附录 参数特性图》章节的相关图示。
值得注意的是,当 WDT 内部 RC 时钟使能位 RCEN=0 时,只在 IDLE 模式下看门狗禁止,其它工作模式下 WDT 的 RC 时钟一直打开,不受 RCEN 的影响。

5. 3. 4 外部MRSTN管脚复位
芯片提供外部 MRSTN 管脚,当 CFG_WD<5>(MRSTEN)为 1 时,用于系统复位。当复位管脚输入低电平信号时,系统复位。当复位管脚处于高电平时,系统正常运行。需要注意的是,在系统上电完成后,外部复位管脚必须输入高电平,否则系统将一直保持在复位状态。另外,需要特别注意的是,禁止将 MRSTN 管脚直接连接到 VDD 上;禁止 MRSTN 管脚上的电压高于 VDD 电压。

外部 MRSTN 管脚复位电路有多种,以下介绍两种比较典型的连接电路。
1. RC 复位
RC 复位电路是外部 MRSTNN 脚复位电路最简单的一种,对外界环境条件要求不高的情况下,可以采用此种连接方式。


5. 4. 1 MCU低功耗模式
本芯片支持两种低功耗休眠模式:IDLE0 模式或 IDLE1 模式,通过设置 PWRC 寄存器位
LPM(PWRC<7>)进行选择。
支持 IDLE0 模式
- 当 LPM = 0 时,执行 IDLE 指令,芯片进入 IDLE0 模式:
- 时钟源停振(32KHz RC 时钟源除外),主系统时钟暂停
- 程序暂停、同步模块暂停、异步模块运行,器件功耗降低
- 支持低功耗唤醒,唤醒时间可配,同时需要考虑 LDO 稳定时间
- 所有 I/O 端口将保持进入 IDLE0 模式前的状态
- 若使能 WDT,则 WDT 将被清零并保持运行
- N_PD 位被清零,N_TO 位被置 1
支持 IDLE1 模式
- 当 LPM = 1 时,执行 IDLE 指令,芯片进入 IDLE1 模式:
- 时钟源保持运行,主系统时钟暂停
- 程序暂停、同步模块暂停、异步模块运行,器件功耗降低
- 支持低功耗唤醒,唤醒时间可配,最小 1 个机器周期
- 所有 I/O 端口将保持进入 IDLE1 前的状态
- 若使能 WDT,则 WDT 将被清零并保持运行
- N_PD 位被清零,N_TO 位被置 1
5. 4. 2 低功耗模式配置
两种低功耗模式 IDLE0 和 IDLE1 模式的选择由 PWRC 寄存器中的 LPM 位控制。当 LPM
= 0 时,执行 IDLE 指令,芯片进入 IDLE0 模式;当 LPM = 1 时,执行 IDLE 指令,芯片
进入 IDLE1 模式。

为了降低功耗,所有 I/O 管脚都应保持为 VDD 或 VSS。为了避免输入管脚悬空而引入开
关电流,应在外部将高阻输入的 I/O 管脚拉为高电平或低电平,MRSTN 管脚必须处于逻
辑高电平。

5. 4. 3 IDLE唤醒方式配置
当系统进入低功耗模式后,程序处于暂停状态,以下几种方式可将系统唤醒。


注 1:低功耗唤醒与全局中断使能无关,只需相应中断源使能位置位为“1”即可。在低功耗模式时,若外设产生中断
信号,即使全局中断使能 GIE 为 0,低功耗模式依然会被唤醒,只是唤醒后不会执行中断程序。
注 2:关于外部按键中断使用,当开启中断使能和中断屏蔽位使能前,先对端口寄存器进行读或者写的操作,然后
清除中断标志位,以免误产生中断。

当唤醒事件发生后,芯片根据配置字 OSCS<2:0>的配置执行下述操作:
当 OSCS<2:0>配置为 HS/XT/INTOSCO/INTOSC 模式时:
- 在 IDLE0 模式(LPM=0)下,芯片需要先等待 VRwkdly 时间(由 VRST(PWRC<6:5>)设定),此时间称为 LDO 稳定时间,之后芯片主时钟运行一段Twkdly 时间后才执行 IDLE 下一条指令,Twkdly 称为唤醒延时,唤醒延时可通过 WKDC 寄存器设置;
- 在 IDLE1 模式(LPM=1)下,芯片仅等待 Twkdly 时间后就执行 IDLE 下一条指令,无 VRwkdly 时间。
当 OSCS<2:0>配置为 LP 模式时:
- 在 IDLE0 模式(LPM=0)下,芯片需要先等待 VRwkdly 时间(由 VRST(PWRC<6:5>)设定),此时间称为 LDO 稳定时间,接着芯片等待 LPwkdly 时间,之后芯片主时钟运行一段 Twkdly 时间后才执行 IDLE 下一条指令,Twkdly称为唤醒延时,唤醒延时可通过 WKDC 寄存器设置;
- 在 IDLE1 模式(LPM=1)下,芯片仅等待 Twkdly 时间后就执行 IDLE 下一条指令,无 VRwkdly 和 LPwkdly 时间。

第 6 章 外设
6. 1 8 位PWM时基定时器(T8P1/T8P2)
6. 1. 1 概述
本芯片包含 2 组 PWM 时基定时器(T8P1/T8P2),支持两种工作模式,定时器模式和 PWM
模式。定时器模式根据寄存器制定的定时时间进行定时,可以使定时器有选择地产生中断请
求或完成其它操作。PWM 模式用于 PWM 输出。
T8Pn 支持两种工作模式(时钟源为系统时钟 2 分频(Fosc/2))
- 定时器模式
- PWM 模式,支持最高 11 位 PWM 平均输出精度,支持 PWM 带死区互补输出,
且死区时间软件可配置
T8Pn 支持以下功能组件
- 4 位的预分频器和 8 位后分频器(无实际物理地址,软件不可读写)
- 8 位计数器(T8Pn)
- 8 位精度寄存器(T8PnR)
- 8 位周期寄存器(T8PnP)
- 8 位周期缓冲器(PRDBUF,无实际物理地址,软件不可读写)
- 8 位精度缓冲器(RESBUF,无实际物理地址,软件不可读写)
- 8 位 T8Pn PWM 死区控制寄存器(T8PnPDT)
- 控制寄存器(T8PnC)
- T8PnPEX 后分频比扩展寄存器(T8P1PEX/T8P2PEX)
- T8Pn 周期匹配控制寄存器(T8P1PMC/T8P2PMC)
- T8Pn 输出控制寄存器(T8P1OC)
- 8 位 T8Pn PWM 死区控制寄存器(T8PnPDT)
中断和暂停
- 支持匹配中断标志(T8PnTIF)和周期中断(T8PnPIF)
- 支持中断处理
- 在 IDLE 模式下,T8Pn 暂停工作

6. 1. 4 预分频器和后分频器
预分频器和后分频器可以提供一个更长的溢出和中断周期。T8Pn 模块计数器支持可配置的4 位预分频器和可配置的 8 位后分频器。预分频器与后分频器的计数值都无法读写,修改T8Pn 的控制寄存器或计数器都会把预分频器和后分频器清零,但不改变分频比设置。预分频器的分频比可通过 T8PnC 寄存器中的 T8PnPRS<1:0>位进行设置,预分频比范围为1:1~1:16。后分频器的分频比可通过 T8PnC 寄存器中的 T8PnPOS<3:0>位和后分频比扩展寄存器 T8PnPEX 中的 T8PnPOSEX<3:0>进行设置,后分频比范围为 1:1~1:256。

6. 1. 5 工作模式
T8P1/T8P2 有两种工作模式,定时器模式和 PWM 模式,通过 T8PnM 寄存器进行模式选
择。两种模式均支持预分频器和后分频器。两种模式下,T8Pn 计数器的时钟源均为系统时
钟 2 分频(Fosc/2)。

6. 1. 6 定时器模式
当 T8PnM=0 且 T8PnE=1 时,T8Pn 工作在定时器模式。
在定时器模式下,T8Pn 计数器的时钟源为系统时钟 2 分频(Fosc/2),可选择预分频器对计数时钟进行分频,计数器的计数时钟为分频后的时钟。

在定时器模式下,当 T8PnPMS=0 时,不更新周期缓冲器 PRDBUF,T8Pn 的计数值与周期寄存器 T8PnP 进行比较匹配;当 T8PnPMS=1 时,更新周期寄存器 T8PnP 的值至周期缓冲器 PRDBUF,T8Pn 的计数值与周期缓冲器 PRDBUF 进行比较匹配。当 T8Pn 的计数值与周期寄存器 T8PnP(当 T8PnPMS=0)或与周期缓冲器 PRDBUF(当T8PnPMS=1)匹配相等时,将周期中断标志 T8PnPIF 置 1,该中断标志需要软件清零。同时 T8Pn 被自动清零并重新开始计数,同时后分频器加 1 计数。当后分频器的计数值与后分频器分频比相同时,复位后分频器,并将定时中断标志 T8PnTIF 置 1,该中断标志需要软件清零。
在定时器模式下,周期缓冲器 PRDBUF 的更新:
在定时器模式起始周期,为了能将周期寄存器 T8PnP 的值更新至周期缓冲器 PRDBUF,需
满足以下顺序:先设置 T8PnM=0 且 T8PnPMS=1,再使能 T8PnE=1。起始周期结束后,每次 T8Pn 的计数值与周期缓冲器 PRDBUF 匹配相等后,将自动更新周期缓冲器。

6. 1. 7 PWM输出模式
当 T8PnM=1 且 T8PnE=1 时,T8Pn 工作在 PWM 模式。计数时钟源为系统时钟二分频 Fosc/2,并支持预分频器。后分频器的设置不影响 PWM 输出周期和占空比,只影响匹配中断 T8PnTIF 中断标志位的产生,详见《T8Pn 后分频器配置表》。
在 PWM 模式下,PWM 输出由寄存器 T8PnTRN 位控制。
当 T8PnTRN=1 时,PWM 输出始终为 0,且不会更新 T8PnP 和 T8PnR 寄存器的值至周期缓冲器 PRDBUF 和精度缓冲寄存器 RESBUF。
当 T8PnTRN=0 时,PWM 输出波形才能启动,且 PWM 输出起始为 1,同时分别将 T8PnP和 T8PnR 寄存器的内容更新至周期缓冲器 PRDBUF 和精度缓冲寄存器 RESBUF(缓冲器软件不可读写),随后 T8Pn 从零开始递增计数,当 T8Pn 与 RESBUF 的值相等时,PWM输出改变为 0,并继续递增计数。当 T8Pn 的计数值与 PRDBUF 相等时, PWM 输出恢复为 1,同时 PRDBUF 和 RESBUF 再次分别载入 T8PnP 和 T8PnR 寄存器的值,并产生周期中断 T8PnPIF 中断标志,该中断标志需要软件清零。同时 T8Pn 被自动清零并重新开始计数,后分频器加 1 计数。至此一个完整的 PWM 周期完成,随后继续循环新的 PWM 周期。当后分频器的计数值与后分频器分频比相同时,复位后分频器,并将定时中断标志T8PnTIF 置 1,该中断标志需要软件清零。
在 PWM 模式下,精度缓冲器 RESBUF 和周期缓冲器 PRDBUF 的更新:
在 PWM 模式起始周期,为了能将 T8PnP 和 T8PnR 寄存器的值至周期缓冲器 PRDBUF 和
精度缓冲寄存器 RESBUF,需满足以下顺序:先设置 T8PnM=1,T8PnPMS=1 和 T8PnE=1,再设置 PWM 输出使能 T8PnTRN=0。
起始周期结束后,每次 T8Pn 的计数值与周期缓冲器 PRDBUF 匹配相等后,将自动更新周期缓冲器和精度寄存器。

注 1:若精度缓冲器 RESBUF 的值为 0,则当前 PWM 周期内 PWM 输出始终为 0;若精度缓冲寄存器 RESBUF 的值不小于 PRDBUF,则当前 PWM 周期内 PWM 输出始终为 1。
注 2:在读取 T8PnTRN 位的状态时,读出此位的值为写入此位值的反逻辑,即,当此位写入 0 时,读出的值为 1;当此位写入 1 时,读出的值为 0。
注 3:若 T8PnTRN=1,则 PWM 输出 0,且周期缓冲器不更新(要么保持初始值 0xFF,要么为 T8PnTRN=0 时,最后一次更新过的值)。

6. 1. 8 PWM平均精度扩展
PWM 的最大分辨率可达 9 位,进一步细化 PWM 输出精度,可通过设置扩展精度位T8PxRE<1:0>(T8PxOC<5:4>)进行 PWM 平均精度扩展。此应用模式原理是采用对连续输出波形脉宽进行间隔地加 1(加 1 个 LSB,即脉宽增加了 1 个 Tosc × [预分频倍数](见PWM 计算公式)),实现 PWM 波形占空比的平均值细化。
扩展精度位可设置 0,1/4,2/4,3/4 共 4 个精度扩展值,相当于将 PWM 平均精度扩展 2位。
例如,当扩展精度设置为 2/4,即 4 个 PWM 脉宽中有 2 个脉宽的宽度增加 1 个 LSB,且增加 1 个 LSB 的脉宽均匀分布在 4 个脉宽中,如下图所示,假设脉宽宽度为 n,则 4 个开关周期(PWM 周期)的平均脉宽为 n+1/2,从而在不提高时钟频率的情况下,等效实现了较高分辨率的 PWM。

6. 1. 9 PWM 复用输出端口
T8Pn 各支持一对互补的 PWM 输出端口,PWMn0 和 PWMn1,支持可调死区时间配置,死区时间可由 T8PnPDT 寄存器设置。
PWM 死区延时时间计算公式:T8PnPDT<7:0> x Tosc。
通过设置 T8PnOC 寄存器中的 T8PnPEN<1:0>和 T8PnNEN<1:0>,选择 T8Pn 的 PWMn0和 PWMn1 与 I/O 复用的输出管脚。
PWMn0 的输出极性可通过寄存器 ANS<7:6>(PWM20NS,PWM10NS)进行设置。
值得注意的是,在使能 PWM 输出前,需先将与 PWM 复用的相应 I/O 端口的控制寄存器位PxT 设置为输出状态,否则将无 PWM 波形输出。

6. 2 模/数转换器模块(ADC)
6. 2. 1 概述
模拟数字转换器用于将模拟信号转化成一组二进制代码组成的数字信号。模拟信号经由多路
复用输入脚输入,通过一个采样-保持电路连接至转换器的输入端。该芯片支持 12-bit 6+2
通道的 A/D 转换器,经过 A/D 转换器转换的 12-bit 二进制数据存入 ADC 数据寄存器
ADCRH、ADCRL 中。
模/数转换器特性
- 12 位 ADC 采样精度
- 6 个模拟输入+2 个电源电压检测通道可选
- 12 位转换结果,支持高位对齐放置或低位对齐放置
- 支持外部或内部参考电压可选择
- 支持电源电压检测,电源分压比可选
- 支持可配置 A/D 转换时钟
- 时钟源来自系统时钟 Fosc
主要功能组件
- ADC 转换值寄存器(ADCRL,ADCRH)
- ADC 控制寄存器(ADCCL,ADCCH)
- 端口类型选择寄存器(ANS)
- ADC 自动触发寄存器(ADCTR)
中断和暂停
- 支持 A/D 转换中断(ADIE/ADIF)

6. 2. 3 ADC配置
ADC 电路使用前,需根据需要对以下几个方面进行正确的配置,才可得到需要的正确转换结果。

时钟选择
ADC 电路所需要的时钟有 7 组可选,Fosc~Fosc/64,可通过 ADCCH 寄存器选择所需要的时钟。

参考电压选择
ADC 电路分别使用一个正参考电压和一个负参考电压,对应外部参考电压输入脚分别为VREFP 和 VREFN。由于该两个外部输入脚分别与 PB1/AIN4、PB0/AIN3 复用,在使用这两个外部参考电压输入时,需先通过 ANS 寄存器正确设置复用端口的类型。正参考电压可通过 ADVREFS <2:0>位选择 VDD、4V、3V、2.1V 或者是 VREFP 复用端口,负参考电压对应地选择 VSS 或者是 VREFN 复用端口。在正端参考电压选择 2.1V 时,需先根据 VDD 电压通过 AD2VCALS 位(ADCTR<0>)正确设置 A/D 2.1V 参考电压调校信息。采样时间选择
本芯片支持 ADC 电路的采样时间可选,可通过 ADCCH 寄存器中的 ADST <3:0>位选择大
约 1~15 个 Tadclk 共 15 种选项。

复用端口类型选择
本芯片中 ADC 电路的所有模拟输入通道 AINn、参考电压外部输入脚均和 PA/PB 端口复用,在使用 ADC 电路转换前,须先将所使用的管脚通过 ANS 寄存器设置为模拟类型。

模拟信号输入通道选择
ADC 电路使能前,需先选择 A/D 模拟通道。本芯片 ADC 电路支持 6 个外部通道和 2 个电源电压检测通道可选,外部通道分别为 AIN0~AIN5,两个电源电压检测通道分别为 VDD/4和 VDD/8。A/D 模拟通道选择哪个通道可通过 ADCCL 寄存器中的 ADCHS <2:0>位选择。对齐方式选择
本芯片 ADC 电路转换的结果支持两种对齐方式,低位对齐和高位对齐,可通过 ADCCH寄存器中的 ADFM 位进行选择。

ADC 模块转换触发方式选择
本芯片 ADC 模块支持两种 A/D 转换触发方式:软件触发和 PWM 自动触发。
在ADC模块转换使能位ADEN(ADCCL<0>)使能后,通过软件将ADC转换状态位ADTRG(ADCCL<1>)置“1”,ADC 模块开始进行转换,此为软件触发 A/D 转换;在 ADC 模块转换使能位 ADEN(ADCCL<0>)和 PWM 自动触发 ADC 使能位 TRIGEN(ADCTR<4>)都使能后,由 PWM 边沿触发信号致使 ADTRG 位自动置为“1”,ADC 模块开始进行转换,此种为 PWM 自动触发。

PWM 自动触发源可选择来自 PWMn1 信号,通过自动触发源选择位 TRIGS(ADCTR<6>)进行选择,PWM 自动触发边沿可通过 TRIGPEG 位(ADCTR<5>)选择 PWM 上升沿或下降沿触发。
值得注意的是,在使用 PWM 自动触发 ADC 时,建议先查询 ADTRG 位的当前状态。若查询到 ADTRG 位为“1”时,此段时间的 PWM 边沿自动触发信号都将被忽略,直至 ADTRG
位的状态恢复为“0”后,系统再次检测到 PWM 边沿自动触发信号,才会响应 PWM 自动触发 ADC 模块进行转换。

6. 2. 4 ADC转换步骤
下面概述实现 ADC 转换过程的各个步骤。
Step 1:选择 ADC 转换时钟,通过 ADCCH 寄存器中的 ADCS <2:0>选择 ADC 转换时钟。
Step 2:选择正负参考电压,通过 ADCCL 寄存器中的 ADVREFNS 位进行选择。
Step 3:ADC 采样时间选择,通过 ADCCH 寄存器中的 A/D 采样时间选择位 ADST <3:0>设定。
Step 4:设置复用端口设为模拟类型,即选择哪些管脚作为 ADC 转换输入管脚,由端口类型选择寄存器 ANS 控制选择。
Step 5:选择模拟信号输入通道 AINx,通过 ADCCL 寄存器中的 ADCHS <2:0>选择 ADC模拟通道。
Step 6:设置转换结果对齐方式,通过 ADCCH 寄存器中的 ADFM 位选择高位对齐放置还是低位对齐放置。
Step 7:如果要使用中断,则中断控制寄存器需要正确地设置,以确保 A/D 中断功能被正确激活。在中断模式时,需将全局中断使能位 GIE 置位为“1”和 ADC 中断使能位置位为“1”。
Step 8:使能 ADC 电路,将 ADCCL 寄存器中的 ADC 使能位 ADEN 设置为“1”。
Step 9:选择 ADC 模块转换触发方式为软件触发还是 PWM 自动触发。若选择软件触发,将 ADCCL 寄存器中的 ADC 转换启动位 ADTRG 位设置为“1”,开始进行 ADC 转换;若选择 PWM 自动触发,需先设置 TRIGS 位选择自动触发源和 TRIGPEG 位选择 PWM 自动触发边沿,设置 PWM 自动触发 ADC 使能位 TRIGEN 为“1”。在 PWM 自动触发 ADC模块转换设置完成后,自动边沿触发信号会自动将 ADTRG 位置为“1”,开始进行 ADC转换。
Step 10:轮询 ADCCL 寄存器中的转换状态位 ADTRG 位,确定此次 A/D 转换是否完成。
Step 11:读取 ADCRH 和 ADCRL 寄存器中的转换结果。

6. 3 低电压检测模块(LVD)
6. 3. 1 概述
芯片内置一组低电压检测模块,支持低电压检测功能,即 LVD,该功能使能用于监测电源电压 VDD。在供电电源不稳定的情况下,像外部电源噪声串扰或 EMS 测试条件下,会使电源剧烈振荡。在目标电压未稳定时,可能就会低于工作电压。若所需检测的电压低于一定值可提供一个警告信号。低电压检测也可产生中断信号。
6. 3. 2 LVD操作
LVD 功能的禁止使能由 LVDC 寄存器中的 LVDEN 控制位设置。当 LVDEN 位清零,LVD 功能禁止。当 LVDEN 位置高,LVD 功能使能。LVD 模块将电源电压 VDD 与预置电压进行比较,比较结果通过 LVDC 寄存器的 LVDLS 位进行查询。预置电压的阈值由 LVDC 寄存器中的 LVDV<1:0>配置,预置电压范围为 2.1V~3.6V。当目标电压低于预置电压值时,LVDLS位被置为高,表明检测到低电压产生,产生 LVD 中断标志。当 LVD 中断使能开启时产生 LVD中断请求。

第 7 章 中断处理
7. 1 概述
中断是芯片一个重要功能。它能将芯片从睡眠模式中唤醒,也可以使系统在正常运行过程中响应突发事件,中止并保存当前运行程序的信息,跳转到请求中断的入口地址,执行相对应的中断服务程序,处理突发事件。本芯片仅支持默认中断模式,最多可支持 12 个中断源,1个软件中断和 11 个硬件中断。

7. 3 中断现场保护
中断现场保护是中断程序中一个很重要的组成部分。指令系统中有 PUSH(压栈)和 POP(出栈)指令,可以用来实现中断的数据保存。可以保存的数据包括:累加器 A 寄存器、程序状态字寄存器 PSW、IAA 寄存器和 PCRH 寄存器。其它数据寄存器的保护需采用其它指令实现。可以连续进行 2 次 PUSH,第 3 次 PUSH会使得第一次 PUSH 的数据丢失。同样,超过 2 次的连续 POP,第 3 次 POP 恢复的数据不可预期。
7. 4 中断操作
每个硬件中断源都有各自的中断使能和中断标志位,因此初始化相应的硬件中断时,需要先清除中断标志位,再使能当前中断。若使能前不先清除中断标志,则有可能发生误进中断的情况。除了每个中断支持中断使能外,本芯片还提供了一个全局中断。因此在初始化所有需要的中断后,请使能全局中断。
若中断事件条件产生,相关中断标志将被置为“1”。中断标志产生后程序要跳转至相应服务

地址执行需满足以下条件:
1. 当对应中断使能位为“1”时,继续判断第二个条件是否满足;当对应中断使能位为“0”,即使中断标志为“1”,中断也不会发生,程序也不会跳转至中断服务地址执行。
2. 当全局中断使能位 GIE 为“0”,将屏蔽所有中断请求。当全局中断使能位 GIE 为“1”,程序将跳至中断服务地址执行。

为确保对寄存器 GIE 和 GIEL 的软件写操作成功,需按如下步骤进行:
1. 在默认中断模式或向量中断模式下,对 GIE 位的软件清 0 操作,需先关闭所有外设中断使能,再将 GIE 位清 0;或在 GIE 位清 0 操作后,查询 GIE 位是否为 0,不为 0则继续执行清 0 操作,直到成功为止;
对 GIE 位的软件置 1 操作,无特殊要求,推荐先打开所需的外设中断使能,再将 GIE位置 1。
2. 在向量中断模式下,对 GIEL 位的软件清 0 操作,需先关闭所有外设中断使能,再将
GIEL 位清 0;或在 GIEL 位清 0 操作后,查询 GIEL 位是否为 0,不为 0 则继续执行清 0 操作,直到成功为止;
对 GIEL 位的软件置 1 操作,需与 GIE 位同时置 1,或先将 GIEL 位置 1,再将 GIE位置 1。
7. 4. 1 外部中断
当 PINTn 复用端口被配置为数字输入端口,且输入信号变化满足触发条件时,将产生PINTn 外部端口中断,相应的中断标志 PIFn 被置“1”。当全局中断控制位 GIE 和外部端口中断控制位 PIEn 都被置为“1”,则向 CPU 发出 PINTn 外部端口中断请求。当中断条件允许,系统将进入中断服务程序入口地址,进行中断程序处理。值得注意的是,相应中断标志位 PIFn 和中断使能位 PIEn 都需通过软件清除,INTC1 寄存器中的 PEGn 位用于配置触发条件,可分别配置为上升沿触发或下降沿触发。

7. 4. 2 外部按键中断
当 KINn 复用端口被配置为数字输入端口,未被屏蔽的按键中任何一个端口输入信号发生电平变化,将中断标志位 KIF 置为“1”,当外部按键中断控制位 KIE 为“1”,且全局中断控制位 GIE 位使能后,则向 CPU 发出外部按键中断请求。当外部按键中断条件允许时,系统将进入中断服务程序入口地址,进行中断程序处理。使用外部按键中断时,须配置相应的控制寄存器,并且使能外部按键中断端口的内部弱上拉电阻。
在按键中断使能(KMSKn=1,KIE=1)前,先对端口寄存器进行读或者写的操作,清除中断标志位,以免误产生中断。
清除该中断标志位 KIF 的操作步骤:
1)对端口寄存器进行读或者写操作,结束端口电平与锁存器值的不匹配条件;
2)软件清除中断标志位 KIF。
中断使能位 KIE 也需要通过软件进行清除。

7. 4. 3 T8Pn(T8P1/T8P2)定时中断
8 位 PWM 时基定时器 T8Pn 处于定时器模式和 PWM 模式时,对计数时钟进行递增计数,当 T8Pn 后分频器的计数值与后分频器分频比相同时,将中断标志 T8PnTIF 位置“1”。当
T8Pn 定时中断使能位 T8PnTIE 置为“1”,且全局中断控制位 GIE 使能后,则向 CPU 发出
T8Pn 定时中断请求。当 T8Pn 定时中断条件允许时,系统将进入中断服务程序入口地址,进行中断程序处理。值得注意的是,T8Pn定时中断标志位 T8PnTIF 和中断使能位 T8PnTIE都需通过软件清除。
7. 4. 4 T8Pn(T8P1/T8P2)周期中断
8 位 PWM 时基定时器 T8Pn 处于定时器模式和 PWM 模式时,都可以产生周期中断。当T8Pn 计数器与 T8PnP 寄存器的值相等时(PWM 模式时,T8Pn 从零开始递增计数),将产生 T8Pn 周期中断,中断标志 T8PnPIF 被置“1”。 如果中断使能位 T8PnPIE 置为“1”,且全局中断控制位 GIE 使能后,则向 CPU 发出 T8Pn 周期中断请求。当 T8Pn 周期中断
条件允许时,系统将进入中断服务程序入口地址,进行中断程序处理。值得注意的是,T8Pn周期中断标志位 T8PnPIF 和中断使能位 T8PnPIE 都需通过软件清除。
7. 4. 5 ADC中断
ADC 中断由 ADC 转换动作控制,当 ADC 转换完成时,将产生 ADC 中断,ADC 中断标志位 ADIF 被置“1”。当 ADC 中断控制位 ADIE 置为“1”,且全局中断控制位 GIE 使能后,则向 CPU 发出 ADC 中断请求。当 ADC 中断条件允许时,系统将进入中断服务程序入口地址,进行中断程序处理。值得注意的是,ADC 中断标志位 ADIF 和中断使能位 ADIE 都需通过软件清除。
7. 4. 6 LVD中断
当 VDD 电压小于 LVDC 寄存器设置阈值电压时,低电压产生,LVDLS 上升沿或下降沿触发后,中断标志 LVDIF 位被置“1”。如果中断使能位 LVDIE 置为“1”,且全局中断控制位GIE 使能后,则向 CPU 发出 LVD 中断请求。当 LVD 中断条件允许时,系统将进入中断服务程序入口地址,进行中断程序处理。值得注意的是,LVD 中断标志位 LVDIF 和中断使能位 LVDIE 都需通过软件清除。
7. 4. 7 中断操作注意事项
用户在使能中断前需先清除相应的中断标志,避免中断的误触发。
除只读的中断标志(由硬件清除)外,其余的中断标志必须通过软件清除。


MCU 芯片使用注意事项


关于芯片的上/下电
MCU 芯片具有独立电源管脚。当 MCU 芯片应用在多电源供电系统时,应先对 MCU 芯片上电,再对系统其它部件上电;反之,下电时,先对系统其它部件下电,再对 MCU 芯片下电。若操作顺序相反则可能导致芯片内部元件过压或过流,从而导致芯片故障或元件退化。具体可参照芯片的数据手册说明。

关于芯片的复位
MCU 芯片具有内部上电复位。对于不同的快速上/下电或慢速上/下电系统,内部上电复位电路可能失效,
建议用户使用外部复位、下电复位、看门狗复位等,确保复位电路正常工作。在系统设计时,若使用外部复位电路,
建议采用三极管复位电路、RC 复位电路。若不使用外部复位电路,建议采用复位管脚接电阻到电源,或采取必要的电源抖动处理电路或其它保护电路。具体可参照芯片的数据手册说明。

关于芯片的时钟
MCU 芯片具有内部和外部时钟源。内部时钟源会随着温度、电压变化而偏移,可能会影响时钟源精度;外部时钟源采用陶瓷、晶体振荡器电路时,建议使能起振延时;使用 RC 振荡电路时,需考虑电容、电阻匹配;采用外部有源晶振或时钟输入时,需考虑输入高/低电平电压。具体可参照芯片的数据手册说明。

关于芯片的初始化
MCU 芯片具有各种内部和外部复位。对于不同的应用系统,有必要对芯片寄存器、内存、功能模块等进行初始化,尤其是 I/O 管脚复用功能进行初始化,避免由于芯片上电以后,I/O 管脚状态的不确定情况发生。

关于芯片的管脚
MCU 芯片具有宽范围的输入管脚电平,建议用户输入高电平应在 VIHMIN 之上,低电平应在 VILMAX 之下。避免输入电压介于 VIHMIN 和 VILMAX 之间,以免波动噪声进入芯片。对于未使用的输入/输出管脚,建议设置为输入状态,并通过电阻接至电源或地,或设置为输出状态,输出固定电平。对未使用的管脚处理因应用系统而异,具体遵循应用系统的相关规定和说明。

关于芯片的 ESD 防护措施
东软载波MCU芯片具有满足工业级ESD标准保护电路。建议用户根据芯片存储/应用的环境采取适当静电防护措施。应注意应用环境的湿度;建议避免使用容易产生静电的绝缘体;存放和运输应在抗静电容器、抗静电屏蔽袋或导电材料容器中;包括工作台在内的所有测试和测量工具必须保证接地;操作者应该佩戴静电消除手腕环手套,不能用手直接接触芯片等。

关于芯片的 EFT 防护措施
MCU 芯片具有满足工业级 EFT 标准的保护电路。当 MCU 芯片应用在 PCB 系统时,需要遵守 PCB 相关设计要求,包括电源、地走线(包括数字/模拟电源分离,单/多点接地等等)、复位管脚保护电路、电源和地之间的去耦电容、高低频电路单独分别处理以及单/多层板选择等。

关于芯片的开发环境
MCU 芯片具有完整的软/硬件开发环境,并受知识产权保护。选择上海东软载波微电子有限公司或其指定的第三方公司的汇编器、编译器、编程器、硬件仿真器开发环境,必须遵循与芯片相关的规定和说明。


(编译器版本:iDesigner V4.12.145  HRCC V1.2.0.89(优化等级O0))
1.删除HR7P153 timer例程多余的else语句。
2.例程初始化添加清RAM函数。

全部资料51hei下载地址:
规格书:
HR7P153.pdf (1.22 MB, 下载次数: 41)
程序源码: HR7P153 V1.5.zip (41.42 KB, 下载次数: 59)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-8-27 18:18 | 只看该作者
希望国产单片机崛起
回复

使用道具 举报

板凳
ID:385722 发表于 2022-9-8 22:51 | 只看该作者
案例太少了哦
回复

使用道具 举报

地板
ID:1048397 发表于 2022-11-24 11:25 | 只看该作者
多谢楼主分享!希望国产芯片应用更多。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表