用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 ;
|