英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
PIC16C71单片机的问题和对策
[打印本页]
作者:
kingman
时间:
2009-4-18 19:51
标题:
PIC16C71单片机的问题和对策
问题
1
:
在芯片进入低功耗睡眠模式
(SLEEP MODE)
后,其振荡脚将处于浮态,这将使芯片的睡眠功耗上升,比原手册中的指标高了
10μA
以上。
对策:
在振荡脚
OSC1
和地
(GND)
之间加一
10M
Ω
电阻可防止
OSC1
进入浮态,且不会影响单片机正常振荡。
问题
2
:
RA
口方向寄存器
TRISA
目前只是一个
4
位寄存器,对应于
RA0~RA3
,并非手册中所言是
8
位寄存器,对应于
RA0~RA4
,即
RA4
并没有相应的输入
/
输出方向控制位,它是一个具有开极输出,施密特输入
I/O
脚。
对策:
避免使用对
RA
口进行读
-
修改
-
写指令(如
BCF RA
,
BSF RA
),以免非意愿地改变
RA4
的输入
/
输出状态。对于
RA
口的操作应采用寄存器的操作方式(
MOVWF RA
)。
问题
3
:
当
CPU
正在执行一条对
INTCON
寄存器进行读
-
修改
-
写指令时,如果发生中断请求,则读中断例程会被执行二次。这是因为当中断请求发生后
INTCON
寄存器中的
GIE
位会被硬件自动清零(屏蔽所有中断),并且程序转入中断例程入口(
0004H
)。当
GIE
位被清零后,如果这时正好
CPU
在执行一条对
INTCON
的读
-
修改
-
写指令(如
BSF INTCON
等),则
GIE
位还会被写回操作重新置
1
,这样会造成
CPU
二次进入中断例程。
对策:
如果在程序中需对
INTCON
的某一中断允许位进行修改,则应事先置
GIE=0
,修改完成后再恢复
GIE=1
。
…………..
BCF INTCON, GIE
BSF INTCON, ×××
BSF INTCON, GIE
…………..
问题
4
:
当芯片电压
VDD
加电上升时间大于
100μs
时,电源上电复位电路
POR
和电源上电延时器
PWRT
可能不能起正常的作用,而使芯片的复位出现不正常(即
PC≠
复位地址)。一般在这种情况下建议不要采用
PWRT
。
对策:
如果
VDD
上升时间很长,此芯片一般需较长的电源上电延时,可靠的电源上电延时方法如图
1
所示,在
MCLR
端外接复位电路。
问题
5
:
如果在
A/D
转换中用
RA3
作为参考电压输入,则最大满量程误差
(NFS)
要大于手册中的指标。实际情况如表
1
所示。
表
1 A
/D
满量程误差表
VREF
源
(
5.12V
)
满量程误差
(
NFS
)
VDD
<
±1 LSb
RA3
<
±2.5 LSb
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2