目录
1、引脚分布
2、系统配置
WDT | ENABLE:打开看门狗 DISABLE:关闭看门狗 |
PROTECT | ENABLE:ROM代码加密 DISABLE:ROM代码不加密 |
FCPU_DIV (指令时钟分频) | 4T:Fcpu=Fsys/4 2T:Fcpu=Fsys/2 |
ICSPPORT_SEL (仿真口功能选择) | ICSP:ICSPCLK、DAT口一直保持为仿真口、所有功能不可用 NORMAL:ICSPCLK、DAT口为普通功能口 |
EXT_RESET (外部复位口选择) | ENABLE:使能外部复位功能,RB2为外部复位口 DISABLE:禁止外部复位功能,RB2为普通IO口 |
LVR_SEL (低压侦测选择) | 1.8V 2.0V 2.5V 3.0V |
注:如果
CONFIG
中
WDT
配置位
=1
,则
WDT
始终被使能,而与
SWDTEN
控制位的状态无关。如 果 CONFIG
中
WDT
配置位
=0
,则可以使用
SWDTEN
控制位使能或禁止
WDT
。
3、系统时钟
芯片默认的振荡方式为内部 RC
振荡,振荡频率固定为
16MHz
,在这个基础上可通过
OSCCON
寄存器设 置芯片工作频率。起振时间(
ResetTime
)是指从芯片复位到芯片振荡稳定这段时间,其设计值为
16ms
。

4、时钟框图
4、复位系统
芯片可用以下4种复位方式:上电复位、外部复位、LVR复位、正常工作下看门狗溢出复位。
5、休眠模式
(1)进入休眠模式
由STOP指令可进入休眠模式。
(2)从休眠状态唤醒
- 看门狗定时器唤醒;
- INT 中断;
- PORTB 电平变化中断;
- PORTA 电平变化中断或外设中断。
(3)使用中断唤醒
当禁止全局中断(GIE
被清零)时,并且有任一中断源将其中断允许位和中断标志位置
1
,将会发生下列 事件之一。
- 如果在执行 STOP 指令之前产生了中断,那么 STOP 指令将被作为一条 NOP 指令执行
- 如果在执行 STOP 指令期间或之后产生了中断,那么器件将被立即从休眠模式唤醒。
6、IO配置
PORTx | 数据寄存器 |
TRISx | 方向寄存器 |
ODCONx | 开漏输出使能寄存器 |
ANSELx | 模拟选择寄存器 |
WPUx | 上拉电阻寄存器 |
WPDx | 下拉电阻寄存器 |
IOCx | PORTx电平变化中断寄存器 |
注:当用户读一个
I/O
口状态时,若此
I/O
口为输入口,则用户读回的数据将是此口线外部电平的状态, 若此 I/O
口为输出口那么读出的值将会是此口线内部输出寄存器的数据。
7、中断
(1)中断源
◆
PORTA
电平变化中断
◆
PORTB
电平变化中断
◆
TIMER0
溢出中断
◆
TIMER2
匹配中断
◆
PWM
中断
◆
INT
中断
◆
CMP
中断
◆
A/D
中断
(2)中断原理
(3)中断相关寄存器
8、定时器TIMER0
(1)TIMER0/WDT结构图
(2)定时器TIMER0工作原理
TIMER0
模块既可用作
8
位定时器也可用作
8 位计数器。
用作定时器时,
TIMER0 模块将在每个指令周期递增(不带预分频器)。
用作计数器时,
TIMER0
模块将在
T0CKI
引脚的每个上升沿或下降沿递增。
TIMER0
和看门狗定时器(
WDT
)共用一个软件可编程预分频器,但不能同时使用。
注:只有将时钟源选择 FLSE 时, TIMER0 中断才能唤醒处理器。
(3)相关寄存器
9、定时器TIMER2
(1)TIMER2结构图
(2)定时器TIMER2工作原理
TIMER2 模块的输入时钟是系统指令时钟(FSYS/4)或外部 32.768kHz 振荡(FLSE)。 时钟被输入到 TIMER2 预分频器,有如下几种分频比可供选择:1:1、1:4 或 1:16。
通过将 T2CON 寄存器的 TMR2ON 位置 1 使能 TIMER2;通过将 TMR2ON 位清零禁止 TIMER2
(3)TIMER2相关寄存器
10、10位PWM
芯片包含一个
10
位
PWM
模块,可配置为
4
路共用周期、独立占空比的输出,和
1
路独立周期、独立占 空比的输出,或 2
组互补输出.。
PWM周期:
脉冲宽度:
占空比:
11、模数转换ADC
模数转换器(ADC
)可以将模拟输入信号转换为表示该信号的一个
12
位二进制数。ADC 参考电压可选择内部
LDO
或 VDD。ADC
在转换完成之后可以产生一个中断。
(1)ADC框图
(2)ADC工作原理
要使能ADC模块,必须将ADCON0寄存器的ADON位置为1,将ADCON0寄存器的GO/DONE位置1开始模数转换。
(3)AD转换步骤
1.
端口配置:
⚫
将引脚配置为输入引脚(见
TRIS
寄存器)。
2.
配置
ADC
模块:
⚫
选择
ADC
转换时钟;
⚫
选择
ADC
输入通道;
⚫
选择结果的格式;
⚫
启动
ADC
模块。
3.
配置
ADC
中断(可选):
⚫
清零
ADC
中断标志位;
⚫
允许
ADC
中断;
⚫
允许外设中断;
⚫
允许全局中断。
4.
等待所需的采集时间。
5.
将
GO/DONE
置
1
启动转换。
6.
由如下方法之一等待
ADC
转换结束:
⚫
查询
GO
/
DONE
位;
⚫
等待
ADC
中断(允许中断)。
7.
读
ADC
结果。
8.
将
ADC
中断标志位清零(如果允许中断的话,需要进行此操作)。