把I/O口作为输进口使用时,是“读引脚”,不同于“读端口”。留意,读端口的“口”
不是P0口、P1口的“口”,而是锁存器的Q端口,也便是读锁存器Q端的输出信号然后送
三态缓冲器输入,经过缓冲器输出到单片机内部总线。而读引脚则是直接把芯片引脚上
的外部数据,经过三态缓冲器把数据放到内部总线。
例如,用MOV进行读引脚操作:
MOV P1,0FFH
MOV A,P1
编程时须先置I/O口引脚为高电平的原因如下(请检查口电路结构图):
51单片机的P0口是双向口,P1~3口是准双向口,其I/O口引脚都和单片机内部的场效应管
FET漏极衔接。首要咱们无妨假定init时引脚为低电平(我不知道单片机reset时
引脚缺省电平是低仍是高?仍是不定?),即FET漏极为低电平,由于此刻FET是导通的,
所以不管外部输入1仍是0,都会发生拉电流,拉为低电平,然后无法正确判别外部输入
的是1仍是0.严峻的话,假如拉电流过大,还或许烧坏FET。
因而,init时只好将引脚设为高电平,例如MOV P1,0FFH,由单片机口电路的结构图能够
看出,这条指令的内部电路逻辑是这样的:
先把0FFH放到内部总线,锁存器输入端(D端)从内部总线取数据,锁存,然
后从Q非端输出到FET栅极,明显此刻Q非为0,FET截止,经过漏极上拉电阻输出高电平,
不会影响外部输入电平(相当于和外部输入逻辑与)。