课件:输入输出端口.ppt_第1页
课件:输入输出端口.ppt_第2页
课件:输入输出端口.ppt_第3页
课件:输入输出端口.ppt_第4页
课件:输入输出端口.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章 输入输出端口,在PIC16F877单片机中,共有五个I/O端口:端口A、B、C、D和E。 端口的一些引脚通过对相应的专用寄存器的设置选择用作多功能复用,既可作为一般通用的I/0引脚,也可作为某些部件特殊功能的输入/输出引脚。 一旦作为特殊功能引脚,这些引脚不再用作一般的I/O功能。,7.1 I/O端口功能的通用结构,PIC16F877单片机有5个I/O端口,它们的设计思想和内部结构都是不同的,即使同一个端口各个引脚的内部结构也存在差异。 但就其通用的输入/输出功能,则具有类似的线路结构。,基本端口内部结构如下图,主要包括:3个D触发器组成的输入/输出数据锁存电路和方向选择锁存电路; 2个三态门控电路; 二输入“与”门和“或”门组成数据输出的前向通道; 由P沟道场效应管和N沟道场效应管构成互补推挽的电流输出级。,在PIC系列单片机中,每个端口都至少对应着两个特殊功能寄存器, 分别是数据寄存器(PORTX)和方向寄存器(TRISX) , 也就是说PIC单片机把I/O端口当作寄存器来访问(即读出或写入)。,I/O端口的方向寄存器是定义其端口引脚的输入/输出状态; 而I/O端口的数据寄存器是用于其端口输入/输出数据的桥梁,或称为数据缓冲器。,7.1.1 设置端口的输入/输出状态,根据I/O端口引脚的输入/输出状态,对该端口的数据方向控制寄存器(TRISX)进行初始化定义。 若把TRIS某位设置为“1”,则相应的PORT端口引脚定义为输入端; 若把TRIS某位设置为“0”,则相应的PORT端口引脚定义为输出端。,1、定义输入线 当把某个端线定义为输入状态时,信号“1”通过单片机的内部数据总线加至方向锁存器D2的输入端,在写方向控制信号的触发下写入D2锁存。 此时,D2的Q=1,上部的“或”门封闭,其输出恒定为“1”,这就导致P沟道场效应管截止;,Q=1则Q=0,下部的“与”门封闭,其输出恒定为“0”,这就导致N沟道场效应管截止。 正是由于数据输出通道的封闭,数据只能从外部单向输入。,1,1,0,1,0,P沟道场效应管截止,N沟道场效应管截止,当I/O端口引脚用于输入数据时,方向控制寄存器TRISX的对应位必须设置为“1”。 根据“或”门和“与”门的接线方式,不论另一个输入端的信号如何,此时这2个门的输出均被封闭,即处于高阻状态。,因此,在这种情况下,上下2个场效应管都处于截止状态, I/O输出数据通道是关闭的。 外部I/O引脚数据,经过输入缓冲器调整连接到输入数据锁存器D3的输入端,通过读端口数据触发信号完成数据的输入。,读端口数据触发信号主要有2个作用: 锁存输入数据。读端口脉冲信号,经反向器触发锁存外部I/O引脚的输入数据。 临时占用内部数据总线。作为门控信号临时打开三态门,以便让输入数据锁存器的输出连通单片机的内部数据总线。,数据输入时应特别注意,外部提供的数据信号并不会自动锁存,必须保持足够长的时间,直到指令读入为止。,2、定义输出线 当把某个端线定义为输出状态时,信号“0”通过单片机的内部数据总线加至方向锁存器D2的输入端,在写方向控制信号的触发下写入D2锁存。 此时,D2的Q=0,上部的“或”门恒定开放,“或”门的输出直接由来自数据锁存器D1的输出决定;,D2的Q=0时Q=1,下部的“与”门也恒定开放,“与”门的输出直接由来自数据锁存器D1的输出决定。 数据输出通路被打开,被定义为输出状态。,0,0,1,输出数据“1” 信号“1”通过单片机的内部数据总线加至输出数据锁存器D1的输入端,在写端口控制信号CK的触发下写入D1锁存。 从D1的反向器输出端Q输出“0”,此时的“或”门处于直通状态,“或”门的输出也为“0”,因而P沟道场效应管导通;,同样,“与”门的输出为“0”,导致N沟道场效应管截止。 正是由于上部的场效应管导通而下部的场效应管截止,此时I/O输出引脚被拉至高电平“1”,同原来内部数据总线信号一致,内部的数据“1”被间接输出。,1,1,0,P沟道场效应管导通,输出端与电源正极性端接通,0,0,1,0,0,N沟道场效应管截止,1,输出数据“0” 信号“0”通过单片机的内部数据总线加至输出数据锁存器D1的输入端,在写端口控制信号CK的触发下写入D1锁存。 从D1的反向器输出端Q输出“1”,此时的“或”门处于直通状态,“或”门的输出也为“1”,因而P沟道场效应管截止;,同样,“与”门的输出为“1”,导致N沟道场效应管导通。 正是由于上部的场效应管截止而下部的场效应管导通,此时I/O输出引脚被拉至低电平“0”,同原来内部数据总线信号一致,内部的数据“0”被间接输出。,0,0,1,P沟道场效应管截止,0,0,1,1,1,N沟道场效应管导通,输出端与电源负极性端接通,0,PIC16F877单片机的PORTA是6位宽,带锁存器的I/O口。 其对应的数据寄存器和方向控制寄存器分别是PORTA和TRISA。,一、PORTA和它的方向寄存器TRISA,地址分别是05H和85H,分别位于存储体0和存储体1的相同位置上,并且都只用到了低6位,每个寄存器中阴影标出的2位没有被利用。 PORTA端口作为模拟电压输入或模拟参考电压输入,需设置ADCON1寄存器低4位的相应位。,与A口有关的专用寄存器有3个,当TRISA寄存器相应位置为1,其输出驱动器呈高阻状态,PORTA相应的I/O引脚被定义为输入; 当TRISA寄存器相应位为0,输出锁存器上的数据就从相应I/O引脚上输出,所以这时PORTA相应的I/O引脚被定义为输出;,当作为模拟电压输入引脚时,必须保持TRISA置1,即将RA的相应引脚设置为输入。 读PORTA得到的是端口引脚上的电平状态,而写PORTA则是写入端口的数据锁存器,所有的写操作都是“读一修改一写”操作。,因此,对端口的写意味着先读端口引脚电平,然后根据指令的要求修改这个值,最后再写入端口的数据锁存器。 RA4引脚是一个多功能I/O口,可以切换作为定时器TMR0的时钟输入,表示为RA4/T0CKI。,RA4/T0CKI是斯密特触发输入和集电极开路输出。所有其他RA口引脚都是TTL电平输入和CMOS驱动输出。 端口A其他引脚RA0 、RA1 、RA2、 RA3、 RA5的第二功能是作为模拟电压输入或模拟参考电压输入。,引脚的选择是通过置位/复位ADC控制寄存器1(ADCON1)的低4位来决定的。 当上电复位时,这些引脚设定为模拟电压输入,读这些引脚时,得到的结果是零。,PCFG3:PCFG0011x时选择A口的5个引脚和E口的3个引脚为数字I/O引脚,这4位用以选择RA和RE的哪些引脚为模拟量输入和模拟参考电压输入,RA口初始化的程序,BCF STATUS,RP0 BCF STATUS,RP1 ;选RAM的BANK0 CLRF PORTA ;清除RA口 BSF STATUS,RP0 ;选RAM的BANK1 MOVLW 0x07 MOVWF ADCON1 ;RA口为数字I/O MOVLW 0xCF MOVWF TRISA ;RA5:RA4为输出 ;RA3:RA0为输入,端口B是一个8位宽,双向可编程I/O端口。 其对应的数据寄存器和方向控制寄存器分别是PORTB和TRISB。,二、PORTB和它的方向寄存器TRISB,PORTB的地址有2个,分别是06H和106H,说明在存储体0和存储体2的相同位置上都能访问到它; TRISB的地址也有2个,分别是086H和186H,说明在存储体1和存储体3的相同位置上也都能访问到它。,与B口相关的寄存器共有4个 数据寄存器PORTB 地址:06H、106H,方向寄存器TRISB 地址:86H、186H,当TRISB寄存器相应位置为1,其输出驱动器呈高阻状态,PORTB相应的I/O引脚被定义为输入; 当TRISB寄存器相应位为0,输出锁存器上的数据就从相应I/O引脚上输出,所以这时PORTB相应的I/O引脚被定义为输出。,PORTB有三个引脚与低电压编程功能复用,它们是:RB3/PGM、RB6/PGC和RB7/PGD。 PORTB的RB7:RB4定义为输入,这4根I/O线上的电平有变化时,可以引起中断。,其功能的实现是通过把RB7:RB4引脚上的输入信号与上次读入B口的旧的锁存值进行比较。 若有变化,则把两者相异或后输出以产生RBIF中断(中断的标志在INTCON寄存器中的D0)。 这种中断可以把CPU从“休眠(SLEEP)”状态中唤醒。,端口B的每一个引脚具有内部弱上拉功能,这可以通过软件编程设置,即选项寄存器OPTION_REG的D7(RBPU)。 RBPU0时,设置弱上拉功能可以启用; RBPU1时,设置弱上拉功能被禁止。 弱上拉:最简单的解释,就是比较弱的上拉。,对于其中某一个具体引脚而言,仅当它被定义为输入方式,并且同时RBPU0,弱上拉功能才确实被启用; 反之,如果该引脚定义为输出,无论RBPU为何值,该脚上的弱上拉功能都自动被取消。,选择寄存器OPTION_REG,与端口B有关的2个控制位的含义如下:,INTEDG:外部中断INT触发信号边沿选择位。 1:选择RB0/INT上升沿触发有效; 0:选择RB0/INT下降沿触发有效。 RBPU:端口B内部弱上拉电路使能控制位。 1:端口B弱上拉电路禁止; 0:端口B弱上拉电路使能。,中断控制寄存器INTCON 地址:0BH,8BH,是一个可读/写的寄存器,与端口B有关的控制位只有2个,含义如下:,RBIE:端口B的引脚RB7RB4电平变化中断屏蔽位: 1:允许端口B产生的中断; 0:屏蔽端口B产生的中断。 RBIF:端口B的引脚RB7RB4电平变化中断标志位。 1:RB7RB4已经发生了电平变化中断(必须用软件清除); 0:RB7RB4未发生电平变化中断。,端口B初始化程序,BCF STATUS,RP0 BCF STATUS,RP1 ;选BANK0 CLRF PORTB ;清除RB口 BSF STATUS,RP0 ;选BANK1 MOVLW 0x0F MOVWF TRISB ;RB3:RB0为输入 ;RB7:RB4为输出 BCF OPTION_REG,7 ;启用内部弱上拉,端口C是一个8位宽,双向可编程I/O端口。 其对应的数据寄存器和方向控制寄存器分别是PORTC和TRISC。 PORTC的地址是07H,在存储体0, TRISC的地址是87H,在存储体1。,三、PORTC和它的方向寄存器TRISC,与端口C有关的寄存器有2个: PORTC 地址:07H,TRISC 地址:87H,当TRISC寄存器相应位置1,其输出驱动器呈高阻状态,PORTC相应I/O引脚被定义为输入; 当TRISC寄存器相应位置为0,输出锁存器上的数据就从相应I/O引脚上输出,这时PORTC的相应I/O引脚被定义为输出。,端口C初始化程序,BCF STATUS,RP0 BCF STATUS,RP1 ;选BANK0 CLRF PORTC ;清除RC口 BSF STATUS,RP0 ;选BANK1 MOVLW 0xCF ;送11001111到TRISC MOVWF TRISC ;设置RC3:RC0为输入 ;RC5:RC4为输出 ;RC7:RC6为输入,在PIC16F87X系列单片机中,只有40脚封装的PIC16F874(A)/877(A)芯片上有端口D。 端口D是一个8位双向I/O端口。它在基本输入/输出功能的基础上,复合了并行从动端口的功能。,四、PORTD和它的方向寄存器TRISD,PORTD工作于并行从动端口方式时,将TRISE寄存器D4(PSPMODE)置1,工作于通用I/O端口方式时,该位清0。 另外,每条引脚在作为通用I/O脚使用时,是经过施密特触发缓冲器输入的;而工作在并行从动端口方式时,则是经过TTL缓冲器输入的。,与端口D有关的寄存器有3个: PORTD 地址:08H,TRISD 地址:88H,TRISE 地址:89H,端口D初始化程序,BCF STATUS,RP0 BCF STATUS,RP1 ;选BANK0 CLRF PORTD ;清除RD口 BSF STATUS,RP0 ;选BANK1 MOVLW 0xF0 ;送11110000到TRISD MOVWF TRISD ;RD3:RD0为输出 ; RD7:RD4为输入,在PIC16F87X系列单片机中,只有40脚封装的PIC16F874(A)/877(A)芯片上有端口E,端口E是一个只有3条引脚的双向I/O端口。 它在基本输入/输出功能的基础上,复合了两项功能,即用做模拟输入通道和PSP并行从动端口控制线。,五、PORTE和它的方向寄存器TRISE,端口E的功能,与端口E有关的寄存器有3个: PORTE 地址:09H,ADCON1 地址:9FH, TRISE各位的含义如下:,TRISE 地址:89H,IBF(D7):输入缓冲器满标志位 D71时,表示已接收到一个数据,等待CPU读取; D70时,表示没有接收到数据。 OBF(D6):输出缓冲器满标志位 D61时,表示输出缓冲器仍保持着上次写入的数据; D60时,表示输出缓冲器已空。,IBOV(D5):输入缓冲器溢出标志位 D51时,表示输入缓冲器溢出; D50时,表示无溢出。 如果在输入缓冲器中的数据没有取走之前,又写入了数据,就会发生输入缓冲器溢出,IBOV置1。,PSPMODE(D4):D口并行从动模式设置位 PSPMODE1时,设置端口D为并行从动端口; PSPMODE0时,设置端口D为一般的I/O口。,D3:未用 D2D0:端口E的三个引脚方向选择位,分别控制RE2、RE1、RE0为输入还是输出。置1为输入,0为输出。,当方向寄存器TRISE的D4(PSPMODE)置1,设置端口D为并行从动端口,这时端口E的三个引脚作为RD、WR、CS, TRISE必须置位,将引脚设置为数字输入。 另外,每条引脚内部都设置了两种输入缓冲器方式,一种是施密特触发输入;另一个则是TTL缓冲器输入。,当方向寄存器TRISE的D4位(PSPMODE)置位,设置端口D为并行从动端口, 这时端口E的三个引脚作为RD、WR、 CS作为三个控制信号。,在这种方式下,方向寄存器TRISE的D2:D0必须置1,将引脚设置为数字输入。 同时也必须保证ADCON1寄存器的低四位PCFG3:PCFG0设置使RE2、RE1、RE0为数字I/O口。,ADCON1的PCFG3PCFG0设置为 0010、0011、0100、0101、011x、1100、1101、1110、1111等模式使RE2、RE1、RE0为数字I/O口。,只有40脚封装的PIC16F87X单片机才配置了PSP模块。 PSP之所以称为并行从动端口,是因为PIC16F87X在利用并行端口与外界处理器(可以是MCU、DSP等)进行通信时,读、写控制信号及片选控制信号,PIC16F87X处于受控位置,对方处理器处于主控位置。,PSP原理,当PSP投入工作时,必须占用RD和RE的全部端口引脚,而不能再有他用。 当PSPMODE控制位被置1时,RD和RE就共同配合一起工作于PSP模式,借助于这种PSP工作方式,可以实现与其他处理器之间的并行数据通信。,PSP可以直接与外部处理器的8位数据总线进行接口。 外部处理器作为“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论