chào các anh chị, hiện đang em viết chuơng trình C điều khiển 1 rơle để bật tắt, mong muốn của em là khi có tín hiệu tác động thì rơ le đóng, và khi không còn tín hiệu tác động thì sau khoảng 10s thì rơ le mới tắt,( tính từ thời điểm tín hiệu tác động ko còn). tuy nhiên em viết chương trình và mô phỏng thì để rơ le đóng, em lại phải giữ tín hiệu đó trong khoảng 10s thì rơ le mới chịu đóng, mong các anh chị giải thích giúp em, xem xin cảm ơn.
chuơng trình như sau:
#include <REGX52.H>
#define vao P1_2
#define led P2
#define relay P3
void khoitao(void);
void delay(unsigned char time);
void delay1(unsigned int ms);
void delay2(int time);
void main(void)
{
khoitao();
while(1)
{
if(vao==0)
{
led=0x00;
relay=0x00;
}
else
{
delay1(10000);
led=0xff;
relay=0xff;
}
}
}
void khoitao(void)
{
vao=1;
led=0xff;
relay=0xff;
}
void delay(unsigned char time)
{
while(time--)
{
TMOD=0x01;
TH0=0xfc;
TL0=0x66;
TR0=1;
while(!TF0);
TR0=0;
TF0=0;
};
}
void delay1(unsigned int ms) //tao tre 1ms
{
unsigned int i,j;
for (i=0;i<ms;i++)
for (j=0;j<120;j++)
{}
}
void delay2(int time)
{
while(time--)
{
unsigned char j = 122;
while(j--);
};
}
chuơng trình như sau:
#include <REGX52.H>
#define vao P1_2
#define led P2
#define relay P3
void khoitao(void);
void delay(unsigned char time);
void delay1(unsigned int ms);
void delay2(int time);
void main(void)
{
khoitao();
while(1)
{
if(vao==0)
{
led=0x00;
relay=0x00;
}
else
{
delay1(10000);
led=0xff;
relay=0xff;
}
}
}
void khoitao(void)
{
vao=1;
led=0xff;
relay=0xff;
}
void delay(unsigned char time)
{
while(time--)
{
TMOD=0x01;
TH0=0xfc;
TL0=0x66;
TR0=1;
while(!TF0);
TR0=0;
TF0=0;
};
}
void delay1(unsigned int ms) //tao tre 1ms
{
unsigned int i,j;
for (i=0;i<ms;i++)
for (j=0;j<120;j++)
{}
}
void delay2(int time)
{
while(time--)
{
unsigned char j = 122;
while(j--);
};
}
Comment