先写1,是使I/O脚输出为高电平,拉高了,是写到内部的并行口的寄存器了。原每个I/O脚即可输出,也可输入,当写0后,使输出状态为低电平,这样,再作输入,读引脚时就会读入0,不管外部的输入状态是什么都只能读入0,这样,读入的数据就是错误的。而先写1后,当外部输入0,读入的也是0,外部输入1,读入的也是1,读入的数据才与外部相同。
如图是端口内部结构,写入 1 ,则 Q' = 0 ,V2 截止,等于输出部分断路,端口只有上拉电阻,引脚是高电平,准备接受输入信号。
如果端口曾经输入 0 ,锁存器 Q' = 1 ,V2 导通, 输入信号被 V2 接地,CPU 只能读入 0 。