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