Estoy construyendo un proyecto para un baño de ciclismo en el que el motor sube y baja. el interruptor micrlimit detecta y amp; posición hacia abajo. una vez que se activa el interruptor, el motor se apaga y el temporizador arranca. después de 5 minutos, el motor arranca en sentido inverso y se mueve hasta que se dispara, el interruptor continúa indefinidamente. Yo había escrito un programa como el siguiente
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdbool.h>
int main(void){
DDRD=0x00;// for input port-UP & DOWN Micro Switch
DDRC=0xff;// for output port- UP & DOWN Motor
while(1){
if(PIND==0xff)// checking the status of PIN PD5 & PD6, if both is '1', turns ON the down Motor
_delay_ms(100); // for debouncing of switch
PORTC=0x40;// turns ON down motor
if(PIND==0xbf)// checking the status of PIN PD6 (Dn sw), if it is '0', turns off the down Motor
{
_delay_ms(100); // for debouncing of switch
PORTC=0x00; // Turning off the down Motor
int32_t second;
for (second=0; second <5LL*60;++second)
{
if (second > 5)
{
PORTC=0X80; // turn ON UP motor
} else
{ PORTC = 0x00;}
}
{
if(PIND==0xdf);// checking the status of PIN PD5 (UP SW), if it is '0' turns off the UP motor,
_delay_ms(100); // For debouncing of switch
PORTC=0x00;// Turning off the UP Motor
int32_t second;
for (second=0; second <5LL*60;++second)
{
if (second > 5)
{
PORTC=0X40; // turn ON DOWN motor
} else
{ PORTC = 0x00;}
}
}
{
if(PIND==0x9f);// checking the status of PIN PD5 & 6 if both 0 then stop motor
_delay_ms(100); // for debounicng of switch
PORTC=0x00; // trun off up/down motor
}
}
}
}
los pls aconsejan que esto funcionará