51单片机是8位机,数据输出一次最多8位,P0和P1口或P1和P2口是不可能同时输出的。只能采用16位的内部变量管理数据,然后分高8位和低8位分别输出,好在运算并不复杂。比如:
int temp;
P1 = temp%0x100; //得到temp变量的低8位,并从P1口输出
P2 = ((temp/0x100)%0x04); //得到temp变量的高8位,并得到其中的低2位。从P2口输出(另外P2口的高6位如果有用需根据情况特别处理)
由于51单片机是16位寻址,所以P0口和P2口倒是可以同时输出,不过需要外围电路配合,而且只能使用单片机自身的ROM。通过锁存的方式锁存地址信号,输出时比如使用XBYTE[temp]=0的语句,将temp变量内容以地址信号的方式在一条语句中同时送到P0(低8位地址)和P2(高8位地址)。此时其实是输出地址,不是输出数据了。这种方法没什么实用价值,属于钻牛角尖,只是如果能理解就说明对51单片机了解的比较深了。
uint x;//定义一个16位数
//你在程序中对x的值进行修改,之后
P1=x/0xff;//显示高8位
P0=x%0xff//显示低8位
//可以起到连续显示的效果,不知道你问的是这个不是
用2片锁存