PIC单片机之16C84单片机介绍(二)

2012-11-14 17:06:18来源: 互联网
五 I/O端口

  PIC16C84具有两个I/O端口,PORTA,PORTB。某些端口的引脚用来与另外一些功能复用。

  5-1 PORTA和TRISA寄存器

  PIC16C84的 PORTH是5位宽度的锁存器。RA4是施密特触发器输入,一个集电极开路输出。端口A的所有其它的引脚为TTL电平输入,含CMOS输出驱动。所有引脚有数据方向位(TRISA寄存器),可通过TRI SA来配置PORTA的引脚是输入式输出。设置TRISA的某位为1,则对应的 PORTA的位为输入,若设置为0,对应的PORTA的某位为输出。

  读PORTA寄存器,读入引脚的状态,向PORTA写入,则写到PORTA的锁存器。所有的写操作都是读--修改--写操作。当向端口写时,它首先读端口引脚,然后修改其位,再写入端口的数据锁存器。下面这段程序是对端口A的初始化:

  CLRF PORTA;初始化端口A

  BSF STATUS,RPO;选择1块

  MovLW CFH ;用于初始化数据方向的值

  MOVWF TRISA;设置RA<3:0>为输入;RA<5:4>为输出 ;< 7:6>总是为0(无用)

  RA4是为TMRO的时钟输入复用。即如果这一位用作TMRO的时钟输入,则端口A就不能用RA4。

  5-2 PROTB和TRISB寄存器

  PORTB是8位宽度的双向端口。相应的数据由TRISB决定,方法用端口A。

  端口B的每一个引脚都具有内部弱的上拉电阻。通过一个控制位可以打开所有上拉电阻。这可通过对OPTION<7>RBPU位的置1,清0来控制。当端口引脚配置成输出时,内部弱上拉电阻被自动关闭。上位是 端口需要的。PORTB的4个引脚RBT~RB4具有信号改变中断的功能,只要将这几个引脚配置为输入,就可能引起中断的发生。在输入方式下,引脚的位与最后一次读PORTB的值进行比较,这四个引脚中有任何一个或多个不相同,产生RBIF中端(置INTCON<0>)。这个中断可能将 器件由SLEEP状态下唤醒。用户在中断服务程序中可以用这样的两个方法之一来清除中断。①通过清0RBIE(INT CON<3>位)关闭中断,② 读端口B,则清0 RBIF位。

  不相等的条件将继续配置1RBIF位为止。读PORTB将结束不相等条件,并允许RBIF被清0。这一特征为软件可配置上拉一起允许用户非常容易的使用PORTB作为键盘输入的接口。也就可以通过按键来唤醒系统。

  注意:如果正在执行敛僮鳎琁/O引脚改变了信号,RBIF中断标志不可能被置成1。

  建议用改变信号中断作为按键唤醒操作,PORTB只不用改变信号中断,建议不要用查询方式。图4-7是用端口作键盘接口的原理图其R1为ESD保护而新选择的电阻。使用此接口时,通过软件选择保持内部上拉,即RB4~RB7为高,设置为输入方式。RB0~RB3输出。任何键被按下,RB4~RB7的某一根线将改变从而产生中断。这个中断可以唤醒芯片,用这种方法可以节省计时器资源。

  16个键

  RB4 100

  RB5

  RB6

  RB7

  RB0

  RB1

  RB2

  BR3

  Rf

  图4-7利用端口B的键盘接口图。

  5-3 I/O编程的考虑

  任何对端口的写操作,在内部都是读-修改-写。例如BCF,BSF 指令,先将寄存器读入CPU,执行位操作,将结果写回寄存器。例如对 PORTB执行BSF操作,首先将PORTB的8位读入CPU,在Bit5上进行BSF操 作,将这一位置1,将PORTB写回输出锁存器,如果这个时候PORTB的bit0用作输入引脚,则先将PORTB读入CPU,然后进行有关操作,结果写回PORTB的锁存器,并复盖了先前的内容,如果bit0一直保持在输入方式,这一操作是没有问题,但如果bit0在销后又改变成输出方式,数据锁存器的内容是未知的。

  实际写I/O端口发生在一个指令周期的结束,而读一个I/O端口,其有效的数据必须在指令周期的开始就出现。因此,对一个I/O通道相断执行读,写操作,要考虑数据的可靠性。为此,应在这两条指令之间加入一条NOP指令就可以保证数据的可靠性。

  六、计时器。

  (TMRO)模式 TMRO计时/计数器模式具有如下特点:

  ·8位计时计数器

  ·可读,可写

  ·8位软件可编程的预分配器

  ·从FFH到00H产生溢出中断

  ·具有外部时钟的边沿选择

  TMRO模式的简单框图与PIC16C6X系列相同。它可以经过清0 TOCs 位(即TION<5>)来选择计时器方式。在计时器方式,TMRO模式对每个指令周期加1(没有预分频器),如果对TMRO写操作,则计时器为加 (操作后两个周期被禁止。)

  量TOCS为1(OPTION<5>)选择TMRO为计数器方式。这种方式下 TM?RO将对RA4/TOCK1引脚上出现的上跳变或下跳变加1。清0TOSE(OPTION<4>)选择上跳变否则为下跳变。有关预分频器的使用与PIC16C6X系列相同。当TMRO在计时/计数器方式下其值由FFH到00H时产生溢出中断,这个溢出中断将置TOIF位为1。此中断可以TOIE位为0来屏蔽。要能再次产生中断,必须在中断服务程序中,通过软件使TOIF清0,TMRO中断不可以用来唤醒芯片。因为在SLEEP状态下,计时器是关闭的。

  如何使用TMRO的外部时钟,外部时钟的同步问题,预分频器的使用等,参看PIC16C6X系列关于TMRO的技术性能。

