这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 第一章 PIC12C5XX功能原理

共2条 1/1 1 跳转至

第一章 PIC12C5XX功能原理

工程师
2008-03-28 17:29:15     打赏

PIC12C5XX是美国Microchip公司推出的8位单片机,也是世界上第一个8脚封装的8位单片机系列。

§1.1  功能特点

一、高性能RISC结构CPU
       ·精简指令集,仅33条单字节指令,易学易用
       ·除地址分支跳转指令为双周期指令外,其余所有指令皆为单周期指令
       ·执行速度: DC~1μs
       ·二级硬件堆栈
       ·直接、间接、相对三种寻址方式

二、功能部件特性
       ·8位定时器/计数器TIMER0,带8位预分频器
       ·大驱动电流,I/O脚可直接驱动数码管(LED)显示
          - 每个I/O引脚最大控电流25mA
          - 每个I/O引脚最大灌电流20mA
       ·内置上电复位电路(POR)
       ·复位定时器,保障复位正常
       ·内部MCLR复位端加上拉电路,无需外接上拉
       ·内置自振式看门狗,防程序死锁
       ·程序保密位,可防止程序代码的非法拷贝
       ·低功耗睡眠功能
       ·I/O引脚可唤醒睡眠
       ·内置4MHz RC型振荡源,可省外接振荡
       ·可选外接振荡
          - RC:  低成本阻容振荡    
          - XT:  标准晶体/陶瓷振荡 
          - LP:  低速晶体,低功耗振荡

三、CMOS工艺特性
       ·低功耗
          <2mA   @5V,4MHz
          -15μA  @3V,32KHz
          -<1μA  低功耗睡眠(Sleep)模式下
       ·全静态设计
       ·宽工作电压范围:2.5V~5.5V
       ·宽工作温度范围:
          商用级:   0℃~+70℃
                   -工业级:-40℃~+85℃
                   -汽车级:-40℃~+125℃

§1.2  型号及引脚介绍

PIC12C5XX目前有二种型号,见下表:

型  号

振  荡

EPROM

RAM

定时器

输入线

I/O线

电压范围

封装(DIP/SOIC)

12C508

DC~4Mhz

512×12

25×8

1

1

5

2.5V-5.5V

8

12C509

DC~4Mhz

1024×12

41× 8

1

1

5

2.5V-5.5V

8

表1.1  PIC12C5XX型号功能表

各型号管脚图如下:

PDIP,SOIC,Windowed CERDIP

VDD——>
GP5/OSC1/CLKIN<——>
GP4/OSC2<——>
GP3/MCLR/VPP——>

<——VSS
<——>GP0
<——>GP1
<——>GP2/T0CK1

图1.1  12C508/509引脚

下表描述了各引脚的功能。

引脚名 引脚序号 属性 缓冲类型 功能

GP0

7

I/O

TTL/ST

双向I/O口线,带可编程弱上拉,并具电平变化唤醒睡眠功能

GP1

6

I/O

TTL/ST

双向I/O口线,带可编程弱上拉,并具电平变化唤醒睡眠功能

GP2/T0CK1

5

I/O

ST

双向I/O口线,并可设置为计数器TIMER0的外部信号输入端

GP3/MCLR

4

I

TTL

单向输入口线,也可设置为芯片复位端。当设为复位端MCLR时,低电平有效。
当作为输入口线时,带可编程弱上拉及电平变化唤醒睡眠功能

GP4/OSC2

3

I/O

TTL

双向I/O口线,(使用片内RC振荡源时,也可作为晶振输出端)

GP5/OSC1/CLKIN

2

I/O

TTL/ST

双向I/O口线,(使用片内RC振荡源时,也可作为晶振输入端或外部振荡输入端)

VDD

1

电源

正电源

VSS

8

电源

注:ST ─ 斯密特触发器

表1.2  PIC12C5XX引脚功能

    从上表可看出,PIC12C5XX最多可以有5根I/O口线和1根输入口线(GP3)。

§1.3  PIC12C5XX内部结构
    PIC12C5XX 的总线结构采用的是数据总线(8位)和指令总线(12位)独立分开的”哈佛结构”,所以它具有精简指令集(RISC)的特点,速度快,效率高,并且功耗很低。

    PIC12C5XX在一个芯片上集成了8位的算术逻辑运算单元(ALU),0.5K~1K的12位程序存储器,25~41个8位数据寄存器以及8位的计数器,上电复位电路,复位定时器,看门狗等等。

图1.2  PIC12C5XX内部结构

§1.4  指令周期和流水作业
    PIC12C5XX的指令周期被分频成4个不重叠的节拍Q1~Q4,程序计数器PC在Q1节拍增1, 而指令是在Q4节拍从程序存储器中取出并置入指令译码器,并在下一个指令周期被执行, 如下图所示:

图1.3  指令周期


    指令的执行贯穿Q1~Q4节拍。

    如上所述,当CPU在执行一条指令的同时, 下一条指令的代码也同时被取出置入指令译码器,准备在下一指令周期执行,这就是PIC的流水作业方式,也是RISC结构单片机的特点,这种特点使单片机的运行速度可以达到很高。

 

除了地址分支跳转指令的执行周期是2个指令周期外,其余所有指令都是单周期指令, 见下图:

图1.4  流水作业
 

§1.5  程序存储器和堆栈
PIC12C5XX的程序存储器为12位长,其中PIC12C508为512字节,而PIC12C509为1024字节。复位向量为地址0,因为最后一个字节(PIC12C508为地址1FFH,PIC12C509为地址3FFH)存放有片内RC实际振荡的校正系数,其形式为指令MOVLW XX,用户不要使用这个字节,所以用户的程序应从地址000H开始存放,注意这点和PIC16C5X有所不同。

 
图1.5  程序存储器和堆栈

PIC12C5XX把程序存储器以512字节为单位进行分页管理,这样PIC12C508有一个页面程序区,而PIC12C509有2个页面程序区,由状态寄存器STATUS中的PA0位(STATUS<5>) 确定程序区的页面。这是因为PIC是RISC结构,所有指令都是单字节,在PIC12C5XX中, 一条指令中所包含的地址信息只有9位,只能直接寻址一个页面(512字节);对于12C509,则还要由PA0位来辅助寻址2个页面(1024字节)的程序空间,即程序当需从一个页面跳转到另一个页面时(CALL、GOTO指令),应事先根据要跳转去的页面,把PA0位置为相应的值,请参阅状态寄存器的描述。

PIC12C5XX的堆栈有2层,有自己独立的空间,不占用程序存储器。注意它只能容纳二层子程序嵌套调用。堆栈的长度是12位,和PC长度一致,可以存放子程序调用时的PC值。

对堆栈的压入操作由子程序调用指令CALL完成,出栈操作则由子程序返回指令RETLW完成,请参阅第二章中这二条指令的详介。

§1.6  数据存储器

PIC12C5XX的数据存储器(RAM)由一些寄存器组成,分为特殊寄存器和通用寄存器二种。在PIC单片机中,对任何部件的操作都表现为对某一寄存器的操作,所以编程非常简单明了。

 
    * : 非实际存在的寄存器,参见§1.6.1中详介。
图1.6  寄存器结构

从上图可看到,00h~06h为特殊寄存器,其余为通用寄存器。PIC12C508有25个通用寄存器,而PIC12C509则有41个通用寄存器,其中25个在Bank0,另16个在Bank1,关于寄存器的Bank方式,请参阅§1.6.1的FSR寄存器描述。

§1.6.1  特殊寄存器     

一、INDF(地址:00h) ── 间址寄存器
INDF是一个物理上不存在的寄存器,只是一个逻辑寄存器,用来进行间接寻址,实际的寻址地址为FSR<4:0>的值。

例:      MOVLW       10h
          MOVWF       FSR                ;实际地址10h(F10寄存器)→FSR
          MOVLW     55h
          MOVWF     INDF           ;数据55h→F10
          INCF        FSR              ;FSR增1(FSR=11h)
          MOVWF     INDF            ;数据55h→F11

     参阅后面FSR寄存器的描述。

二、TMR0(地址:01h) ── 定时器/计数器寄存器

二、TMR0(地址:01h) ── 定时器/计数器寄存器
TMR0对应于TIMER0,它是一个8位的定时器/计数器(在PIC16C5X中称其为RTCC),请参阅§1.8详介。

三、PCL(地址:02h) ── 程序计数器PC<7:0>

PIC12C5XX程序计数器PC最多可寻址1K(1024)程序区:

型      号

PC长度

寻址空间

PC复位值

PIC12C508

9

512

1FFh

PIC12C509

10

1024

3FFh

单片机一复位,PC值被置为全“1”指向程序区的最后一个字节。前面我们提过,这个地址存放的是芯片出厂时已放入的MOVLW XX指令(其中XX是片内振荡校正系数),所以单片机复位后会执行这条指令,然后PC马上翻转到000h,开始执行用户的程序代码。注意,页面选择位PA0 复位时也被清零,所以这时页面处于0页,请参阅有关状态寄存器STATUS的描述。

对于“GOTO”指令,它的指令码中含有跳转地址的低9位,即PC<8:0>,对于PIC12C509来说,状态寄存器的第5位(STATUS<5>)还会被置入PC<9>,以选择程序页面,从而寻址1K的程序空间。  

                         
图1.7  GOTO指令寻址方式

