📄 pic16cxxx-1-7.htm
字号:
<html>
<head>
<title>PIC16Cxxx单片机应用与设计</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
BODY {font-size:12px;font-family:宋体;}
td {font-size:12px;font-family:宋体;}
A:link { COLOR: #0000ff; TEXT-DECORATION: underline}
A:visited { COLOR:#0000ff; TEXT-DECORATION: underline}
A:active { COLOR:red! important; TEXT-DECORATION: underline}
A:hover { TEXT-DECORATION: none}
.b24 a:link { FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:visited {FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:active { FONT-SIZE: 12px; COLOR:#0000ff; TEXT-DECORATION: underline}
.b24 a:hover { FONT-SIZE: 12px; COLOR:#990000; TEXT-DECORATION: none}
.lh13 { LINE-HEIGHT: 130%}
.lh15 { LINE-HEIGHT: 150%}
.lh17 { LINE-HEIGHT: 170%}
.lh19 { LINE-HEIGHT: 190%}
.lh30 { LINE-HEIGHT: 300%}
-->
</style>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" >
<table width="778" border="0" cellspacing="0" cellpadding="0">
<tr align="center">
<td> </td>
</tr>
<tr align="center">
<td> <table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="41%" height="46" valign="top"><img src="logo.gif" width="205" height="41"></td>
<td height="46" width="59%" valign="bottom" align="right"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="right"><b><font style="font-size:16px" color="#990000">——
—— —— 技术资料下载中心</font></b> </td>
</tr>
<tr>
<td height="8"></td>
</tr>
</table></td>
</tr>
<tr>
<td height="1" colspan="2"></td>
</tr>
<tr bgcolor="#990000">
<td height="1" colspan="2"></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><font style="font-size:16px" color="#000000"><b>>> <a href="index.htm">PIC16CXXX单片机应用与设计</a>
\</b></font></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="2" class="lh15">
<tr>
<td align="center"><b><font size="3">第一章 PIC16C6X单片机</font><font size="3"></font></b></td>
</tr>
<tr>
<td> <p> </p></td>
</tr>
<tr valign="top">
<td height="300"> 二、SCI同步主控接收<br> 置SREN(RCSTA<5>)=1或CRENR(STA<4>)=1即进入同步主控接收,CPU在CK的下降沿采样DT线上的信号。如果SREN=1,将仅接收一个字节,如果CREN=1,则连续地接收数据,直至CREN被清为0。如果SREN和CREN都置为1,则以CREN有效而进行连续接收。<br>
一个数的所有位都被采样后,CPU即把接收移位寄存器RSR的内容(收到的数)置入RCREG寄存器,然后置RCIF(PIR1<5>)=1而发出中断请求。当用户程序把RCREG寄存器中的数取走后,RCIF位即清为0,以准备下一个数的接收。实际上RCREG是一个二层的先进先出缓冲寄存器,所以它允许存放二个接收到的数据,同时还有第三个数还在接收中,用户程序可以连续读二次RCREG寄存器,把二个数取走。如果第三个数接收完毕,而RCREG中仍有二个数未被读取,则标志位OERR(RCSTA<1>)=1,这会禁止RSR中的数据转载入RCREG,这样第三个数据(在RSR中)可能会弄失。OERR位是只读位,程序必须通过清CREN=0来清零OERR位。<br>
如果接收的是9位数,则第9位数放在RCD8(RCSTA<0>)中,用户必须先读RCD8
以取得第9<br>
位,然后再读RCREG取得前8位。<br>
综上所述,SCI主控接收应按以下步骤:<br> 1. 初始化SPBRG以获得想要的波特率;<br>
2. 使能同步主控串行口(置SYNC=1、SPEN=1和CSRC=1); <br>
3. CREN=SREN=0;<br> 4.
如需要中断功能,置RXIE=1;<br> 5. 如要接收9位数,置RX8/9=1;<br>
6. 如只要接收一个数,置SREN=1;如果要连续接收数据,则置CREN=1;<br>
7. 一个数接收完成,置RCIF=1,发出中断请求;<br> 8.
读OERR(RCSTA<1>),看是否发生错误;<br> 9. 如果接收9位数,则读取RCD8(RCSTA<0>);<br>
10. 如果发生错(OERR=1),则清CREN=0以清零OERR位。<br> <p align="center"><img src="image/a127.gif" width="572" height="225"></p>
<p align="center">图1.55 SCI同步主控接收时序</p>
<p> 下表列出了和同步主控接收有关的寄存器。</p>
<p align="center"><img src="image/a128.gif" width="673" height="370"></p>
<p>§1.12.5 SCI同步从属模式<br>
<br>
同步从属模式和主控模式的不同之处是其时钟信号(CK)是由外部提供的。这样即使CPU在睡眠(Sleep)状态下仍然可以发送或接收数据。<br>
清CSRC(TXSTA<7>)=0,则进入同步从属模式。<br>
<br>
一、SCI同步从属发送同步从属发送和同步主控发送基本上是一样的,只有一点不同,那就是从属方式下时钟信号由外部供给而非使用单片机内部的时钟信号,所以在单片机睡眠状态下,从属发送仍然可以进行。<br>
假设目前已有二个要发送的数放在TXREG寄存器中,此时如果执行Sleep 指令而使单片机进入睡眠,则TXREG中的第一个数据将马上转置入发送移位寄存器TSR中进行发送,第二个数据仍保留在TXREG中。这时候TXIF不像平常那样被置成1,即不发中断请求。一直等到第一个数发送完毕,TXREG中的第二个数据再转置入TSR中发送,此时就会置TXIF=1,发出中断请求。如果该中断是允许的(TXIE=1),这个中断请求将唤醒睡眠中的单片机,并跳到中断向量入口地址(0004H)处执行中断例程。<br>
下面是建立同步从控发送的步骤:<br>
1. 置SYNC=1,SPEN=1和CSRC=0;<br>
2. CREN=SREN=0;<br>
3. 如果需要中断,置TXIE=1;<br>
4. 如果要发送9位数,置TX8/9=1;<br>
5. 置TXEN=1,使能传送功能;<br>
6. 如果发送9位数,将第9位置入TXD8;<br>
7. 把发送的数置入TXREG,开始发送。<br>
下表列出了和同步从属发送有关的寄存器。</p>
<p><img src="image/a129.gif" width="670" height="381"></p>
<p>二、SCI同步从属接收<br>
同步从属接收和同步主控接收基本上也是一样,也是只在单片进入睡眠状态时它们才有区别。另外,在从属模式下,SREN位不起作用。<br>
假设在执行SLEEP指令前单片机处于接收状态(CREN=1),则单片机进入睡眠后仍可以接收一个外部送来的数据。当该数据接收完成后,RSR中的数据将转置入RCREG并产生中断请求(RCIF=1),如果中断是允许的(RCIE=1),那么这个中断请求就会唤醒单片机,并转入中断例程。<br>
进行同步从属接收的步骤如下:<br>
1. 置SYNC=1,SPEN=1和CSRC=0;<br>
2. 如果需要中断,置RCIE=1;<br>
3. 如果要接收9位数,置RX8/9=1;<br>
4. 置CREN=1使能接收功能;<br>
5. 接收完成后,置RCIF=1,发中断请求;<br>
6. 如果允许中断(RCIE=1)则进入中断例程;<br>
7. 如果是9位数,读入第9位RCD8;<br>
8. 读取RCREG中的8位数据;<br>
9. 如果OERR=1,清CREN=0以清零OERR位。</p>
<p><img src="image/a130.gif" width="671" height="409"></p>
§1.13 CPU的特性<br> <br> PIC16CXX单片机集成了一系列优良的微处理器特性,以使其应用更经济、更方便、更可靠。下面就各种特性逐一细述。<br>
<br>
§1.13.1 系统定义字(Configuration)<br> <br> 在PIC16CXX中有一个13位长的字节,内含系统定义位,用来定义单片机的一些系统性能,见下图所示:<br>
<p align="center"><img src="image/a131.gif" width="609" height="530"></p>
<p><br>
系统定义字的地址在2007H,不占单片机的程序存储器空间,属于特殊的测试/定义空间,不能由程序指针(PC)所访问,用户可以用烧写器对其进行编程,参见开发工具篇的描述。<br>
关于系统定义字节各种定义的意义,下面分别还要详细描述。<br>
<br>
§1.13.2 振 荡<br>
<br>
一、振荡类型<br>
PIC16CXX可以运行在4种类型的振荡方式:<br>
1. LP ─ 低频晶体振荡<br>
2. XT ─ 标准晶体/陶瓷振荡<br>
3. HS ─ 高速晶体/陶瓷振荡<br>
4. RC ─ 阻容振荡<br>
<br>
二、连接方式<br>
1. 晶体和陶瓷振荡的连接如下图所示:</p>
<p align="center"><img src="image/a132.gif" width="268" height="239"></p>
<p align="center">图1.57 晶体/陶瓷振荡连接<br>
</p>
下表列出了在各种情况下C1和C2的值。<br> <br> <div align="center">
<p><img src="image/a133.gif" width="407" height="481"></div>
<p>电容值大有利振荡的稳定,但却延长了起振时间。上表的数据供设计时参考,可满足一般的要求。<br>
2. 外部振荡<br>
外部振荡信号(仅限于HS、XT和LP)可以从OSC1端输入,如下图所示:</p>
<p align="center"> 图1.58 外部振荡电路</p>
<p>3. RC振荡<br>
这种振荡成本最低,但频率的精确性较差,易受工作环境的影响,适用于时序精度要求不高的应用场合。RC振荡的频率是VDD、RC值及环境湿度的函数,并且每个芯片也会有所不同。<br>
RC振荡是在OSC1所连一个串联的电阻电容电路,如下图所示:</p>
<p align="center"><img src="image/a134.gif" width="272" height="172"></p>
<p align="center">图1.59 RC振荡电路</p>
<p>电阻如果低于2.2KΩ,振荡会不稳定,甚至不能振荡。但是如果高于1MΩ,则振荡又易受干扰。所以电阻值最好取5K~100K之间。尽管电容C值为0时,电路也能振荡,但易受干扰且不稳定。RC值和频率关系如下表所示:</p>
<p align="center"><img src="image/a135.gif" width="427" height="194">
</p>
另外采用RC振荡时,OSC2端可输出OSC1的4分频信号。
<div align="center"></div>
<p align="right"> <a href="PIC16Cxxx-1-6.htm">上一页</a> <a href="PIC16Cxxx-1-8.htm">
下一页</a><br>
</p>
<p><a href="PIC16Cxxx-1.htm">第一章</a> <a href="PIC16Cxxx-2.htm">第二章</a>
<a href="PIC16Cxxx-3.htm">第三章</a> <a href="PIC16Cxxx-4.htm">第四章</a>
<a href="PIC16Cxxx-5.htm">第五章</a> <a href="PIC16Cxxx-6.htm">第六章</a>
<a href="PIC16Cxxx-7.htm">第七章</a> <a href="PIC16Cxxx-8.htm">第八章</a>
<a href="PIC16Cxxx-9.htm">第九章</a> <a href="PIC16Cxxx-10.htm">第十章</a></p></td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"> </td>
<td> </td>
</tr>
</table>
<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#990000">
<td height="1" width="634"></td>
</tr>
<tr align="right">
<td height="6"></td>
</tr>
<tr align="right">
<td><font color="#990000" size="2">[ <a href="index.htm">返回</a> ]</font>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -