单片机i/o口问题(高手进)

来源:百度知道 编辑:UC知道 时间:2024/09/21 22:54:48
我用STC89c52单片机写程序在1602的液显上显示,p3口部分用作控制,然后我用P2口送数据到液显(送数据是用的8位),但是无法显示。而我改用P0口或者P1口送数据均可正常显示(P0口不用外部上拉也可)。
程序一开始给了i/o口置1的指令的(事实上不给这个指令也能显示的)。另外我用下面的测试程序去测试P2、P3、P1口的所有引脚特性(用万用表测其电平变化),当然P2口和P1口是一样的,事实上测出来的也是一样的,P3口也是正常的。 也就是说P2口应该是没有坏的,他能正常被上拉和下拉,问一下高手这是怎么回事? 怎么解决?似乎P2口跟P1口一样的没坏,但它就是用不了...
#include<reg51.h>
sbit p20 = P1^0;//测试别的口是改变这里数字即可
sbit p21 = P1^1;
sbit p22 = P1^2;
sbit p23 = P1^3;
sbit p24 = P1^4;
sbit p25 = P1^5;
sbit p26 = P1^6;
sbit p27 = P1^7;

void main()
{
p20 = 0;
p21 = 0;
p22 = 0;
p23 = 0;
p24 = 0;
p25 = 0;
p26 = 0;
p27 = 0;

while(1)
{

if(p20==1)
{

p21 = 0;
p22 = 0;
p23 = 0;
p24 = 0;
p25 = 0;
p26 = 0;
p27 = 0;
}
else
{
p21 = 1;
p22 = 1;
p23 = 1;
p24 = 1;<

P2是单片机写外部器件地址的高八位,知道了不? 兄弟0分的话真不想告诉你

楼上真搞笑,第一次听说P2只能做外部器件的高八位地址,不能做正常的I/O口用!!你真是高手,哪个老师教的?还是你自学的?

懒得回答,太受不了了!

楼上两位都挺搞,都没有解决问题...(我也不会,呵呵)