Вы находитесь на странице: 1из 8

ELEVATOR CONTROLLER USING EMBEDDED

MICROCONTROLLER

#include<dspic.h>
//RC14 ground floor, RC13 first floor, RC11 second floor, RC10 third floor
char current_pos,get_pos;
void four_thir(void);
void thir_sec(void);
void sec_fir(void);
void sec_top(void);
void fir_sec(void);
void gr_fir(void);
void first_floor(void);
void delay_ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<=count;i++)
for(j=0;j<=100;j++);
}

void four_thir()
{
delay_ms(10000);

LATB=0X0100;
delay_ms(10000);
LATB=0X0080;
delay_ms(10000);
}
void thir_sec()
{
delay_ms(10000);
LATB=0X0020;
delay_ms(10000);
LATB=0X0010;
delay_ms(10000);
}
void sec_fir()
{
delay_ms(10000);
LATB=0X0004;
delay_ms(10000);
LATB=0X0002;
delay_ms(10000);
}
void sec_top()
{

delay_ms(10000);
LATB=0X0080;
delay_ms(10000);
LATB=0X0100;
delay_ms(10000);
}
void fir_sec()
{
delay_ms(10000);
LATB=0X0010;
delay_ms(10000);
LATB=0X0020;
delay_ms(10000);
}
void gr_fir()
{
delay_ms(10000);
LATB=0X0002;
delay_ms(10000);
LATB=0X0004;
delay_ms(10000);
}
void first_floor()

{
if(current_pos==1)
{
gr_fir();
}
if (current_pos==3)
{
thir_sec();
}
if(current_pos==4)
{
four_thir();
LATB=0X0040;
thir_sec();
}
}
int main(int)
{
ADPCFG=0XFFFF;
TRISB=0X0000;
TRISC=0X0000;
LATC=0xF000;
LATB=0X0C01;

current_pos=1;
while(1)
{
if(!(PORTC & 0X4000))
{
while(!(PORTC & 0X4000));
if(!(current_pos==1))
{
if(!(current_pos==2))
{
sec_fir();
}
if(current_pos==3)
{
thir_sec();
LATB=0X0008;
sec_fir();
}
if(current_pos==4)
{
four_thir();
LATB=0X0040;
thir_sec();

LATB=0X0008;
sec_fir();
}
LATB=0X0C01;
LATC=0Xe000;
current_pos=1;
}
}
if(!(PORTC & 0X2000))
{
while(!(PORTC & 0X2000));
first_floor();
LATC=0Xe000;
LATB=0X0c08;
current_pos=2;
}
if(!(PORTB & 0X0800))
{
while(!(PORTB & 0X0800));
if(current_pos==1)
{
gr_fir();
LATB=0X0008;

fir_sec();
}
if(current_pos==2)
{
fir_sec();
}
if(current_pos==4)
{
four_thir();
}
LATC=0Xe000;
LATB=0X0C40;
current_pos=3;
}
if(!(PORTB & 0X0400))
{
while(!(PORTB & 0X0400));
if(current_pos==1)
{

gr_fir();

LATB=0X0008;
fir_sec();
LATB=0X0040;
sec_top();
}
if(current_pos==2)
{
fir_sec();
LATB=0X0040;
sec_top();
}
if(current_pos==3)
{
sec_top();
}
LATB=0X0e00;
LATC=0Xe000;
current_pos=4;
}
}
}

Вам также может понравиться