📄 the01.htm
字号:
</tr>
<tr>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >200KHz</p></td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >15-30P</p></td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >100-200P</p></td>
</tr>
<tr bgcolor="#FFFFFF">
<td rowspan="3" > </td>
<td rowspan="3" > <p class="lh15" >4MHz</p></td>
<td rowspan="3" > <p class="lh15" >10-22P</p></td>
<td rowspan="3"> <p class="lh15" >10-22P</p></td>
<td valign="top" > </td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >1MHz</p></td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >15-30P</p></td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >15-30P</p></td>
</tr>
<tr>
<td valign="top" bgcolor="#FFFFFF" > </td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >2MHz</p></td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >15P</p></td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >15P</p></td>
</tr>
<tr >
<td valign="top" bgcolor="#FFFFFF"> </td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >4MHz</p></td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >15P</p></td>
<td valign="top" bgcolor="#FFFFFF" > <p class="lh15" >15P</p></td>
</tr>
</table>
<p class="lh15" >
a. 陶瓷振荡
b.晶体振荡</p>
<p align="center" class="lh15" >表1.3 各种振荡下的C1和C2值</p>
<p class="lh15" ><b>§1.11.2 外部RC振荡</b></p>
<p ><span class="lh15">这种振荡类型成本最低,但频率的精确性较差,适用于时间精确度要求不高的应用场合。RC振荡的频率是VDD、RC值以及环境温度的函数。请参阅附录的RC频率函数图。RC
振荡的连接如图1.18所示。 </span> </p>
<p class="lh15" align="center" >
<img src="image/the01.15.jpg" v:shapes="_x0000_s1026" width="280" height="158"><br>
图1.18 RC振荡电路</p>
<p class="lh15" >RC振荡是在OSC1端连接一个串联的电阻电容。这个电阻如果低于2.2K,振荡不稳定,甚至不能振荡,但是电阻高于1M时,则振荡又易受干扰。所以电阻值最好取5K~100K之间。尽管电容C为0时,电路也能振荡,但也易受干扰且不稳定,所以电容值应取20P以上。RC值和频率关系如表1.4所示。RC振荡时OSC2端输出一OSC1的4分频脉冲(f=1/4OSC1)。</p>
<div align="center">
<table border="0" cellspacing="1" cellpadding="0" bgcolor="#000000" >
<tr bgcolor="#EBEBEB" >
<td width="91" class="lh15" > Rest</td>
<td width="91" class="lh15" > Cext</td>
<td width="91" class="lh15" > VDD</td>
<td width="91" class="lh15" > Fosc/25℃</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="91" class="lh15" > 5kΩ</td>
<td width="91" class="lh15" > 0PF</td>
<td width="91" class="lh15" > 5.0</td>
<td width="91" class="lh15" > 4.0MHz</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="91" class="lh15" > 5kΩ</td>
<td width="91" class="lh15" > 20PF</td>
<td width="91" class="lh15" > 6.0</td>
<td width="91" class="lh15" > 2.2MHz</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="91" class="lh15" > 5kΩ</td>
<td width="91" class="lh15" > 20PF</td>
<td width="91" class="lh15" > 3.5</td>
<td width="91" class="lh15" > 2.5MHz</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="91" class="lh15" > 10kΩ</td>
<td width="91" class="lh15" > 130PF</td>
<td width="91" class="lh15" > 5.0</td>
<td width="91" class="lh15" > 480MHz</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="91" class="lh15" > 10kΩ</td>
<td width="91" class="lh15" > 290PF</td>
<td width="91" class="lh15" > 5.0</td>
<td width="91" class="lh15" > 245MHz</td>
</tr>
<tr bgcolor="#FFFFFF" >
<td width="91" class="lh15" > 100kΩ</td>
<td width="91" class="lh15" > 300PF</td>
<td width="91" class="lh15" > 3.5</td>
<td width="91" class="lh15" > 30MHz</td>
</tr>
</table>
</div>
<p align="center" class="lh15" >表1.4 RC与频率的关系</p>
<p class="lh15" ><b>§1.11.3 外部振荡</b></p>
<p class="lh15" >PIC12C5XX也可以接受外部振荡源(仅适合于XT和LP类型振荡),连接时将外部振荡接入GP5/OSC1/CLKIN端,见下图:
</p>
<p class="lh15" align="center" >
<img src="image/the01.16.jpg" v:shapes="_x0000_s1027" width="277" height="130"><br>
图1.19 外部振荡源输入电路</p>
<p class="lh15" ><b>§1.11.4 内部RC振荡</b></p>
<p class="lh15" >PIC12C5XX内部提供有4MHz的RC振荡源供用户选择使用,选择振荡方式和振荡源的方法见§1.12.9详介。</p>
<p class="lh15" >在PIC12C5XX的程序区最顶端(12C508:1FFh,12C509:3FFh)放了一条MOVLW
XX的指令, XX是内部RC振荡的校正系数。芯片上电后,PC指针指向程序区最顶端,执行完这条指令后PC 值加1变为000h。这时W寄存器中存放即是内部RC振荡的校正系数,用户可以把这个系数置入OSCCAL寄存器(05h)以便使其起校正作用,也可以忽略不管它。</p>
<p class="lh15" > 例:
<br>
0
;定义存储区地址0<br>
MOVWF
OSCCAL
;把W中的校正系数置入OSCCAL。</p>
<p class="lh15" ><b><font size="2">§1.12 复 位(RESET)</font></b></p>
<p class="lh15" >PIC12C5XX有各种各样原因造成的芯片复位:<br>
<br>
1、芯片上电<br>
2.、MCLR端加低电平<br>
3、看门狗WDT超时溢出<br>
4、睡眠中某些I/O口线电平发生变化</p>
<p class="lh15" >当芯片处于复位状态时,所有I/O口线都处于输入状态(高阻态),看门狗WDT和预分频器都被清零。</p>
<p align="center" class="lh15" >图1.20 片内复位电路(暂缺)</p>
<p class="lh15" ><b>§1.12.1 复位定时器(DRT)</b></p>
<p class="lh15" >复位定时器DRT(在PIC16C5X 中我们称其为OST)是为了使芯片的复位可靠安全而设计。在PIC12C5XX中,对于XT和LP振荡方式,上电后它们还需要一定的时间来建立稳定的振荡。有鉴于此,PIC12C5XX内部设计了一个复位定时器DRT。DRT在MCLR端到达高电平(VIHMC)后,即启动计时18ms,这样可以使芯片保持在复位状态约18ms以便让振荡电路起振及稳定下来,然后芯片即脱离复位状态进入正常运行状态。DRT的振荡源是芯片内专有的RC振荡电路,所以外围电路并不能改变其18ms的计时时间。</p>
<p class="lh15" >当WDT计时溢出后,DRT也是启动18ms使芯片保持在复位状态,然后再重新开始运行程序。</p>
<p class="lh15" >注意,在振荡方式是外部RC或内部RC时,DRT都关闭不起作用。</p>
<p class="lh15" ><b>§1.12.2 芯片上电复位(POR)</b></p>
<p class="lh15" >PIC12C5XX在芯片内集成有上电复位电路,见图1.20所示。当芯片电源电压VDD上升到一定值时(1.5V-2.1V),检测电路即会发出复位脉冲使芯片复位。</p>
<p class="lh15" ><b>§1.12.3 MCLR复位</b></p>
<p class="lh15" >PIC12C5XX的GP3/MCLR端可以由用户定义为普通输入口GP3或复位端MCLR,如下图:</p>
<p align="center" class="lh15" >图1.21 GP3/MCLR端电路(暂缺)</p>
<p class="lh15" >具体方法参见§1.12.9有关描述。</p>
<p class="lh15" >一旦用户选择MCLR功能,则该端输入低电平会使芯片进入复位状态。</p>
<p class="lh15" ><b>§1.12.4 外部复位电路</b></p>
<p class="lh15" align="center" >在某种情况下,DRT计时18ms后,芯片的振荡电路还不能稳定或供电电压(VDD)还不能达到标准值,这时如果芯片脱离复位状态进入运行,则芯片就有可能失控或运行不正常。为了使芯片脱离复位状态时各部分都处于正常,可以在MCLR端上加外部RC复位电路来延长复位时间,如下图:<span class="lh15"><br>
<img src="image/the01.17.jpg" v:shapes="_x0000_s1029" width="146" height="104"><br>
图1.22 外部复位电路 </span> </p>
<p class="lh15" >这个电路可以使VDD上升到标准值一段时间后,MCLR才会上升到高电平,从而启动DRT计时18ms后才进入运行。这样可以延长整个复位过程,保障芯片复位后进入正常运行。</p>
<p class="lh15" ><b>§1.12.5 掉电复位锁定</b></p>
<p class="lh15" >当单片机的供电电压掉到最小标准值以下后,可能会使芯片的运行出现异常,从而扰乱整个控制系统,所以在某些应用中,我们希望一旦VDD掉到某个值时使芯片自动进入复位状态(所有I/O口都变成高阻态)以免扰乱系统,下面是一个PIC12C5XX掉电复位锁定的电路:</p>
<p >
<p align="center" class="lh15" ><img src="image/the01.18.jpg" v:shapes="_x0000_s1028" width="285" height="183"><br>
图1.23 掉电复位锁定</p>
<p class="lh15" > 当VDD电压恢复上升到标准值以上后,MCLR端恢复为高,从而使芯片恢复正常运行。</p>
<p class="lh15" ><b>§1.12.6 复位对寄存器的影响</b></p>
<p class="lh15" >对于通用寄存器来说,上电复位后它们的值是随机不定的,其他类型的复位后则保持原值不变。</p>
<p class="lh15" >对于特殊寄存器,各种复位后它们都会等于一个固
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -