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

📄 the01.htm

📁 sed2350de biancheng
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                        MOVWF     
              INDF           
              ;数据55h→F10<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INCF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              FSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;FSR增1(FSR=11h)<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVWF&nbsp;&nbsp;&nbsp;&nbsp; 
              INDF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;数据55h→F11</p>
            <p class="lh15"  >&nbsp;&nbsp;&nbsp;&nbsp; 参阅后面FSR寄存器的描述。</p>
            <p class="lh15" >二、TMR0(地址:01h) ── 定时器/计数器寄存器</p>
            <p class="lh15" >二、TMR0(地址:01h) ── 定时器/计数器寄存器<br>
              TMR0对应于TIMER0,它是一个8位的定时器/计数器(在PIC16C5X中称其为RTCC),请参阅§1.8详介。</p>
            <p class="lh15" >三、PCL(地址:02h) ── 程序计数器PC&lt;7:0&gt;</p>
            <p class="lh15"  >PIC12C5XX程序计数器PC最多可寻址1K(1024)程序区:</p>
            <div align="center"> 
              <table border="0" cellspacing="1" cellpadding="0" bgcolor="#000000" >
                <tr bgcolor="#EAEAEA" > 
                  <td width="114" > <p  align="center" class="lh15" >型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                      号</p></td>
                  <td width="114" > <p  align="center" class="lh15" >PC长度</p></td>
                  <td width="114" > <p  align="center" class="lh15" >寻址空间</p></td>
                  <td width="114"> <p  align="center" class="lh15" >PC复位值</p></td>
                </tr>
                <tr bgcolor="#FFFFFF" > 
                  <td width="114" > <p  align="center" class="lh15" >PIC12C508</p></td>
                  <td width="114" > <p  align="center" class="lh15" >9</p></td>
                  <td width="114" > <p  align="center" class="lh15" >512</p></td>
                  <td width="114" > <p  align="center" class="lh15" >1FFh</p></td>
                </tr>
                <tr bgcolor="#FFFFFF" > 
                  <td width="114" > <p  align="center" class="lh15" >PIC12C509</p></td>
                  <td width="114" > <p  align="center" class="lh15" >10</p></td>
                  <td width="114" > <p  align="center" class="lh15" >1024</p></td>
                  <td width="114" > <p  align="center" class="lh15" >3FFh</p></td>
                </tr>
              </table>
            </div>
            <p class="lh15"  >单片机一复位,PC值被置为全“1”指向程序区的最后一个字节。前面我们提过,这个地址存放的是芯片出厂时已放入的MOVLW 
              XX指令(其中XX是片内振荡校正系数),所以单片机复位后会执行这条指令,然后PC马上翻转到000h,开始执行用户的程序代码。注意,页面选择位PA0 
              复位时也被清零,所以这时页面处于0页,请参阅有关状态寄存器STATUS的描述。</p>
            <p  > <span class="lh15">对于“GOTO”指令,它的指令码中含有跳转地址的低9位,即PC&lt;8:0&gt;,对于PIC12C509来说,状态寄存器的第5位(STATUS&lt;5&gt;)还会被置入PC&lt;9&gt;,以选择程序页面,从而寻址1K的程序空间。 
              &nbsp; <br >
              </span> 
            <p class="lh15" align="center" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              <img src="image/the01.6.jpg" v:shapes="_x0000_s1026" width="251" height="146"><br>
              图1.7&nbsp; GOTO指令寻址方式</p>
            <p class="lh15"  >对于“CALL”指令或其他涉及会修改PCL的指令,它们的指令码中仅包含目的地址的低8位,即PC&lt;7:0&gt;,而PC&lt;8&gt;总是会被硬件自动清零,状态寄存器第5位(STATUS&lt;5&gt;)也会被置入PC&lt;9&gt;以选择程序页面(对于PIC12C509而言)。见下图: 
            </p>
            <p class="lh15" align="center" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              <img src="image/the01.7.jpg" v:shapes="_x0000_s1027" width="224" height="140"><br>
              图1.8&nbsp; CALL指令或修改PCL的指令寻址方式</p>
            <p class="lh15"  >从上图可看出,由于执行这些指令硬件总会清PC&lt;8&gt;=0,所以它们的起始地址都必须限于放在每个程序页面的上半区,即头上的256个字节空间内(0h~FFh或200h~2FFh)。</p>
            <p class="lh15" >四、STATUS(地址:03h) ── 状态寄存器</p>
            <p class="lh15"  >STATUS寄存器包含了ALU的算术状态、芯片复位状态、程序页面位等信息。STATUS 可以被读/写,但是其中的复位状态位TO、PD不能由软件设置,它们的状态如何决定§1.12.7 
              会有详细描述。</p>
            <div align="center"><img src="image/3.gif" width="570" height="617"><br>
            </div>
            <p  align="center" class="lh15" >图1.9&nbsp; 状态寄存器</p>
            <p class="lh15"  >在加法运算时,C是进位位;在减法运算时,C是借位的反。</p>
            <p class="lh15"  >例a: <br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLRF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              F10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;F10=0<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;W=1<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBWF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              F10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;F10-W=-1(FFH),C=0(运算结果为负)</p>
            <p class="lh15"  >例b: <br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;W=1<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVWF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              F10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;F10=1<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLRW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;W=0<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBWF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              F10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;F10-W=1,C=1(运算结果为正)</p>
            <p class="lh15"  >PD和TO两位可用来判断芯片复位的原因,GPWUF位也是用来判断芯片复位类型,请参阅§1.12.7描述。</p>
            <p class="lh15" >五、FSR(地址:04h) ── 选择寄存器</p>
            <p class="lh15"  >FSR和INDF寄存器(地址:00h)配合完成间接寻址,请参阅前面有关INDF寄存器的描述。FSR寄存器宽度为5位,FSR&lt;4:0&gt;用来间接寻址32个寄存器,FSR&lt;5&gt; 
              则用来选择寄存器体(Bank),见下图:</p>
            <p  align="center" class="lh15" ><img src="image/4.gif" width="500" height="327"><br>
              图1.10&nbsp; 直接/间接寻址方式</p>
            <p class="lh15" > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              a、PIC12C508: 不存在寄存器体选,FSR&lt;5&gt;恒为“1”。<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b、PIC12C509: 
              FSR&lt;5&gt;=1&nbsp; Bank1,<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FSR&lt;5&gt;=0&nbsp; 
              Bank0。</p>
            <p class="lh15" >六、OSCCAL(地址:05h) ── 内部振荡校正系数寄存器</p>
            <p class="lh15"  >PIC12C5XX内部集成有RC振荡供用户选择使用,OSCCAL&lt;7:4&gt; 包含了该振荡电路的校正系数,其上电初始值为“0111”,请参阅§1.11.4有关内部RC振荡的描述。</p>
            <p class="lh15" >七、GPIO(地址:06h) ── I/O寄存器</p>
            <p class="lh15"  >PIC12C5XX有一个6位的I/O口,它在寄存器中的映像就是GPIO寄存器,GPIO&lt;5:0&gt;对应于 
              I/O口线GP5:GP0,GPIO&lt;7:6&gt;未用,恒为“0”。</p>
            <p class="lh15" >八、TRIS ── I/O方向控制寄存器</p>
            <p class="lh15"  >TRIS是GP口线方向控制寄存器,用户不能直接寻址,必须通过执行“TRIS&nbsp; 6”指令来设置它。当执行“TRIS&nbsp;&nbsp;&nbsp;&nbsp; 
              6”指令后,W寄存器的内容即会被置入TRIS中。“1”将相应的I/O口线设为输入态(高阻态),“0”则被设为输出态。但是有二点例外,即GP3永远是输入态而GP2有可能由OPTION寄存器设置为输入态(T0CKI),而不理会TRIS中的设置内容。请参阅§1.2关于I/O口的描述。</p>
            <p class="lh15"  >例:<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              0Fh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;W=“00001111”<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRIS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;TRIS=“001111”,GP0:GP3为输入态<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GP4:GP5为输出态</p>
            <p class="lh15"  >各种复位都会置TRIS为全“1”。</p>
            <p class="lh15" >九、OPTION ── 参数定义寄存器</p>
            <p class="lh15"  >OPTION用来定义一些芯片工作参数,见下图所示:</p>
            <div align="center"> </div>
            <p  align="center" class="lh15" ><img src="image/5.gif" width="603" height="639"><br>
              图1.11&nbsp; OPTION寄存器</p>
            <p class="lh15"  >OPTION也是不能由用户直接寻址的,必须由执行“OPTION”指令来把W寄存器中的内容置入OPTION寄存器,如下例:<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOVLW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;W=“00000111”<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OPTION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;W→OPTION<br>
              各种复位都会置OPTION为全“1”。</p>
            <p class="lh15"  >注意即使TRIS中相应的GP2方向位是“0”,如果将TOCS置为“1”,则GP2也会被强置为输入态,即为T0CKI输入线。</p>
            <p class="lh15"  >有关OPTION各位的定义,请参阅各自相应的章节。</p>
            <p class="lh15" >十、W ── 工作寄存器</p>
            <p class="lh15"  >W寄存器用来存放指令中的第二个操作数,或用来进行内部数据传送,或存放运算结果,是最常用的寄存器。</p>
            <p class="lh15" ><b>§1.6.2&nbsp; 通用寄存器</b></p>
            <p class="lh15"  > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              PIC12C508: 07h ─ 1Fh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;Bank0<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PIC12C509: 
              07h ─ 1Fh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;Bank0<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30h ─ 3Fh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ;Bank1</p>
            <p class="lh15"  >通用寄存器在上电后的值是随机的,所以它属RAM性质。</p>
            <p class="lh15" ><b><font size="2">§1.7&nbsp; I/O 口</font></b></p>
            <p class="lh15"  >PIC12C5XX只有一个I/O口,对应的映像寄存器为GPIO(地址:06h),其中GPIO&lt; 
              5:0&gt; 对应GP5:GP0,GPIO&lt;7:6&gt;未用,永为“0”。注意,GP3仅可作为输入,是单向I/O口线。另外,GP5、GP4、GP3及GP2还可以由用户定义成各种特殊功能口线,一旦它们被用作特殊用途,则永远读为“0”。GP0、GP1和GP3还带有可编程的弱上拉和“电平变化唤醒功能”(即唤醒正处于睡眠状态下的芯片),关于这点请参阅OPTION寄存器的描述。如果GP3被用户定义为复位输入端(MCLR),则它的弱上拉自动有效,但“电平变化唤醒”特性被自动关闭。</p>
            <p class="lh15"  >GPIO口线的方向由TRIS寄存器控制,详情参见§1.6.1中有关TRIS寄存器的描述。</p>
            <p class="lh15" ><b>§1.7.1&nbsp; I/O 口结构</b></p>
            <p  > <span class="lh15">一根I/O口线的结构如下图所示: </span> 
            <p class="lh15" align="center" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              <img src="image/the01.8.jpg" v:shapes="_x0000_s1026" width="279" height="385"><br>

⌨️ 快捷键说明

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