PIC12C5XX单片机应用与设计说明.docx
- 文档编号:10047428
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:92
- 大小:269.16KB
PIC12C5XX单片机应用与设计说明.docx
《PIC12C5XX单片机应用与设计说明.docx》由会员分享,可在线阅读,更多相关《PIC12C5XX单片机应用与设计说明.docx(92页珍藏版)》请在冰豆网上搜索。
PIC12C5XX单片机应用与设计说明
前言面向应用的嵌入式系统在我国方兴未艾
微控制器,也就是单片机(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~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实际振荡的校正系数,其形式为指令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.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”指向程序区的最后一个字节。
前面我们提过,这个地址存放的是芯片出厂时已放入的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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PIC12C5XX 单片机 应用 设计 说明