STC89C58单片机P2口莫名其妙的问题;求解

2019-07-15 17:37发布

#include<reg52.h>
void main()
{
        P1=0x00;
        P2=0x00;
        P1=0x55;
        while(1);

}
以上用破解后的keil3 软件编译通过;P1口接LED,结果的等全亮;怎么调试就发现P2=0x00;这语句不运行;P2是高8位地址线;更换单片机后还是不运行;我总结为
1,不是单片机问题;2,P2口操作不运行
以下是分别调试程序对应hex
P1=0x00;P2=x00;P1=0x55;while(1);
000000   02 00 03 78 7F E4 F6 D8 FD 75 81 07 02 00 0F E4
000010   F5 90 F5 A0 75 90 55 80 FE

P1=0x00;while(1);P1=0x55;while(1);
000000   02 00 03 78 7F E4 F6 D8 FD 75 81 07 02 00 0F E4
000010   F5 90 80 FE
P1=0x00;p1=0x55;while(1);
000000   02 00 03 78 7F E4 F6 D8 FD 75 81 07 02 00 0F E4
000010   F5 90 75 90 55 80 FE

P1=0x00;p2=0xff;P1=0x55;while(1);//运行达到效果
000000   02 00 03 78 7F E4 F6 D8 FD 75 81 07 02 00 0F E4
000010   F5 90 75 A0 FF 75 90 55 80 FE

求解??????

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
qq372848728
2019-07-16 11:08
首先判断每个led的正负极是否连接都一致是否都正确,然后分别声明每个led的i/o口,
sbit led0 P1^0;
sbit led1 P1^1;
sbit led2 P1^2;
……依此类推到led7;然后分别对各个led送0或者1:
while(1)
{
led0=0;//每次只修改一个灯,对灯送0,看状态;然后修改程序送1,再看状态,灯是否能正常亮灭;
}

一周热门 更多>