51单片机读端口的疑惑
教科书上都写明,在读端口前,需要先向端口写1,然后再读.
但是,"为读端口而先写1",以及 "本来就是对该端口输出1",这两者如何区分呢?
我写了一个程序测试,结果真出问题了
void main()
{
unsigned char ch;
p2=0x0f; // 这个是"本来就是对该端口的输出"
p2=0xff; // 这个是"为读端口而先写1"
ch=p2; // 读端口
p1=ch; // 写端口
while(1);
}
这个程序本意是读取p2端口状态,然后写入到p1端口,但结果,连p2端口一起都改变了,p2变成了0xff.
这是为什么?
发表时间:2009年8月7日2:40:13