這是我寫的程序~ 我用它來控制一個繼電器~但是繼電器老是接通狀態~~只是我將P3_2接通是跳一下~求助怎么處理
#include "at89x51.h"
unsigned char deng;
sbit SJ=P1^4;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay2s (void)
{unsigned char i;
for (i=10;i>0;i--)
delay10ms();}
void delay20s (void)
{ unsigned int i;
for (i=100;i<0;i--);
delay2s();}
void main(void)
{
P2_7=1;
P0=0xff;
P2_7=0; //關數碼管
do{
if(P3_2==0)
{delay10ms();
if(P3_2==0)
deng=1;}
if(P3_4==0)
{delay10ms();
if (P3_4==0)
deng=2;}
if (P3_6==0)
{delay10ms();
if (P3_6==0)
deng=3;}
if(deng==1)
{
SJ=0;
P0=0xfe;
P2_1=0;
delay20s();
P0=~P0;
delay2s();
}
if(deng==2){
SJ=0;
P0=0x00;
P2_1=1;
delay2s();
P0=0x18;
delay2s();
P0=0x3c;
delay2s();
P0=0x7e;
delay2s();
P0=0xff;
delay2s();
P0=0x7e;
delay2s();
P0=0x3c;
delay2s();
P0=0x18;
delay2s();
P0=0xff;
delay2s();
P0=0xff;
delay2s();
P0=0x7f;
delay2s();
P0=0x3f;
delay2s();
P0=0x1f;
delay2s();
P0=0x0f;
delay2s();
P0=0x07;
delay2s();
P0=0x03;
delay2s();
P0=0x01;
delay2s();
P0=0x00;
delay20s();
P0=0xff;
}
if (deng==3)
{P0=0x00;}
}
while(1);
}
|