位置:首页 > IC型号导航 > 首字符P型号页 > 首字符P的型号第520页 > PIC16C77-20/JW > PIC16C77-20/JW PDF资料 > PIC16C77-20/JW PDF资料1第53页

PIC16C7X
5.6
I / O编程注意事项
适用设备
72 73 73A 74 74A 76 77
5.6.1
双向I / O端口
例5-4 :
读 - 修改 - 写
说明上的I / O
PORT
任何指令,它写道,在内部操作为
读取随后的写操作。该
BCF
和
BSF
指令,例如,读取寄存器进
CPU,执行位操作,将结果写回
到寄存器中。注意必须使用时,这些
指令被应用到一个端口与两个输入端和
输出去连接定义。例如,一
BSF
在第5位的操作
PORTB将导致全部8位数值的读取
到CPU中。然后,
BSF
操作发生在
位5和PORTB被写入到输出锁存器。如果
PORTB的另一位被用作双向I / O引脚
(例如,第0位),它是代音响定义为输入,此时,该
引脚上的输入信号将被读入
CPU和重新写入该特定的数据锁存器
针,覆盖先前的内容。只要针
停留在输入模式中,不会出现问题。但是,如果
位0被切换到一个输出端,所述数据的内容
现在锁定可能是未知的。
读端口寄存器,读取端口的值
销。写端口寄存器写入值到
端口锁存器。当使用读 - 修改 - 写指令
(恩。
BCF , BSF ,
等)的端口,端口引脚值
是读出,所需的操作完成到这个值,并且
这个值写入端口锁存器。
例5-4显示了两个连续的读数效果
修改 - 写一个I / O端口上的说明。
;初始端口设置: PORTB<7 : 4>输入
;
PORTB<3 : 0>产出
; PORTB<7 : 6>有外部上拉,并
;不连接到其它电路
;
;
端口锁存端口引脚
;
---------- ---------
BCF PORTB , 7
; 01pp pppp
11pp pppp
BCF PORTB , 6
; 10pp pppp
11pp pppp
BSF STATUS , RP0 ;
BCF TRISB , 7
; 10pp pppp
11pp pppp
BCF TRISB , 6
; 10pp pppp
10pp pppp
;
;需要注意的是,用户可能预期
;引脚值为00pp PPP 。第二条BCF
;造成RB7被锁存为引脚值
(高) 。
一个引脚设置为输出低或高不宜
来自外部设备的指令驱动的同时
改变该引脚上的电平( “线或” , “线和” ) 。
将所得的高输出电流可能会损坏
芯片。
5.6.2
连续操作对I / O端口
实际写入到I / O端口出现在一个末端
指令周期,而对于读操作,数据必须是
在指令周期的开始(图5-有效
10)。因此,必须注意,如果写行使跟着
由一个读操作lowed进行相同的I开/
O端口。指令的执行顺序应该是这样的,以
允许引脚电压达到稳定(与负载有关)
下一条指令导致了网络连接文件是前
读入CPU中被执行。否则,先前
该销的状态可以被读入到CPU而不是
新的状态。如果有疑问,最好是分开
用这些指令
NOP
或其他指令不
访问I / O端口。
图5-10:连续I / O操作
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
PC
指令
取
PC
PC +1
PC + 2
NOP
PC + 3
NOP
注意:
这个例子显示了一个写PORTB
接着读PORTB 。
注意:
数据建立时间= ( 0.25T
CY
- T
PD
)
MOVWF PORTB MOVF PORTB ,W
写
PORTB
RB7 : RB0
端口引脚
在这里采样
指令
执行
MOVWF PORTB
写
PORTB
T
PD
NOP
MOVF PORTB ,W
其中T
CY
=指令周期
T
PD
=传播延迟
因此,在较高的时钟频率,
写后读可能是概率
lematic 。
1997 Microchip的技术公司
DS30390E第53页