《ICIO端口A》PPT课件_第1页
《ICIO端口A》PPT课件_第2页
《ICIO端口A》PPT课件_第3页
《ICIO端口A》PPT课件_第4页
《ICIO端口A》PPT课件_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

MCLRRAOSC1RBPIC16F877RCOSC2RDVGNDRE,6,8,8,8,3,5个端口33个I/O位,I/O端口,PIC16F877输入/输出端口由RA、RB、RC、RD、RD和RE共5个端口,5个端口由33个I/O位组成,这33个I/O位根据其内部结构的不同,可通过软件编程使其分时工作在多种工作方式中的某一种工作方式,即每一个I/O位均具有多重功能。,RA2/AN2/VREF-,注意:I/O的驱动能力为:每一个I/O位可输出电流为2025mA每个端口总的驱动电流为6070mA5个端口总的驱动电流为200mA,P143(第3版)2。端口驱动能力+4行PIC单片机端口引脚可以直接驱动小型继电器等,!,一PORTA端口和PORTA有关的寄存器1PORTA可实现的功能6个I/O位ADC模拟信号输入/ADC参考电压输入TMR0外部时钟输入SSP从动选择(串行通信),PORTA端口功能说明I/O位输入输出RA0/AN0TTLCMOS驱动RA1/AN1TTLCMOS驱动RA2/AN2/VREF-TTLCMOS驱动RA3/AN3/VREF+TTLCMOS驱动RA4/TOCKI输入ST(施密特触发器)输出OCCMOS驱动RA5/SS#/AN4TTLCMOS驱动,RA5RA0输入/输出。RA5RA0的工作方式必须通过对TRISA方向寄存器的设置。TRISA对应的位设置为“0”,则对应位工作为输出(输出的是输出数据锁存器中的状态)TRISA对应的位设置为“1”,则对应位工作为输入ADC模拟信号输入;RA0/AN0、RA1/AN1、RA2/AN2、RA3/AN3和RA5/AN4ADC基准参考电压:RA2/VREF-、RA3/VREF+SPI通信从机选择控制:RA5/SS#,RA5、RA3RA0I/O电路结构,DQCKQ,DQCKQ,+,R=87190。静电放电及危害防护刘尚合等北京邮电大学出版社P129人体电阻的大小在5001K之间变化,并于人体产生的放电部位有关。手指尖放电R为10K;手掌放电时,人体R为1K;若用手握住金属体,R为500。若放电发生在较大的金属体上,列如椅子,手推车,人体电阻可以减小到50。电子系统中噪声的抑制与衰减技术王培清译电子出版社P237通常情况下,用15010Pf电容器模拟人体电容,330的放电电阻模拟人体电阻电磁兼容原理及应用郭银景清华出版社P91人体电阻一般在100500之间,视人体具体情况而变化系统可靠性分析与设计李海泉科学出版社P297,注意:PORTA端口寄存器在体1(05H)中。TRISA方向寄存器在体2(85H)中。设置各端口的输入/输出方式时,必须注意体的选择。,二PORTB端口和PORTB有关的寄存器1PORTB可实现的功能8个I/O位一个外部中断输入在线编程或电平变化中断PORTB端口功能说明I/O位缓冲器类型功能描述RB0/INTTTL/STI/O或中断输入,编程弱上拉RB1/RB2/RB4/RB5TTLI/O或电平变化中断,编程弱上拉RB3/PGMTTLI/O或编程控制引脚,编程弱上拉RB6/PGCTTL/STI/O或电平变化中断,编程弱上拉RB7/PGDTTL/ST,I/O或电平变化中断,编程弱上拉,PGM:单片机程序存储器编程低电压引脚PGC:单片机程序存储器编程时钟PGD:单片机程序存储器编程数据,RB7RB0:输入/输出。RB7RB0工作为输入/输出的状态,必须通过对方向寄存器TRISB的设置。若TRISB对应位设置为“0”,则对应位工作为输出(输出为输出数据锁存器中的状态);若TRISB对应位设置为“1”,则对应位工作为输入。RB3/PGM:I/O、编程电压RB6/PGC:I/O、编程时钟RB7/PGD:I/O、编程数据RB7RB4,RB1/RB2:I/O、电平变化中断RB0/INT:I/O、外部中断输入,DQCK,DQCKQ,QDEN,VDD,DATABUS,WRPORT,WRTRIS,RDPORT,RB0/INT,RDTRIS,U1,U2,U3,I/O位,方向寄存器,输入数据锁存器,输出数据锁存器,PORTBRB3RB0I/O电路结构,RBPU,施密特触发器,TTLinputBuffer,弱上拉,(弱上拉允许位),U2-Q=1输出U2-Q=0输入,&,例:初始化PORTB端口BCFSATAUS,RP0;设置RP0为“0”,选择体0CLRFPORTB;在设置TRSIB前对数据锁;存器进行初始化BSFSATAUS,RP0;设置RP0为“1”,选择体1MOVLW3CH;设置PORTB中各I/O位的;输入/输出00111100BMOVWFTRSIB;设置RB7、RB6、RB1和;RB0输出,设置RB4RB2;为输入,弱上拉是由RBPU对其进行的控制,RBPU=0允许、RBPU=1禁止;弱上拉可理解为是一个大电阻,DQCK,DQCKQ,QDEN,VDD,DATABUS,WRPORT,WRTRIS,RDPORT,RDTRIS,U1,U2,U3,I/O位,方向寄存器,输入数据锁存器,输出数据锁存器,3。PORTBRB7RB4I/O电路结构,RBPU,施密特触发器,TTLinputBuffer,弱上拉,RB7RB4接口的内部电路比RB3RB0接口电路多一个状态锁存器。当对RB7RB4分别执行位读操作时,当前从RB7RB4输入的逻辑状态被分别锁存在各自的状态锁存器中。当RB7RB4工作在输入方式时,若RB7RB4输入的逻辑电平和状态锁存器中所锁存的状态不同时就将RBIF中断标志置“1”。即将RB7RB4当前t1输入的状态,与t0时读入锁存在内部状态锁存器中的状态进行比较(图中A点和B点处的电压进行逻辑“异或”),若t1输入的状态和t0时锁存的状态不相等,通过“异或”电路就将中断标志位RBIF置“1”,若中断允许位RBIE为“1”,此时便向CPU申请状态变化中断或将CPU从休眠中唤醒。,QDU4EN,异或,:,RDPORT,Q3,Q1,RB7:RB6串行编程模式,设置RBIF,状态锁存器,A,B,电平变化中断,Q1,Q2,Q3,Q4,PC-1,PC,PC+1,004H,时钟,INTIF标志,GIE,CPU检测到RB7RB4=1的下一个周期的Q2将GIE置“0”,Q1,Q2,RB7RB4,PC+1,只要“异或”电路输出为“1”,RBIF即为“1”。在中断服务程序中可用下述两种方法将RBIF置为“0”:。在中断服务程序中对PORTB执行一次读操作(此时PORTB输入端的状态未变化),即执行读操作时,由于A点和B点处的逻辑相同,通过“异或”电路后输出使RBIF为“0”。在中断服务程序中通过对INTCON中的RBIF位执行置“0”操作。,利用PORTB输入的电压变化中断和软件控制的弱上拉功能,可以非常方便地与一个键盘连接,可利用按下的键将CPU从休眠状态中唤醒。这个特点特别适用于用电池供电的设备,如遥控器、计算器等。即CPU平常工作在低功耗的休眠状态,一旦有键按下,CPU即可被唤醒,实现了低功耗的工作方式。,例:RB0/INT中断初始化BSFSATAUS,RP0;设置RP0为“1”,选择体1。;或BANKSELTRSIBBSFTRISB,0;设置RB0为输入BCFOPTION_REG,INTEDG;选择下降沿触发中断BCFOPTION_REG,RBPU;允许弱上拉CLRFINTCON;INTCON全部置“0”BSFINTCON,INTE;设置RB0/INT中断允许位为“1”BSFINTCON,GIE;将全局中断允许位设置为“1”。;当RB0/INT输入为下降边沿触发;中断,或将CPU从休眠中唤醒。OPTION_REG寄存器在数据存储器中的地址是81H,INTCON寄存器在数据存储器中的地址是0BH、8BH、10BH、18BH,例PORTB口“电平变化中断”初始化子程序PORTBINTBSFINTCON,RBIE;电平变化中断允许BANKSELOPTION_REGBCFOPTION_REG,7;弱上拉有效,RBPU=0BCFTRISB,1BCFTRISB,2BSFTRISB,4BSFTRISB,5;设置与键盘有关的各口的输入输出方式BANKSELPORTBMOVFPORTB,W;读PORTB口bit4、bit5的初值(为高电平),;为“电平变化中断”的产生创造初始条件;(电平由高到低时产生中断)BSFINTCON,GIE;总中断允许RETURN,RB5,RB4,RB2,RB1,V,利用“电平变化中断”,在中断服务程序中要逐行逐列地扫描,即通过RB1和RB2分别输出低电平,这样有键按下,RB4和RB5就由高电平变成低电平产生电平变化中断。,上升沿产生中断,下降沿引起假中断,T,当脉冲T时间比中断服务程序执行的时间小时:进入中断服务程序即执行读RBX。,窄脉冲上升沿中断处理,若进入中断服务程序就执行读RBX操作,则即将RBIF置“0”,这样在执行中断服务程序时,若发生由高电平变低电平,此时又将RBIF置“1”,当中断服务程序执行完返回主程序时,便产生了错误的中断。,MOVFPORTB,1,中断服务程序执行完,在返回主程序时执行读RBX,这样就避免了下降沿所产生的错误中断。,DQCK,DQCKQ,QDEN,VDD,DATABUS,WRPORT,WRTRIS,RDPORT,RDTRIS,U1,U2,U3,I/O位,方向寄存器,输入数据锁存器,输出数据锁存器,3。PORTBRB7RB4I/O电路结构,RBPU,施密特触发器,TTLinputBuffer,弱上拉,QDU4EN,异或,:,RDPORT,Q3,Q1,RB7:RB6串行编程模式,设置RBIF,状态锁存器,A,B,电平变化中断,此时U3和U4均为低电平,中断服务程序,上升沿产生中断,下降沿引起假中断,中断服务程序执行结束读RBX,假中断产生的中断服务程序,中断服务程序执行时间,中断服务程序,主程序,宽脉冲上升沿中断处理,解决的办法是,进入中断服务程序后必须读端口的电平状态,若为高电平就执行中断服务程序,否则返回主程序。,INT_SER:;保护现场BTFSSINTCON,RBIEGOTOOTHER-INTBTFSSINTCON,RBIF;是RB中断?是间跳GOTOOTHER_INT;否,执行其他中断BTFSSPORTB,RBX;是上升沿中断,RBX为“1”间跳执行中断服;务程序GOTOCLR_RBIF;RBX不是“1”,置RBIF为“0”CLR_RBIF;MOVFPORTB,1;读RB端口BCFINTCON,RBIF;置RBIF为“0”GOTOINT_RET;处理完毕返回OTHER_INT;其他中断:INT_RET:;恢复现场RETFIE;中断返回,中断服务程序,;执行由RBx产生的中断服务程序,4PORTB相关的寄存器地址寄存器名D7D6D5D4D3D2D1D006H、106HPORTB86H、186HTRISB0输出1输入81H、181HOPTIONRBUFPORTB端口寄存器在体1(06H)和体3(106H)中。TRISB方向寄存器在体2(86H)和体4(186H)中。RBUF=0允许上拉、RBUF=1禁止上拉因此在设置各端口的输入/输出方式时,必须注意体的选择。,三PORTC端口和PORTC有关的寄存器1PORTC可实现的功能8个I/O位定时器1振荡器输入/输出,定时器1时钟输入捕捉器1/2输入;比较器1/2输出;PWM1/2输出SPI、I2C时钟信号SPI、I2C数据同步串行口数据输出异步收/发数据同步时钟/数据,RC7RC0:输入/输出。RC7RC0输出必须将方向寄存器TRISC所对应的位设置为0(输出为输出数据锁存器中的状态);TRISC所对应的位设置为“1”,则对应位工作为输入。RC0/T1OSO/T1CKI:I/O;TMER1振荡器输出;TMER1时钟输入RC1/T1OSI/CCP2:I/O;TMER1振荡器输入;捕捉器2/比较器2输出/PWM2输出RC2/CCP1:I/O;捕捉器1/比较器1输出/PWM1输出RC3/SCK/SCL;I/O;SPI/I2C时钟输入RC4/SDI/SDA:I/O;SPI同步串行数据输入、I2C数据RC5/SDO:I/O;同步串行数据输出RC6/TX/CK:I/O;异步发送数据;同步时钟RC7/RX/DT;I/O;异步接收数据;同步数据,DQCK,DQCKQ,QDEN,VDD,DATABUS,WRPORT,WRTRIS,RDPORT,RDTRIS,U1,U2,U3,I/O位,方向寄存器,输入数据锁存器,输出数据锁存器,2。RC7RC5、RC2RC0I/O电路结构,外围数据输出,施密特触发器,当PORTC作为I/O使用时,其输入/输出的工作方式,由对方向寄存器TRISC的设置来确定,“0”为输出;“1”为输入。当PORTC作为其它外围的功能模块时,由I/O电路图知,当外围模块工作时,由外围模块输出的有效的选择OE信号,使外围模块的数据直接通过MUX而不通过数据输出锁存器,因此不需要通过对TRISC寄存器的设置来确定各I/O引脚的输入/输出的工作方式。而由外围模块的工作方式确定各I/O位输入/输出的工作方式。因此当PORTC作为外围模块使用时,应仅可能的避免对TRISC的读/写操作,对TRISC的设置要根据各外围模块的功能来确定。,端口数据/外围设备数据选择OE,0,1,+,&,+,外围设备输出OE允许,外围设备输入,P,N,Q,例:当RC0和RC1作为TMER1的时钟输入时,此时不论TRISC1:0是什么状态(“0”,“1”),RC0和RC1都工作在输入方式。,RC0/T1OSO/T1CKI,RC1/CCP2/T1OSI,T1OSCEN,T1OSC,3RC4、RC3I/O电路结构RC4、RC3I/O电路结构是在RC7RC5、RC2RC0I/O电路结构基本上,为扩大对外围输入信号的兼容,通过对同步串行状态寄存器D6位CKE的设置,增加一个SMBUS电平的信号。CKE为“1”选择输入的是SMBUS电平的信号;CKE为“0”选择输入的是符合CMOS电平的信号。同样RC4和RC3当用于外围模块实现I2C通信时,TRISC4:3必须设置为“1”,即RC4、RC3工作在输入状态。,DQCK,DQCKQ,QDEN,VDD,DATABUS,WRPORT,WRTRIS,RDPORT,RDTRIS,U1,U2,U3,I/O位,方向寄存器,输入数据锁存器,输出数据锁存器,3。RC4、RC3I/O电路结构,外围数据输出,施密特触发器,RC4、RC3I/O电路结构是在RC7RC5、RC2RC0I/O电路结构基本上,为扩大对外围输入信号的兼容,通过对同步串行状态寄存器D6位CKE的设置(P261),当CKE为“1”,选择输入的是SMBUS电平的信号;当CKE为“0”,选择输入的是符合CMOS电平的信号。当RC4和RC3用于I2C通信时,TRISC4:3必须设置为“1”,将SDA和SCL设置为输入。SMBUS(systemManagementBUS)详见I2C总线,端口数据/外围设备数据选择,0,1,外围设备输出允许,外围设备输入,0,1,CKESSPSTAT(6),SMBUS,P,N,SMBUS是两线双向同步串行总线,他首先由INTEL提出,与I2总线兼容,I2是PHILIP提出。,4PORTC相关的寄存器地址寄存器名D7D6D5D4D3D2D1D007HPPORTC87HTRISC0输出1输入PORTC初始化BCFSTATUS,RP0;选择体0CLRFPORTC;置输出锁存器为“0”BSFSTATUS,RP0;选择体1MOVLW0CFH;设置PORTCI/O位的输入/输出MOVWFTRISC;设置RC30、7:6输入,;RC5:4输出,例:输入/输出的分时使用RC4工作在输出时:输出“1”使LED导通,输出“0”使LED截止。RC4工作在输入时:当无K1未按下时,输入为高电平;当K1按下时,输入为低电平。R3为限流电阻,当RC4工作在输出时,即使K1闭合,只要RC4输出为“1”,此时LED始终导通。下面程序所实现的功能是当K1闭合时,LED导通。RC4_0BANKSELTRISC;选TRISC所在体BSFTRISC,4;设置RC4为输入NOPBANKSELPORTC;选PORTC所在体,体“0”BTFSCPORTC,4;RC4为“0”间跳,K闭合GOTORC4_1;K1未闭合BANKSELTRISC;选体“1”BCFTRISC,4;RC4为“0”,设置RC4为输出BANKSELPORTCBSCPORTC,4;RC4输出为“1”CALLDELAY;LED导通BCFPORTC,4;RC4输出为“0”,LED截止GOTORC4_0RC4_1BANKSELTRISC;选体“1”BCFTRISC,4;设置RC4为输出BANKSELPOTRCBCFPORTC,4;RC4输出为“0”GOTORC4_0,RC4,5V,R3,K1,四PORTD端口和PORTD有关的寄存器,1PORTD可实现的功能8个I/O位,TRISD的位状态确定PORTD输入/输出的工作方式。通过对TRISE寄存器D4位PSPMODE的设置,PORTD可同8位CPU的数据线连接。PORTD端口功能说明I/O位缓冲器功能RD0/PSP0ST/TTLI/O;D0RD1/PSP1ST/TTLI/O;D1RD2/PSP2ST/TTLI/O;D2RD3/PSP3ST/TTLI/O;D3RD4/PSP4ST/TTLI/O;D4RD5/PSP5ST/TTLI/O;D5RD6/PSP6ST/TTLI/O;D6RD7/PSP7ST/TTLI/O;D7S/T表示PORTD作为I/O输入时,为施密特触发器;TTL表示PORTD作为并行从动端口时,为TTL输入。,DQCK,DQCKQ,QDEN,DATABUS,WRPORT,WRTRIS,RDPORT,RDTRIS,U1,U2,U3,I/O位,方向寄存器,输入数据锁存器,输出数据锁存器,2。PORTDI/O电路结构,施密特触发器,PORTD既可作为I/O位,也可作为8位数据线,同PORTE产生的RD、WR和CS信号组合,可用于8位I/O的并行接口。,3PORTD相关的寄存器地址寄存器名D7D6D5D4D3D2D1D008HPPORTDRD7RD6RD5RD4RD3RD2RD1RD088HTRISD“0”对应I/O位输出“1”对应I/O位输入89HTRISED4位:PSPMODE(“0”常规I/O,“1”并行),五PORTE端口和PORTE有关的寄存器1PORTE可实现的功能3个I/O位,由TRISE寄存器确定PORTE的输入/输出。RD、WR、CS信号的模拟输入,提供PORTD同8位CPU连接所需的读/写和选择信号。PORTE端口功能说明I/O位缓冲器功能RE0/RD#/AN5ST/TTL数字I/O;ADC第5路模拟信号的输入端;模拟接收8位CPU输出的RD#信号RE1/WR#/AN6ST/TTL数字I/O;ADC第6路模拟信号的输入端;模拟接收8位CPU输出的WR#信号RE2/CS#/AN7ST/TTL数字I/O;ADC第7路模拟信号的输入端;模拟接收8位CPU系统输出的CS#信号注:输入缓冲器在I/O模式下为施密特触发器;在并行从动模式下为TTL缓冲器。,DQCK,DQCKQ,QDEN,DATABUS,WRPORT,WRTRIS,RDPORT,RDTRIS,U1,U2,U3,I/O位,方向寄存器,输入数据锁存器,输出数据锁存器,2。PORTEI/O电路结构,施密特触发器,PORTE既可作为I/O位,也可作为RD、WR和CS信号,同PORTD产生的8位数据线组合后,可用于8位I/O的并行接口。,3.同PORTE相关的寄存器09HPORTERE2RE1RE089HTRISEIBFOBFIBOVPSPMODE0输出1输入9FHADCON1PCFG3PCFG2PCFG1PCFG0当RE2、RE1和RE0作为RD#、WR#和CS#信号使用时,TRISE寄存器的D2、D1和D0位,应分别设置为“1”输入。当RE2、RE1和RE0作为AN7、AN6和AN5信号使用时,TRISE寄存器的D2、D1和D0位,应分别设置为“1”输入。IBF输入缓冲器满状态位:“1”输入缓冲区已接收到数据,等待CPU读取。“0”输入缓冲区未接收到数据。OBF输出缓冲区满状态位:“1”输出缓冲区先前写入的数据未读取。“0”输出缓冲区中的数据已读取。IBOV输入缓冲区溢出标志位:“1”输入缓冲区中接收到的数据未读时,又发生写操作(用软件置“0”)。“0”无溢出。PSPMODE并行从动端口模式选择位:“1”并行从动端口模式“0”常规I/O模式PCFG2PCFG0(ADCON1)主要是设置PORTE为数字输入/输出(I/O,RD#、WR#和CS#),或确定ADC输入模拟信号的通道。,六。并行从属端口,由上述讨论知,PORTD和PORTE除具有双向的I/O功能外,当TRISE方向寄存器中的D4位PSPMODE设置为“1”时,还可作为8位并行从属端口(微处理器端口方式)直接同CPU外围的8位数据总线连接。即外部CPU将PORTD视为8位数据锁存器(输入/输出锁存器),在PORTE的RE2(RD#)、RE1(WR#)和RE0(CS#)的控制下,对其执行读/写操作。,1。并行从属PORTD和PORTE的结构,Databus,D,Q,CK,D,Q,EN,WRPort,+,&,&,RDPort,设置中断标志,PSPIF(PIR1),I/O,RDRE0,CSRE2,WRRE1,PORTD1位,从属(Slave)表示PIC在数据传输过程中,RD#、WR#和CS#信号均由外部CPU产生。即当RD#和CS#信号有效时,此时外部CPU所读的不是PICPORTD引脚上的状态,而是PORTD内部输出锁存器中的内容。当WR#和CS#信号有效时,此时外部CPU不是将数据送到PICPORTD的引脚上,而是写入PORTD内部的输入锁存器中。由于PORTD输入/输出的数据是由外围CPU输出的RD#和WR#信号确定,因此不需对TRISD寄存器进

温馨提示

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

评论

0/150

提交评论