1. C51问题,怎么样在一个程序给P0,P1口一同输出?

C51问题,怎么样在一个程序给P0,P1口一同输出

51单片机是8位机,数据输出一次最多8位,P0和P1口或P1和P2口是不可能同时输出的。只能***用16位的内部变量管理数据,然后分高8位和低8位分别输出,好在运算并不复杂。

比如: inttemp; P1=temp%0x100;//得到temp变量的低8位,并从P1口输出 P2=((temp/0x100)%0x04)

;//得到temp变量的高8位,并得到其中的低2位。从P2口输出(另外P2口的高6位如果有用需根据情况特别处理) 由于51单片机是16位寻址,所以P0口和P2口倒是可以同时输出,不过需要***电路配合,而且只能使用单片机自身的ROM。

华为p1刷机,华为p1刷机包
(图片来源网络,侵删)

通过锁存的方式锁存地址信号,输出时比如使用XBYTE[temp]=0的语句,将temp变量内容以地址信号的方式在一条语句中同时送到P0(低8位地址)和P2(高8位地址)。此时其实是输出地址,不是输出数据了。这种方法没什么实用价值,属于钻牛角尖,只是如果能理解就说明对51单片机了解的比较深了。

华为p1刷机,华为p1刷机包
(图片来源网络,侵删)