七、数据EEPROM存储器

  数据EEPROM存储器在满电源电压(VDD)时,正常操作期间是可读,可写的,这部分存储器不能直接映象到寄存器文件空间,只有通过专用功能寄存器经间接寻址来访问,有四个SFR用于读、写这些存储器,这些寄存器是EECON1;EECON2;EEDATA;EEDAR。

  其中EEDATA用来保持8位的读/写数据。EEADR用来保持正在访问 的EEPROM单元的地址。PIC16C84具有64个字节的EEPROM,其单元的地 址范围是00H-3FH。

  EEPROM允许一次读/写一个字节。一个字节的写入将自动擦除该单元,写入新的内容(在写入之前擦除)。EEPROM数据存储器是高 速率的擦/写周期,写入时间正常为10ms,由芯片的计时器控制。实 际写入时间与所加电压,温度,芯片等有关。严格的时间请参看芯片的AC说明。当器件是在代码保护时,只有CPU可以完成数据存储器的读 /写。即器件的编程器的不再访问存储器(外部读/写被关闭)。

  6 连接的考虑

  因为模拟输入用了ESD保护,它们有反偏二极管连到VDD和VSS。这就要求模拟输入电压应在VDD和VSS之间。

  如果模拟输入电压超过了最大值的0.6V以上的范围,二极管可能变为正向导通,如果输入电流超过了说明书上的规定,它可能破坏器件。有些时候把外部的RC滤波器加在输入信号上。要求选用的电阻R要保证总的信号源电阻不超过10K,任何在模拟信号上的其它的附加元件均应有非常小的漏电流。

  7.变换功能

  理论上A/D变换器的变换功能如下。

  当模拟输入信号电压是1位L sb的电压时(或是VREF/256)第一次变换就发生。

  8 A/D变换工作的流程图

  表2-4 PIC16C74/73的A/D变换所涉及的寄存器

  地址 名称 bit7 bit6 bit5 bit4 bit3 bit 2 bit1 bit0

  0B/8B INTCON GIE PEIE

  0C PIR1 ADIF

  8C PIE1 ADIE

  0D PIR2 CCP2IF

  8D PIE2 CCP2IE

  1F ADCON0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE ADON

  9F ADCON1 PCFG2 PCFG1 PCFG0

  除上述所例寄存器外,还有ADRES(地址1EH)用于存放A/D变换 的结果。PORTA(地址 05H)用于输入多路模拟信号,TRISA(地址85 H)用于设置PORTA的I/O方式,PORTE(地址09H)用于输入多路模拟信号,TRISE(地址89H)用于设置PORTE的I/O方式。

  表2-5 PIC16C71的A/D变换所涉及的寄存器

  地址 名称 bit7 bit6 bit5 bit4 bit3 bit 2 bit1 bit0

  0B/8B INTCON GIE ADIE

  08 AOCON0 ADCS1 ADCS0 CHS1 CHS0 GO /DONE ADIF ADON

  88 ADCON1 PCFG1 PCFG0

  此外还涉及ADRES(地址09H),PORTA,TRISA等。。

  U U U U U U U U U R/P R/P R/P R /P R/P

  - - - - - - - - - CP PWRTE WDTE FOSC 1 FOSC0 bit 13 bit0

  图4-10 PIC16C84的配置寄存器

  7-3 写EEPROM数据存储器

  与写EEPROM的数据单元、用户必须首先写地址到EEADR寄存器,再送数据到EEDA?TA,最后用户必须跟着一个专门的序列起动写。例如:下面这段程序是写EEPROM的程序。 ? ? BSF STATUS, RPO ;选择1块

  BCF INTCON,GIE ;关闭所有INT中断

  MOVLW 55H ;

  MOVWF EECON2 ;写55H

  MOVLW AAH;

  MOVWF EECON2;写AAH

  BSF EECON1,WR;置WR位为1,开始写

  BSF INTCON,GIE;允许INT中断。

  如果这个程序(即先写55H 到EECON2,再写AAH到EECON2,然后置 WK=1)未跟有严格的时间,写将不能启动。我们建议在执行这几条指令期间关闭中断。

  此外,EECON1中的WREN位必须选置成1,允许写。这样的机构防止 了因错误指令的执行而写数据EEPROM。用户在所有的时间应保持WREN位为0,除了当要热修改EEPROM以外。

  写序列开始以后,清0WREN位不影响这次写周期。从开始设置,直到WREN=1为止WR位将被禁止。当完成了写周期以后,WR位由硬件清0 。写完成中断标志EEIF被置1,EEIF必须由软件将其清0。注意数据EEPROM存储器E/W周期可能偶然超过10ms,为确保写周期的完成,用户使用的EE中断或查询WR位(EECON1<1>)。这两个均可用来判断写周 期的完成。

  除了上述提到的防止错误的写数据EEPROM外,在电源刚加电期 间的72ms内也防止写EEPROM数据存储器。

  八 CPU专门的特征

  微控制器为其它处理器的区别是有专门的电路,这些电路涉及实时应用的需要。PIC16C84具有最大的系统可靠性,最低的价格,最少的外部元件,提供了低功能操作模式和代码保护。

PIC16C84具有看门狗计时器,此计时器只可经配置位来关闭,为了增加其可靠性,关闭它的RC振荡器。有两个计时器提供加电时需要的延时。振荡器起振计时器(OST)保持芯片在复位状态直到石晶稳定为止。另外一个是加电计时器(POWER-UP T

[1] [2]

关键字:PIC单片机  16C84单片

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2012/1114/article_17654.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
PIC单片机
16C84单片

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved