P3口操作问题,
采用下边的程序,输出不对。code unsigned char ADDRS={
0x70,
0x60,
0x50,
0x40,
0x30,
0x20,
0x10,
0x00
};
i=P3&0x8f;
P3=(i|ADDRS); sbit AD_ADR0 = P3^4;
sbit AD_ADR1 = P3^5;
sbit AD_ADR2 = P3^6;
AD_cont++;
if(AD_cont>7){AD_cont=0;}
switch(AD_cont){
case 0:{
AD_ADR0=1;
AD_ADR1=1;
AD_ADR2=1;
}break;
case 1:{
AD_ADR0=0;
AD_ADR1=1;
AD_ADR2=1;
}break;
case 2:{
AD_ADR0=1;
AD_ADR1=0;
AD_ADR2=1;
}break;
case 3:{
AD_ADR0=0;
AD_ADR1=0;
AD_ADR2=1;
}break;
case 4:{
AD_ADR0=1;
AD_ADR1=1;
AD_ADR2=0;
}break;
case 5:{
AD_ADR0=0;
AD_ADR1=1;
AD_ADR2=0;
}break;
case 6:{
AD_ADR0=1;
AD_ADR1=0;
AD_ADR2=0;
}break;
case 7:{
AD_ADR0=0;
AD_ADR1=0;
AD_ADR2=0;
}break;
}
这个程序,输出是正常的。因为是在中断中,要求时间一致。需要用前边的方法。硬件没有问题。请技术支持一下。 能先说说你的需求吗?你想实现什么功能? 4、5、6是驱动4051的三个地址线。循环AD_cont计数 在中断中实现运行
页:
[1]