老古开发网首页
导航:老古开发网首页文章索引索引第960页文章分类PIC MSP430 第8页→[PIC16C5X的I/O口]
| -文章搜索 - 最新文章 - |

第95篇:PIC16C5X的I/O口

发布时间:2005年11月2日 点击次数:2581
来源:   作者:
 
 PIC16C5X系列单片机所有I/O口都可被独立定义为输入或输出口。参见图1。作输入口时,这些端口不锁存,外部输入信号必须保持到读指令读入为止。输出信号被锁存并保持不变,直到被改变为止。要定义一个口为输出,可直接设定对应控制位为“0”,某位端口用于输入,则相应TRIS位须为“1”。

    当“TRIS f”送入“1”时,Q1、Q2都截止,I/O脚成高阻状态,此时为输入态。当执行指令如MOVF 6,W,把当前I/O口的状态读入数据总线。当“TRIS f”送出“0”时,Q1、Q2的导通情况取决于数据锁存器Q(非)的状态。当写入数据为“1”时,Q(非)输出“0”,Q1导通,Q2,截止,I/O口输出高电平。当数据为“0”时,Q(非)输出“1”,Q2导通,Q1截止,I/O口输出低电平。无论I/O脚置成输入或输出,执行指令(如MOVF 6,W)都是将I/O端口的状态读入数据总线。

    一些指令先读后写,如BCF、BSF指令整个端口状态读入CPU,执行位操作后再将结果写回去覆盖原来的内容,即输出结果放在I/O口的数据锁存器上,这点程序员需加以注意。特别当一个端口中一条或几条引脚一会儿作输入,一会儿又作输出而又执行BCF、BSF指令时。举例说明:BSF 6,5指令的目的是要把B口的第5位置为高电平“1”,执行这条指令时,先把整个B口当前的状态读入CPU,把第5位置成“1”后再把结果(8个位)重新输出到B口的数据锁存锁存器。如果B口的某位用作双向I/O口,且它在这时被定义为输入态,则在这条I/O脚上出现的输入信号被再写入这个I/O脚数据锁存器,从而覆盖原来的内容。如果这个I/O脚保留为输入方式,不会出现问题。但如果稍后这个I/O脚改为输出态,则数据锁存器bit1端内容可能和先前的不同了。

    I/O输出电路为CMOS互补推挽电路,有很强的带负载能力,高电平输出时具有20mA的拉电流,低电平输出时允许25mA的灌电流。这种特性可直接用于驱动LED显示器,为了改变某各引脚上的电平,这个引脚有效地输出“0”或“1”时,不应该同时又受到外部设备的驱动,因为由此引起的高输出电流可能损坏芯片。

    I/O操作指令周期的最后写I/O口,如果为读,数据须在指令周期开始前准备好。对于同一个口执行先写后读,必须小心。指令序列应满足要求:在下一条读I/O数据的指令执行之前,应使引脚的电平稳定,否则引脚的先前状态会被读入CPU,而不是新状态。建议最好用NOP指令或其他非I/O操作指令把读写指令隔开。

    在电磁干扰环境恶劣的情况下,如键盘处于静电放电ESD(Electronic Static Discharge)的环境中,由于电磁噪声干扰,寄存器的内容将受影响。若I/O控制寄存器的内容发生改变,即使一只引脚从输入变成输出状态,程序依然继续运行。此时程序从这一引脚读取数据,结果可能是错误的。面对这种情况,我们建议在一定时间间隔内需重新定义I/O口的输入和输出状态。如果程序安排上允许,最好是每次读写数据时设置I/O控制寄存器,虽然对于大多数时候不需要这样做,只是提醒程序员注意电磁噪声干扰问题。


欢迎进入老古论坛进行讨论
[PIC MSP430 ] 相关文章:
PIC16C5X单片机的状态寄存器
简介:
—深圳市凌雁电子有限公司 4.状态寄存器f3 该寄存器包含有ALU的算术状态位,RESET状态位、大于512字节程序存储器的页面预选位。 状态寄存器f3可以用作目标寄存器。某些标志位通过相应的写来设定,而另外一些位是不能通过指令来改变的。TO、PD位是不可写的。因此一条指令对状态寄存器执行的结果会有所不同。例如CLR f3被除了TO和PD位之外的所有位清“0”,并把“Z”位置“1”,所......

PIC16C5X单片机数据存储器
PIC16C5X单片机数据存储器
PIC16C5X单片机程序存储器
PIC16C5X单片机寄存器文件
 
下一个:[PIC MSP430 ]PIC16C5X单片机通用寄存器和专用存储器
简介:
通用寄存器文件是用于存放数据的寄存器。一般用于中间数据或结果数据存放。所有的通用寄存器构成了通用寄存器文件。 专用寄存器是单片机内的物理寄存器,它们与数据存储器无关,专用寄存器用于特殊用途,例如I/O断口控制等。 1.通用寄存器 PIC16C52/54/56的通用寄存器地址分配为F07H—F1FH,PIC16C55则为F08H—F......

上一个:[PIC MSP430 ]PIC16C5X的时钟振荡器

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:31毫秒