用Proteus 做51单片机仿真,不同组IO口做段选,如果把dx7=P1^6的话,仿真出来完全没问题,数码管正常扫描显示,如果把dx7=P2^6的话,仿真出来的数码管显示就缺少DX7这一段,我用仿真中的示波器观察波形是一样的,请朋友帮忙看看问题出在哪?程序如下:
sbit dx1=P1^0;
sbit dx2=P1^1;
sbit dx3=P1^2;
sbit dx4=P1^3;
sbit dx5=P1^4;
sbit dx6=P1^5;
sbit dx7=P2^6;
void setseg(a)
{
dx1=a&0x01;a>>=1;
dx2=a&0x01;a>>=1;
dx3=a&0x01;a>>=1;
dx4=a&0x01;a>>=1;
dx5=a&0x01;a>>=1;
dx6=a&0x01;a>>=1;
dx7=a&0x01;
}
定时器中断中:
switch (i)
case 0: setseg(ledbuff[0]);wx1=0;wx2=1;wx3=1,wx4=1;wx5=1;i++;break;
case 1: setseg(ledbuff[1]);wx1=1;wx2=0;wx3=1,wx4=1;wx5=1;i++;break;
case 2: setseg(ledbuff[2)]wx1=1;wx2=1;wx3=0,wx4=1;wx5=1;i++;break;
case 3: setseg(ledbuff[3]);wx1=1;wx2=1;wx3=1,wx4=0;wx5=1;i++;break;
case 4: setseg(ledbuff[4]);wx1=1;wx2=1;wx3=1,wx4=1;wx5=0;i=0;break;
default:break ;
|