ImageVerifierCode 换一换
格式:DOCX , 页数:92 ,大小:269.16KB ,
资源ID:5887134      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5887134.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PIC12C5XX单片机应用与设计说明Word下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

PIC12C5XX单片机应用与设计说明Word下载.docx

1、二、功能部件特性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-15A 3V,32KHz-1A 低功耗睡眠(Sle

2、ep)模式下全静态设计宽工作电压围:2.5V5.5V宽工作温度围:商用级: 070-工业级:4085-汽车级:40125 1.2 型号及引脚介绍 PIC12C5XX目前有二种型号,见下表:型 号振 荡EPROMRAM定时器输入线I/O线电压围封装(DIP/SOIC)12C508DC4Mhz51212258152.5V-5.5V12C509102441 8表1.1 PIC12C5XX型号功能表各型号管脚图如下:PDIP,SOIC,Windowed CERDIP VDDGP5/OSC1/CLKINGP4/OSC2VSSGP0GP1GP2/T0CK1图1.1 12C508/509引脚 下表描述了各引

3、脚的功能。 引脚名 引脚序号 属性 缓冲类型 功能 7I/OTTL/ST双向I/O口线,带可编程弱上拉,并具电平变化唤醒睡眠功能6ST双向I/O口线,并可设置为计数器TIMER0的外部信号输入端GP3/MCLR4ITTL单向输入口线,也可设置为芯片复位端。当设为复位端MCLR时,低电平有效。当作为输入口线时,带可编程弱上拉及电平变化唤醒睡眠功能GP4/OSC23双向I/O口线,(使用片RC振荡源时,也可作为晶振输出端)GP5/OSC1/CLKIN2双向I/O口线,(使用片RC振荡源时,也可作为晶振输入端或外部振荡输入端)VDD电源正电源VSS地注:ST 斯密特触发器 表1.2 PIC12C5X

4、X引脚功能从上表可看出,PIC12C5XX最多可以有5根I/O口线和1根输入口线(GP3)。1.3 PIC12C5XX部结构PIC12C5XX 的总线结构采用的是数据总线(8位)和指令总线(12位)独立分开的”哈佛结构”,所以它具有精简指令集(RISC)的特点,速度快,效率高,并且功耗很低。PIC12C5XX在一个芯片上集成了8位的算术逻辑运算单元(ALU),0.5K1K的12位程序存储器,2541个8位数据寄存器以及8位的计数器,上电复位电路,复位定时器,看门狗等等。图1.21.4 指令周期和流水作业PIC12C5XX的指令周期被分频成4个不重叠的节拍Q1Q4,程序计数器PC在Q1节拍增1,

5、 而指令是在Q4节拍从程序存储器中取出并置入指令译码器,并在下一个指令周期被执行, 如下图所示:图1.3 指令周期指令的执行贯穿Q1Q4节拍。如上所述,当CPU在执行一条指令的同时, 下一条指令的代码也同时被取出置入指令译码器,准备在下一指令周期执行,这就是PIC的流水作业方式,也是RISC结构单片机的特点,这种特点使单片机的运行速度可以达到很高。除了地址分支跳转指令的执行周期是2个指令周期外,其余所有指令都是单周期指令, 见下图:图1.4 流水作业1.5 程序存储器和堆栈PIC12C5XX的程序存储器为12位长,其中PIC12C508为512字节,而PIC12C509为1024字节。复位向量

6、为地址0,因为最后一个字节(PIC12C508为地址1FFH,PIC12C509为地址3FFH)存放有片RC实际振荡的校正系数,其形式为指令MOVLW XX,用户不要使用这个字节,所以用户的程序应从地址000H开始存放,注意这点和PIC16C5X有所不同。图1.5PIC12C5XX把程序存储器以512字节为单位进行分页管理,这样PIC12C508有一个页面程序区,而PIC12C509有2个页面程序区,由状态寄存器STATUS中的PA0位(STATUS) 确定程序区的页面。这是因为PIC是RISC结构,所有指令都是单字节,在PIC12C5XX中, 一条指令中所包含的地址信息只有9位,只能直接寻址

7、一个页面(512字节);对于12C509,则还要由PA0位来辅助寻址2个页面(1024字节)的程序空间,即程序当需从一个页面跳转到另一个页面时(CALL、GOTO指令),应事先根据要跳转去的页面,把PA0位置为相应的值,请参阅状态寄存器的描述。PIC12C5XX的堆栈有2层,有自己独立的空间,不占用程序存储器。注意它只能容纳二层子程序嵌套调用。堆栈的长度是12位,和PC长度一致,可以存放子程序调用时的PC值。对堆栈的压入操作由子程序调用指令CALL完成,出栈操作则由子程序返回指令RETLW完成,请参阅第二章中这二条指令的详介。1.6 数据存储器PIC12C5XX的数据存储器(RAM)由一些寄存

8、器组成,分为特殊寄存器和通用寄存器二种。在PIC单片机中,对任何部件的操作都表现为对某一寄存器的操作,所以编程非常简单明了。 * : 非实际存在的寄存器,参见1.6.1中详介。图1.6 寄存器结构从上图可看到,00h06h为特殊寄存器,其余为通用寄存器。PIC12C508有25个通用寄存器,而PIC12C509则有41个通用寄存器,其中25个在Bank0,另16个在Bank1,关于寄存器的Bank方式,请参阅1.6.1的FSR寄存器描述。1.6.1 特殊寄存器一、INDF(地址:00h) 间址寄存器INDF是一个物理上不存在的寄存器,只是一个逻辑寄存器,用来进行间接寻址,实际的寻址地址为FSR

9、的值。例: MOVLW 10h MOVWF FSR ;实际地址10h(F10寄存器)FSR 55h INDF数据55hF10 INCFFSR增1(FSR=11h)数据55hF11 参阅后面FSR寄存器的描述。二、TMR0(地址:01h) 定时器/计数器寄存器TMR0对应于TIMER0,它是一个8位的定时器/计数器(在PIC16C5X中称其为RTCC),请参阅1.8详介。三、PCL(地址:02h) 程序计数器PC7:PIC12C5XX程序计数器PC最多可寻址1K(1024)程序区:PC长度寻址空间PC复位值PIC12C50895121FFhPIC12C5091010243FFh单片机一复位,PC

10、值被置为全“1”指向程序区的最后一个字节。前面我们提过,这个地址存放的是芯片出厂时已放入的MOVLW XX指令(其中XX是片振荡校正系数),所以单片机复位后会执行这条指令,然后PC马上翻转到000h,开始执行用户的程序代码。注意,页面选择位PA0 复位时也被清零,所以这时页面处于0页,请参阅有关状态寄存器STATUS的描述。对于“GOTO”指令,它的指令码中含有跳转地址的低9位,即PC8:,对于PIC12C509来说,状态寄存器的第5位(STATUS)还会被置入PC,以选择程序页面,从而寻址1K的程序空间。 图1.7 GOTO指令寻址方式对于“CALL”指令或其他涉及会修改PCL的指令,它们的

11、指令码中仅包含目的地址的低8位,即PC,而PC总是会被硬件自动清零,状态寄存器第5位(STATUS)也会被置入PC以选择程序页面(对于PIC12C509而言)。见下图:图1.8 CALL指令或修改PCL的指令寻址方式从上图可看出,由于执行这些指令硬件总会清PC=0,所以它们的起始地址都必须限于放在每个程序页面的上半区,即头上的256个字节空间(0hFFh或200h2FFh)。四、STATUS(地址:03h) 状态寄存器STATUS寄存器包含了ALU的算术状态、芯片复位状态、程序页面位等信息。STATUS 可以被读/写,但是其中的复位状态位TO、PD不能由软件设置,它们的状态如何决定1.12.7

12、 会有详细描述。图1.9 状态寄存器在加法运算时,C是进位位;在减法运算时,C是借位的反。例a: CLRF F10F10=0 1W=1 SUBWFF10-W=-1(FFH),C=0(运算结果为负)例b:F10=1 CLRWW=0F10-W=1,C=1(运算结果为正)PD和TO两位可用来判断芯片复位的原因,GPWUF位也是用来判断芯片复位类型,请参阅1.12.7描述。五、FSR(地址:04h) 选择寄存器FSR和INDF寄存器(地址:00h)配合完成间接寻址,请参阅前面有关INDF寄存器的描述。FSR寄存器宽度为5位,FSR用来间接寻址32个寄存器,FSR 则用来选择寄存器体(Bank),见下图

13、:图1.10 直接/间接寻址方式 a、PIC12C508: 不存在寄存器体选,FSR恒为“1”。 b、PIC12C509: FSR=1 Bank1,=0 Bank0。六、OSCCAL(地址:05h) 部振荡校正系数寄存器PIC12C5XX部集成有RC振荡供用户选择使用,OSCCAL 包含了该振荡电路的校正系数,其上电初始值为“0111”,请参阅1.11.4有关部RC振荡的描述。七、GPIO(地址:06h) I/O寄存器PIC12C5XX有一个6位的I/O口,它在寄存器中的映像就是GPIO寄存器,GPIO5:对应于 I/O口线GP5:GP0,GPIO未用,恒为“0”。八、TRIS I/O方向控制

14、寄存器TRIS是GP口线方向控制寄存器,用户不能直接寻址,必须通过执行“TRIS 6”指令来设置它。当执行“TRIS 6”指令后,W寄存器的容即会被置入TRIS中。“1”将相应的I/O口线设为输入态(高阻态),“0”则被设为输出态。但是有二点例外,即GP3永远是输入态而GP2有可能由OPTION寄存器设置为输入态(T0CKI),而不理会TRIS中的设置容。请参阅1.2关于I/O口的描述。 0FhW=“00001111” TRIS 6TRIS=“001111”,GP0:GP3为输入态 GP4:GP5为输出态各种复位都会置TRIS为全“1”。九、OPTION 参数定义寄存器OPTION用来定义一些

15、芯片工作参数,见下图所示:图1.11 OPTION寄存器OPTION也是不能由用户直接寻址的,必须由执行“OPTION”指令来把W寄存器中的容置入OPTION寄存器,如下例: 7W=“00000111” OPTIONWOPTION各种复位都会置OPTION为全“1”。注意即使TRIS中相应的GP2方向位是“0”,如果将TOCS置为“1”,则GP2也会被强置为输入态,即为T0CKI输入线。有关OPTION各位的定义,请参阅各自相应的章节。十、W 工作寄存器W寄存器用来存放指令中的第二个操作数,或用来进行部数据传送,或存放运算结果,是最常用的寄存器。1.6.2 通用寄存器 PIC12C508: 0

16、7h 1FhBank0 PIC12C509: 30h 3FhBank1通用寄存器在上电后的值是随机的,所以它属RAM性质。1.7 I/O 口PIC12C5XX只有一个I/O口,对应的映像寄存器为GPIO(地址:06h),其中GPIO 5: 对应GP5:未用,永为“0”。注意,GP3仅可作为输入,是单向I/O口线。另外,GP5、GP4、GP3及GP2还可以由用户定义成各种特殊功能口线,一旦它们被用作特殊用途,则永远读为“0”。GP0、GP1和GP3还带有可编程的弱上拉和“电平变化唤醒功能”(即唤醒正处于睡眠状态下的芯片),关于这点请参阅OPTION寄存器的描述。如果GP3被用户定义为复位输入端(

17、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端即呈高阻态(输入态)。当执

18、行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读入其状态,执行位操作后再将

19、结果写回去覆盖原来的容(输出的结果放在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看出P

20、IC I/O端输出电路为CMOS互补推挽输出电路。因此与其他这类电路一样,当某个PIC I/O端设置为输出状态时,不能与其他电路的输出端接成“线或”或“线与”的形式,否则可能引起输出电流过载,烧坏PIC。如需要与其他电路接成“线或”电路时,PIC I/O 端必须置于“1”状态或输入状态,并外接下拉电阻。电阻的阻值根据实际电路和PIC I/O 端最大电流来决定。3、I/O口的连续操作一条写I/O的指令,对I/O真正写操作是发生在指令的后半周期(参照图1.13)。而读I/O的指令却是在指令的周期开始就读取I/O端状态。所以当你连续对一个I/O端写入再读出时,必须要让I/O端上的写入电平有一个稳定的

21、时间,否则读入的可能是前一个状态,而不是最新的状态值。一般推荐在两条连续的写,读I/O口指令间至少加一条NOP指令。写I/O NOP稳定I/O电平 MOVF 6,W读I/O4、噪声环境下的I/O操作在噪声环境下(如静电火花),I/O控制寄存器可能因受干扰而变化。比如I/O口可能会从输入态自己变成输出态,对于这种情形,WDT也是无法检测出来的。因此如果你的应用环境是较恶劣的,建议你每隔一定的间隔,都重新定义一下I/O控制寄存器。最保险的方法当然是对I/O读写前都定义一下I/O控制寄存器(但是实践证明对于大多数的应用都不必做到这样,只是提请你注意噪声干扰)。图1.13 I/O口连续读/写时序1.8 定时器/计数器TIMER0

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2