用的STC91C514AD單片機,使用了28個IO口,用于低電平檢測。程序中定義sbit d1=P0^0; 直至d28=P3^3;共計28個IO。前端使用的繼電器導通控制低電平(GND)輸入,當低電平輸入至IO口后,不知道怎么來檢測判斷了。例10個IO口有低電平,在程序中怎么來同時或多條件方式來檢測呢,求大神指教檢測方法。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
//LED燈序列
sbit d1=P0^0; sbit d2=P0^1; sbit d3=P0^2; sbit d4=P0^3; sbit d5=P0^4; sbit d6=P0^5; sbit d7=P0^6; sbit d8=P0^7;
sbit d9=P1^0; sbit d10=P1^1; sbit d11=P1^2; sbit d12=P1^3; sbit d13=P1^4; sbit d14=P1^5; sbit d15=P1^6; sbit d16=P1^7;
sbit d17=P2^0; sbit d18=P2^1; sbit d19=P2^2; sbit d20=P2^3; sbit d21=P2^4; sbit d22=P2^5; sbit d23=P2^6; sbit d24=P2^7;
sbit d25=P3^0; sbit d26=P3^1; sbit d27=P3^2; sbit d28=P3^3;
//按鍵輸出控制
sbit key = P3^4;
//等待
uchar flag=0;
//合格燈
sbit led1=P3^5;
//NG燈
sbit led2=P3^6;
uchar count;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void keyscan()
{
uchar i;
switch(count)
{
case 1: key=0; delayms(100); key=1; break;//
case 2:
for(i=0;i<2;i++)
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 3: //
for(i=0;i<3;i++)
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 4: //
for(i=0;i<4;i++)
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 5: //
for(i=0;i<5;i++)
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 6:
for(i=0;i<6;i++) //制冷
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 7:
for(i=0;i<7;i++) //制冷
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 8:
for(i=0;i<8;i++) //制冷
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 9:
for(i=0;i<9;i++) //制冷
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 10:
for(i=0;i<10;i++) //制熱
{
key=0; delayms(100); key=1;delayms(100);
}
break;
case 11:
for(i=0;i<11;i++) //制熱
{
key=0; delayms(100); key=1;delayms(100);
}
break;
}
flag=1;
}
void main()
{
while(1)
{
這里不知道怎么寫多條件來判斷了IO口狀態了
}
}
|