⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pic16cxxx-1-3.htm

📁 PIC单片机C语言教程!绝对经典
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<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>&nbsp;</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">&nbsp;</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">&nbsp;</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>&nbsp;</p></td>
        </tr>
        <tr valign="top"> 
          <td height="300"> <p>五、寄存器PIR1</p>
            <p><img src="image/a32.gif" width="425" height="79"><br>
              该寄存器包含外设中断的中断标志位。</p>
            <p align="center"><img src="image/a33.gif" width="598" height="746"> 
            </p>
            <p>六、寄存器PIE2 </p>
            <p align="center"><img src="image/a34.gif" width="249" height="78"> 
            </p>
            <p>该寄存器包含了CCP2的中断使能位,关于CCP功能,请参考有关章节。</p>
            <p align="center"> <img src="image/a35.gif" width="409" height="232"></p>
            <p>七、寄存器PIR2</p>
            <p> 
            <p align="center"><img src="image/a36.gif" width="467" height="488"> 
            </p>
            <p>八、寄存器PCON</p>
            <p><img src="image/c2.gif" width="440" height="81"></p>
            <p>该寄存器包含一个称为&quot;上电复位&quot;标志位,用来区别上电复位和别的复位(如MCLR拉低或WDT超时等造成的复位)。</p>
            <p><img src="image/a37.gif" width="445" height="797"> </p>
            <p>九、寄存器PC和PCLATH<br>
              &nbsp;&nbsp;&nbsp;程序计数器PC是一个13位宽的寄存器,分成二个部份:低8位PCL(地址:02h)可读/写,高5位PCH不能直接读/写,而是通过寄存器PCLATH(地址:10h)载入。PC 
              值的各种载入情况见下图所示:<br>
            <p align="center">图1.15 不同指令下程序计数器PC值的载入方式<br>
              <img src="image/a38.gif" width="275" height="224"> </p>
            <p>&nbsp;&nbsp;&nbsp;对于PIC16C65/63,程序空间达4K字节,但地址跳转指令CALL和GOTO的指令码中仅有11位的地址信息,只能在2K空间内跳转。所以在PIC16C63/65中,把4K程序空间分成2页,每页2K,再把寄存器PCLATH&lt;3&gt;位作为页面选择位,这样,就可以在4K空间内跳转。方法是当发生跨页面的CALL或GOTO时,先预置PCLATH&lt;3&gt;,使之指向所希望的页面(0或1)。下面是一个例子:</p>
            <p align="center"><img src="image/a40.gif" width="417" height="215"></p>
            &nbsp;&nbsp;&nbsp; <p>大家注意到RETURN指令之前不必理会页面位PCLATH&lt;3&gt;,因为在发生中断时,13 
              位的PC值被全部压入堆栈中保留,所以跨页面的CALL结束后,执行RETURN 指令即会返回到原先的页面。<br>
              &nbsp;&nbsp;&nbsp;在开始写汇编程序时,由于不考虑指令在存储器中的实际位置,不会注意到哪个CALL或GOTO是跨页面。在用MPASM汇编时,它会发出警告信息。这时可根据提示信息修改编辑汇编程序,作相应的页面预置处理,然后再重新进行汇编。<br>
              &nbsp;&nbsp;&nbsp;对于PIC16C61/62/64,则不存在程序页面选择的问题。<br>
              <br>
              十、寄存器INDF和FSR<br>
              &nbsp;&nbsp;&nbsp;&nbsp;INDF寄存器(地址0)不是一个物理上存在的寄存器,是一个虚拟的逻辑寄存器,它用以实现间接寻址。当寻址INDF时,实际上是访问FSR寄存器(地址4h)内容所指的单元。<br>
              &nbsp;&nbsp;&nbsp;&nbsp;以下程序采用间接寻址方式将20h-2Fh的寄存器(RAM)单元清零。</p>
            <p align="center"><img src="image/a41.gif" width="508" height="551"><br>
            </p>
            <p><img src="image/a42.gif" width="588" height="383"></p>
            <p>§1.8 I/O 口 <br>
              <br>
              &nbsp;&nbsp;&nbsp;&nbsp;PIC16C64/65有5个I/O口,PIC16C62/63有3个I/O口,PIC16C61则只有2个I/O 
              口。 这些I/O管脚有的和某些外部功能部件复用,即可以作为一般的I/O引脚, 也可以作为某些特殊功能的输入/输出。PIC16CXX把I/O口都作为寄存器来处理,编程寻址非常方便。 
            </p>
            <p> §1.8.1 PORTA和TRISA </p>
            <p> &nbsp;&nbsp;&nbsp;&nbsp;对于PIC16C62/63/64/65,PORTA是6位宽的I/O口;而对于PIC16C61而言,PORTA 
              则只有5位。RA4具有斯密特输入和集电极开路输出,其他所有的RA脚都具有TTL输入和CMOS输出, 其方向可由寄存器TRISA相应的位来定义,&quot;1&quot;定义为输入,&quot;0&quot;则为输出,见下图。 
            </p>
            <p align="center"><img src="image/a43.gif" width="476" height="377"></p>
            <br> &nbsp;&nbsp;&nbsp;&nbsp;I/O脚定义为输入时即为高阻态,定义为输出时则其输出锁存器的输出电平就是I/O 
            脚输出电平。<br>
               读PORTA寄存器的结果是读取I/O管脚上的电平,而写PORTA寄存器的结果是写入I/O 锁存器。所有的 写I/O口的操作都是一个&quot;读入/修改/ 
            写入&quot;的过程,即先读入I/O脚电平,然后由程序修改(指定一个值),最后再置入I/O锁存器。<br> <p> 
            <p align="center"><img src="image/a44.gif" width="419" height="300"></p>
            <br>
            §1.8.2 PORTB和TRISB 
            <p>&nbsp;&nbsp;&nbsp;&nbsp;PORTB是一个8位,双向可编程的I/O口,相应的方向寄器为TRISB(地址:86h)。</p>
            <p align="center"><img src="image/a45.gif" width="337" height="137"></p>
            &nbsp;&nbsp;&nbsp;&nbsp; PORTB每个管脚都有可编程之弱上拉,设置RBPu位(OPTION&lt;7&gt;)可以打开/关闭这些弱上拉。当I/O管脚被设成输出时,则其弱上拉自动关闭。当芯片上电复位后,RBPu=1,所有弱上拉被关闭,可由用户程序将它们打开(置RBPu=0)。<br> 
            &nbsp;&nbsp;&nbsp;&nbsp;另外PORTB还有一个重要特性,即RB&lt;7:4&gt;这4根I/O线具有&quot;电平变化中断&quot;功能,就是当RB&lt;7:4&gt;管脚上的电平发生变化,可以引起CPU中断, 
            但仅当I/O 脚定义为输入时这个功能才有效。<br> &nbsp;&nbsp;&nbsp;&nbsp;这种中断可以把CPU从&quot;睡眠&quot;(SLEEP)状态中唤醒。<br> 
            &nbsp;&nbsp;&nbsp;&nbsp;PORTB 的&quot;电平变化中断&quot;以及可编程弱上拉特性使之可以非常方便地构成一个键盘矩阵,特别是对于那些希望以键盘按动来唤醒CPU工作的设计,最理想不过,如手持式仪器,遥控器,计算器等。在不用的时候,CPU处于睡眠状态(低功耗), 
            而当一旦有按键按下, 即可唤醒CPU进行工作。这种设计实例请参考后面的第七章设计范例。<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -