程序1:<br />#include <reg52.h><br />sbit bit0=ACC^0;<br />sbit P10=P1^0;<br />main()<br />{<br /> unsigned char i,k=0x40;<br /> while(1)<br /> {ACC=k--;<br /> for(i=0;i<8;i++)<br /> {<br /> ACC=ACC>>1;<br /> P10=bit0;<br /> }<br /> }<br />}<br />程序2:<br />#include <reg52.h><br />sbit bit0=ACC^0;<br />sbit P10=P1^0;<br />main()<br />{<br /> unsigned char i,k=0x40;<br /> while(1)<br /> {ACC=k--;<br /> for(i=8;i>0;i--)<br /> {<br /> ACC=ACC>>1;<br /> P10=bit0;<br /> }<br /> }<br />}<br />程序的主要目的就是把十六进制数据k串行发送到IO口P1.0。可是如果用程序1就达不到目的,因为程序走到for循环后就把A清0了,而用程序2的话就没事,程序走到for循环后不会把A清0。请问原因是什么?
|