-
配置字(
__CONFIG
)
< br>:
1)
芯片的振荡模式选择。
2)
片内看门狗的启动。
3)
上电复位延时定时器
PWRT
的启用。
4)
低电压检测复位
BOR
模块的启用。
5)
代码保护。
__CONFIG_CP_OFF
&_WDT_OFF
&_BODEN_OFF
&_WRT_OFF
&_LVP_OFF &_CPD_OFF
_CP_OFF
代码保护关闭
_WDT_OFF
看门狗关闭
_BODEN_OFF
_PWRTE_ON
上电延时定时器打开
_XT_OSC
XT
振荡模式
_WRT_OFF
禁止
Flash
程序空间写操作
_LVP_OFF
禁止低电压编程
_CPD_OFF
EEPROM
数据读保护关闭
LVP
Low Voltage Program
低电压编程
CP
Code Protect
代码保护
Date EE Read Protect
EEPROM
数据读保护
Brown Out Detect
Power Up Timer
Watchdog Timer
Flash Program
Write
外部时钟输入(
HS
,<
/p>
XT
或
LP
OSC
配置)如下图:
&_PWRTE_ON
&_XT_OSC
陶瓷
(
ce
ramic
)
谐振器电容的选择
如下表
:
配置字(
__CONFIG
)
:
一般情况为:
11
1111
0011
0001
0x3F31
或
0x3F71
位
13
CP
:闪存程序存储器代码保护位
1
1=
代码保护关闭
0=
所有程序存储器代码保护
位
12
未定义
:读此位为
1
1
位
11
DEBUG
:在线调试器模式位
1
1=
禁止
在线调试器,
RB6
和
RB7
是通用
I / O
引脚
0=
在线调试功能开启,
RB6
和
RB7
专用于调
试
位
10
:
9
WRT1
:
WRT0
:闪存程序存储器的写使能位
11
PIC16F876A / 877A
11=
写
保护关闭,所有的程序存储器可能被写入由
EECON
控制
p>
10=
0000h-00FFh
写保护,
0100h-1FFFh
p>
写入由
EECON
控制
01=0000h-07FFh<
/p>
写保护,
0800h-1FFFh
写入由
EECON
控制
00=0000h-0FFFh<
/p>
写保护,
1000h-1FFFh
写入由
EECON
控制
位
8
CPD
:数据
EEPROM
存储器代码保护位
(
Code Protection
bit
)
1
1=
数据
EEPROM
存储器代码保护关闭
0=
数据
EEPROM
存储器代码保护功能开启
位
7
LVP
:低电压(单电源)在线串行编程使能位
(Low
V
oltage Program
)
0
p>
1=RB3/PGM
引脚有
PGM
功能,低电压编程启用
0=RB3
是数字
I / O
引脚,
HV(
高电压
13V
左右
)
加到
MCLR
必须用于编程
位
6
BOR
EN
:欠压复位使能位(低电压检测复位)
(
Brown-out
Reset(Detect)
)
0
1=
低电
压检测复位
BOR
(
BOD
)模块启用
p>
0=
低电压检测复位
BOR
(
BOD
)模块关闭
位
5:4
未定义
:读此两位均为
1
11
位
3
PWR
TEN
:上电定时器使能位(上电复位延时定时器)
(
Power-up
Timer
)
0
1=
上电定时器关闭
0=
上电定时器开启
位
2
WDT
:看门狗定时器使能位
0
晶体振荡器电容的选择
1=
看门狗开启
如右图:
0=
看门狗关闭
位
1
:
0
Fosc1
:
Fosc0
:振荡器选择位
01
11=RC
振荡器
10=
晶
体振荡器
HS
模式。参考振荡频率范围:
>2 MHz
01=
晶体振荡器
XT
模式。参考振荡频率范
围:
100 kHz ~ 4 MHz
00=
晶
体振荡器
LP
模式。参考振荡频率范围:
<200 kHz
OPTION_REG
寄存器
:
位
7
p>
RBPU
:
PORTB
输入引脚内部弱上拉使能控制位
1=
所有
P
ORTB
的内部弱上拉被禁止
0=
设定为输入状态的引脚内部弱上
拉被使能
位
6
INTEDG
:选择
RB0/INT
引脚的中断沿
1=RB0/INT
上升沿中断
0=RB0/INT
下降沿中断
位
5
T0C
S
:选择
TMR0
的计数时钟源
1=
外部脉冲沿跳变计数
0=
内部指令周期计数
位
4
T0SE
:选择计数的外部脉冲沿
1=T0CKI
脉冲上升沿计数
0=T0CKI
脉冲下降沿计数
位
3
PSA
:预分频器指派
1=
预分
频器分配给看门狗定时器
WDT
,此时
TMR0
的计数预分频为
1:1
0=
预分频器分配给
TMR0
位
2
:
0
PS2
:
PS0
:设定预分频器的分频系数如下表所示
< br>
分频设定
000
001
010
011
100
101
110
111
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
T1CON
寄存器:
位
7
:
6
没有定义,读此两位的结果为
0
位
5
:
4
T1CKPS1
< br>:
T1CKPS0
:
TMR1<
/p>
预分频设置
p>
11=
预分频系数
1
:
8
10=
预分频系数
1
:
4
01=
预分频系数
1
:
2 <
/p>
00=
预分频系数
1
:
1
位
3
T1OSCEN
:
TMR1
内部振荡器控制位
1=
打开
内部振荡器,反相放大器工作,需外接晶体产生振荡时钟
0=
关闭内部振荡电路
位
2
T1S
YNC
:
TMR1
同步
/
异步计数控制位
1=
异步计数模式
0=
同步计数模式
位
1
TMR
1CS
:选择
TMR1
的计数时钟源<
/p>
1=T1CKI
引脚上的上升沿计数
0=
内部
指令周期计数(
Fosc/4
)
位
0
TMR
1ON
:
TMR1
计数允许
/
禁止控制位
1=TMR1
可以计数
0=TMR1
计数暂停
T2CON
寄存器:
位
7
没有定义,读此位的结果为
0
位
6
:
3
TOUTPS3
< br>:
TOUTPS0
:
TMR2<
/p>
计数溢出后分频设置
0000=
后分频系数
1
:
1
0001=
后分频系数
1
:
2
……
1111=
后分频系数
1
:
16
位
2
TMR
2ON
:
TMR2
计数允许
/
禁止控制位
1=TMR2
可以计数
0=TMR2
计数暂停
位
1
:
0
T2CKPS1
< br>:
T2CKPS0
:
TMR2<
/p>
预分频设置
00=
1
:
1
预分频
01=
1
:
4
预分频
1x= 1
:
16
预分频
CCPxCON
寄存器:
位
7
:
6
没有定义,读此两位的结果为
0
位
5
:
4
CCPxX
:
CCPxY
:
TMR1
预分频设置
捕捉模式:
未用
比较模式:
未用
PWM
模式:
PWM
模式占空比控制字为
10
位,
最低
2
位即放在
CCPxX
:
CCPxY
中,高
8<
/p>
位
数据放入专门的一个寄存器
CCPRx
L
位
3
:
0
CCPxM2
:
CCPxM0
:
CCP
模块工作模
式选择位
0000 =
关闭所有模式,
CCPx
模块处于复位状态
0100
=
捕捉模式,每一个上升沿捕捉一次
0101
=
捕捉模式,每一个下降沿捕捉一次
0110 =
捕捉模式,每
4
个上升沿捕捉一次
0111 =
捕捉模式,每
16
个上升沿捕捉一次
1000 =
比较模式,预置
CCPx
引脚输出为
0
,比较一致时
CCPx
引脚输出为
1
1001 =
比较模式,预置
CCPx
引脚输出为
1
,比较一致时
CCPx
引脚输出为
0
1010 =
比较模式,当比较一致
时
CCPxIF=1
产生软中断,
CC
Px
引脚没有变化
1011 =
比较模式,当比较一致
时
CCPxIF=1
且触发特殊事件
11xx
=PWM
模式
INTCON
寄存器:
位
7
GIE
:全局中断使能控制位
1=
允许
中断,但各中断还有独立的使能控制位
0=
禁止所有的中断,不管各自的中
断是否允许
位
6
PEIE
:外围功能模块中断允许控
制位
1=
允许外围功能模块中断
0=
禁止所有外围功能模块中断
位
5
TMR
0IE
(
T0IE
)
< br>:
TMR0
中断使能控制位
1=
允许
TMR0
中断
0=
禁止
TMR0
中断
位
4
INT
E
:
RB0/INT
引脚沿跳变中断允
许控制位
p>
1=
允许
RB0/INT
< br>引脚中断
p>
0=
禁止
RB0/INT
< br>引脚中断
位
3
RBIE
:
PORTB
引脚状态变化中断使能控制位
1=
允许
PORTB
状态变化中断
0=
禁止
PORTB
状态变化中断
位
2
TMR
0IF
(
T0IF
)
< br>:
TMR0
中断标志位
1=TMR0
计数溢出发生中断,必须用软件将其清除
0=TMR0
没有溢出中断
位
1
INT
F
:
RB0/INT
引脚沿跳变中断标
志
1=R
B0/INT
引脚发生中断,必须用软件将其清除
0=
没有
发生
RB0/INT
引脚中断
位
0
RBI
F
:
PROTB
引脚状态变化中断标志
位
1=P
ORTB
引脚出现状态变化中断,必须用软件将其清除
0=PORTB
< br>引脚没有发生状态变化中断
STATUS
寄存器:
PIE1
寄存器:
PIR1
寄存器:
PIE2
寄存器:
PIR2
寄存器: