PIC12C5单片机应用与设计样本.docx

上传人:b****6 文档编号:5152057 上传时间:2022-12-13 格式:DOCX 页数:79 大小:295.63KB
下载 相关 举报
PIC12C5单片机应用与设计样本.docx_第1页
第1页 / 共79页
PIC12C5单片机应用与设计样本.docx_第2页
第2页 / 共79页
PIC12C5单片机应用与设计样本.docx_第3页
第3页 / 共79页
PIC12C5单片机应用与设计样本.docx_第4页
第4页 / 共79页
PIC12C5单片机应用与设计样本.docx_第5页
第5页 / 共79页
点击查看更多>>
下载资源
资源描述

PIC12C5单片机应用与设计样本.docx

《PIC12C5单片机应用与设计样本.docx》由会员分享,可在线阅读,更多相关《PIC12C5单片机应用与设计样本.docx(79页珍藏版)》请在冰豆网上搜索。

PIC12C5单片机应用与设计样本.docx

PIC12C5单片机应用与设计样本

前言面向应用嵌入式系统在国内方兴未艾

微控制器,也就是单片机(MCU),在80年代进入中华人民共和国。

由于微控制器容易学、容易用,倍受青眯。

这种把中央解决器、存储器、外设器件及I/O做在同一块芯片上器件总是作为应用系统中控制部件使用。

当前,做在微控制器芯片上外设部件越来越多,功能不断增强。

针对详细应用,运用微控制器可以设计出十分复杂系统,这种系统称作嵌入式系统。

在杭州召开’99全国单片微机学术交流会暨多国单片微机产品展览会上,许多专家呼吁要提高对嵌入式系统结识。

    当前,在全世界,嵌入式系统带来工业年产值已超过1万亿美元。

预测在美国,单是使用嵌入式电脑全数字电视产品每年将产生1500亿美元新市场。

美国将来学家尼葛洛庞帝曾预言,四、五年后,嵌入式智能工具将是继PC和因特网后最伟大创造。

就当前国内微控制器应用状况,全国微机单片机学会理事长陈章龙专家说,从整体来讲,在中华人民共和国,微控制器应用水平还不高,重要是用8位微控制器,用量也不大,绝大多数是用于IC卡设备等仪器仪表和控制领域中。

嵌入式系统核心部件是各种类型嵌入式解决器,据不完全记录,全世界嵌入式解决器品种已通过千,流行构造有30各种,其中以咱们熟悉PIC系列构造产品为最多。

据中华人民共和国单片机公共实验室高档工程师吕京建简介,嵌入式解决器分为两大类,一类是以通用计算机中CPU为基本嵌入式微控制器,另一类是微控制器。

与微解决器相比,微控制器具备单片化、体积小、功耗低、可靠性高、芯片上个设资源丰富等特点,当前已成为嵌入式系统主流器件。

嵌入式微解决器软件是实现嵌入式系统功能核心,为了提高执行速度和系统可靠性,嵌入式系统中软件普通都固化在存储器芯片或微控制器中。

    嵌入式系统是面向应用,因而它可以应用在当代化工业各个领域,如:

航天、航空、军事、家用消费商品、仪器仪表、各种控制系统及3C系统。

特别在国内重要应用于家电消费类产品、通信和计算机外设等。

而福州高奇电子科技有限公司正在对MCU广泛应用起着强大推动作用。

高奇电子科技有限公司开办于一九九三年十月,是一家专业半导体集成电路授权代理商和专业集成电路应用、设计公司。

当前代理、销售多家知名半导体厂商产品,如单片机、E2PROM、保安器件、电压检测器、LCD/VFD驱动器、电话来电辨认(CallerID)以及互换机用Switch、Codec芯片等等;同步,设有专业研发部门,已经研制了一系列电子产品整机方案,这些方案涉及完整软硬件设计资料及样机,可提供应整机厂商直接采用生产。

公司工程部门还可觉得客户量身定做,增长和删改功能以体现客户产品特色。

高奇公司坚持“以专业态度和水准,供优质产品、创名牌服务”经营理念,将所有资源专注于半导体IC应用设计、行业市场专用IC(ASIC)设计以及IC市场营销,并将不断开拓出电子产品新领域,并缩短研发时间,使产品与下面就简介一种简朴PIC单片机系列。

时代同步。

 下面就简介一种简朴PIC单片机系列。

第一章 PIC12C5XX功能原理

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引脚可唤醒睡眠

       ·内置4MHzRC型振荡源,可省外接振荡

       ·可选外接振荡

          -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,WindowedCERDIP

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~1K12位程序存储器,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实际振荡校正系数,其形式为指令MOVLWXX,顾客不要使用这个字节,因此顾客程序应从地址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.1FSR寄存器描述。

§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”指向程序区最后一种字节。

前面咱们提过,这个地址存储是芯片出厂时已放入MOVLWXX指令(其中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性质。

§1.7 I/O口

PIC12C5XX只有一种I/O口,相应映像寄存器为GPIO(地址:

06h),其中GPIO<5:

0>相应GP5:

GP0,GPIO<7:

6>未用,永为“0”。

注意,GP3仅可作为输入,是单向I/O口线。

此外,GP5、GP4、GP3及GP2还可以由顾客定义成各种特殊功能口线,一旦它们被用作特殊用途,则永远读为“0”。

GP0、GP1和GP3还带有可编程弱上拉和“电平变化唤醒功能”(即唤醒正处在睡眠状态下芯片),关于这点请参阅OPTION寄存器描述。

如果GP3被顾客定义为复位输入端(MCLR),则它弱上拉自动有效,但“电平变化唤醒”特性被自动关闭。

GPIO口线方向由TRIS寄存器控制,详情参见§1.6.1中关于TRIS寄存器描述。

§1.7.1 I/O口构造

一根I/O口线构造如下图所示:

                               

图1.12 I/O口构造

除了GP3只能单向作为输入口外,别的GPIO口皆可由顾客定义为输入/输出态。

作为输入口时没有锁存,外部信号必要保持到让CPU读入为止(例如:

MOVF  GPIO,W)。

作为输出则有锁存,可以保持直到被新值取代为止。

I/O端输入/输出态由TRIS寄存器值控制,当TRIS将“1”置入I/O控制器时Q1和Q2都处在截止态,因此I/O端即呈高阻态(输入态)。

当执行I/O读指令(如MOVF         6,W),把当前I/O端状态读入数据总线。

当TRIS将“0”置入I/O控制器时,Q1和Q2导通状况将要由数据锁存器Q端状态来决定。

当写入数据为“1”时,Q端为低电平0,则Q1导通,I/O输出为高电平。

反之,当写入数据为“0”时,Q端为“1”,则Q2导通,I/O端输出为低电平。

I/O读写时序如图1.13所示。

§1.7.2 I/O口使用注意事项

1、I/O方向转置问题

某时候也许需要一种I/O口一会做输入,一会又做输出。

这就是I/O方向转置。

在编写这种I/O转置程序时必要注意,有些指令如位设立指令(BSF、BCF)写I/O口时是先从I/O读入其状态,执行位操作后再将成果写回去覆盖本来内容(输出成果放在I/O口数据锁存器)。

举个例子来说:

“BSF  6,5”这条指令目是要把B口第6位置为高电平“1”。

执行这条指令时,先把整个B口当前状态内容读入到CPU,把第6位置成“1”后再把成果(8个位)重新输出到B口。

如果B口中有一种I/O端是需要方向转置(例如说bit1),而这时是处在输入态,那么B口状态值重新写入后,B口数据锁存器1锁存值就是当前B口Bit1状态。

这也许和先前Bit1作为输出时所锁存值不同,因此当Bit1再转置成输出态时,出当前Bit1端状态就也许和先前输出态不同了。

2、I/O“线或”和“线与”

从图1.12看出PICI/O端输出电路为CMOS互补推挽输出电路。

因而与其她此类电路同样,当某个PICI/O端设立为输出状态时,不能与其她电路输出端接成“线或”或“线与”形式,否则也许引起输出电流过载,烧坏PIC。

如需要与其她电路接成“线或”电路时,PICI/O端必要置于“1”状态或输入状态,并外接下拉电阻。

电阻阻值依照实际电路和PICI/O端最大电流来决定。

3、I/O口持续操作

一条写I/O指令,对I/O真正写操作是发生在指令后半周期(参照图1.13)。

而读I/O指令却是在指令周期开始就读取I/O端状态。

因此当你持续对一种I/O端写入再读出时,必要要让I/O端上写入电平有一种稳定期间,否则读入也许是前一种状态,而不是最新状态值。

普通推荐在两条持续写,读I/O口指令间至少加一条NOP指令。

例:

           

         MOVWF      6                 ;写I/O

         NOP                                ;稳定I/O电平

         MOVF       6,W        ;读I/O

4、噪声环境下I/O操作

在噪声环境下(如静电火花),I/O控制寄存器也许因受干扰而变化。

例如I/O口也许会从输入态自己变成输出态,对于这种情形,WDT也是无法检测出来。

因而如果你应用环境是较恶劣,建议你每隔一定间隔,都重新定义一下I/O控制寄存器。

最保险办法固然是对I/O读写前都定义一下I/O控制寄存器(但是实践证明对于大多数应用都不必做到这样,只是提请你注意噪声干扰)。

图1.13 I/O口持续读/写时序

§1.8 定期器/计数器TIMER0

TIMER0是一种8位定期器/计数器,其相应映像寄存器是TMR0(地址:

01h),可由顾客程序直接读写,并且可带有8位预分频器。

它用于对外加在GP2/T0CKI引脚上外部信号进行计数(计数器)或对内部指令时钟进行计时(定期器),在PIC16C5X中

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1