对于“CALL”指令或其他涉及会修改PCL的指令,它们的指令码中仅包含目的地址的低8位,即PC<7:0>,而PC<8>总是会被硬件自动清零,状态寄存器第5位(STATUS<5>)也会被置入PC<9>以选择程序页面(对于PIC12C509而言)。见下图:

                     
图1.8  CALL指令或修改PCL的指令寻址方式

从上图可看出,由于执行这些指令硬件总会清PC<8>=0,所以它们的起始地址都必须限于放在每个程序页面的上半区,即头上的256个字节空间内(0h~FFh或200h~2FFh)。

四、STATUS(地址:03h) ── 状态寄存器

STATUS寄存器包含了ALU的算术状态、芯片复位状态、程序页面位等信息。STATUS 可以被读/写,但是其中的复位状态位TO、PD不能由软件设置,它们的状态如何决定§1.12.7 会有详细描述。

图1.9  状态寄存器

在加法运算时,C是进位位;在减法运算时,C是借位的反。

例a:
          CLRF         F10          ;F10=0
          MOVLW       1             ;W=1
          SUBWF        F10              ;F10-W=-1(FFH),C=0(运算结果为负)

例b:
          MOVLW       1                ;W=1
          MOVWF       F10              ;F10=1
          CLRW                     ;W=0
          SUBWF        F10             ;F10-W=1,C=1(运算结果为正)

PD和TO两位可用来判断芯片复位的原因,GPWUF位也是用来判断芯片复位类型,请参阅§1.12.7描述。

五、FSR(地址:04h) ── 选择寄存器

FSR和INDF寄存器(地址:00h)配合完成间接寻址,请参阅前面有关INDF寄存器的描述。FSR寄存器宽度为5位,FSR<4:0>用来间接寻址32个寄存器,FSR<5> 则用来选择寄存器体(Bank),见下图:


图1.10  直接/间接寻址方式

          a、PIC12C508: 不存在寄存器体选,FSR<5>恒为“1”。
          b、PIC12C509: FSR<5>=1  Bank1,
          FSR<5>=0  Bank0。

六、OSCCAL(地址:05h) ── 内部振荡校正系数寄存器

PIC12C5XX内部集成有RC振荡供用户选择使用,OSCCAL<7:4> 包含了该振荡电路的校正系数,其上电初始值为“0111”,请参阅§1.11.4有关内部RC振荡的描述。

七、GPIO(地址:06h) ── I/O寄存器

PIC12C5XX有一个6位的I/O口,它在寄存器中的映像就是GPIO寄存器,GPIO<5:0>对应于 I/O口线GP5:GP0,GPIO<7:6>未用,恒为“0”。

八、TRIS ── I/O方向控制寄存器

TRIS是GP口线方向控制寄存器,用户不能直接寻址,必须通过执行“TRIS  6”指令来设置它。当执行“TRIS     6”指令后,W寄存器的内容即会被置入TRIS中。“1”将相应的I/O口线设为输入态(高阻态),“0”则被设为输出态。但是有二点例外,即GP3永远是输入态而GP2有可能由OPTION寄存器设置为输入态(T0CKI),而不理会TRIS中的设置内容。请参阅§1.2关于I/O口的描述。

例:
          MOVLW      0Fh          ;W=“00001111”
          TRIS             6             ;TRIS=“001111”,GP0:GP3为输入态
          GP4:GP5为输出态

各种复位都会置TRIS为全“1”。

九、OPTION ── 参数定义寄存器

OPTION用来定义一些芯片工作参数,见下图所示:

 


图1.11  OPTION寄存器

OPTION也是不能由用户直接寻址的,必须由执行“OPTION”指令来把W寄存器中的内容置入OPTION寄存器,如下例:
          MOVLW       7                ;W=“00000111”
          OPTION                      ;W→OPTION
各种复位都会置OPTION为全“1”。

注意即使TRIS中相应的GP2方向位是“0”,如果将TOCS置为“1”,则GP2也会被强置为输入态,即为T0CKI输入线。

有关OPTION各位的定义,请参阅各自相应的章节。

十、W ── 工作寄存器

W寄存器用来存放指令中的第二个操作数,或用来进行内部数据传送,或存放运算结果,是最常用的寄存器。

§1.6.2  通用寄存器

          PIC12C508: 07h ─ 1Fh        ;Bank0
          PIC12C509: 07h ─ 1Fh        ;Bank0
          30h ─ 3Fh                ;Bank1

通用寄存器在上电后的值是随机的,所以它属RAM性质。




关键词: 第一章     PIC12C5XX     功能     原理     指令     地址    

助工
2008-03-28 18:18:21     打赏
2楼
这个值得收藏

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]