You are on page 1of 4

#include <main.

h>
#FUSES HS, NOWDT, NOLVP, NOPROTECT, HPOL_LOW, NODEBUG, NOWRT
#USE DELAY(CLOCK = 20000000)
#BYTE PORTA = 0XF80
#BYTE PORTB = 0XF81
#BYTE PORTC = 0XF82
#BYTE PORTD = 0XF83
#BYTE PORTE = 0XF84
///////////////////////////
#USE FAST_IO(A)
#USE FAST_IO(B)
#USE FAST_IO(C)
#USE FAST_IO(D)
#USE FAST_IO(E)
//////////////////////////
#BIT TIEN = PORTA.0
#BIT LUI = PORTA.1
#BIT TRAI = PORTA.2
#BIT PHAI = PORTA.3
#BIT NHANH = PORTA.4
///////////////////////////
#BIT NANG = PORTA.5
#BIT HA = PORTE.0
///////////////////////////
#BIT DC_TRAI = PORTB.2 //PWM2
#BIT DC_PHAI = PORTD.6 //PWM6
#BIT DC_NANG = PORTB.5 //PWM4
////////////////////////////////////////////////////////////////////////////////
VOID CHAY_TIEN()
{
DC_TRAI = 0;
DC_PHAI = 0;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(700);
SET_POWER_PWM6_DUTY(710);
}
VOID CHAY_LUI()
{
DC_TRAI = 1;
DC_PHAI = 1;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(700);
SET_POWER_PWM6_DUTY(710);
}
VOID QUAY_TRAI()
{
DC_TRAI = 1;
DC_PHAI = 0;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(750);
SET_POWER_PWM6_DUTY(650);
}
VOID QUAY_PHAI()
{
DC_TRAI = 0;
DC_PHAI = 1;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(650);
SET_POWER_PWM6_DUTY(750);
}

VOID TIEN_NHANH()
{
DC_TRAI = 0;
DC_PHAI = 0;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(890);
SET_POWER_PWM6_DUTY(900);
}
VOID LUI_NHANH()
{
DC_TRAI = 1;
DC_PHAI = 1;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(890);
SET_POWER_PWM6_DUTY(900);
}
VOID TRAI_NHANH()
{
DC_TRAI = 1;
DC_PHAI = 0;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(800);
SET_POWER_PWM6_DUTY(650);
}
VOID PHAI_NHANH()
{
DC_TRAI = 0;
DC_PHAI = 1;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(650);
SET_POWER_PWM6_DUTY(800);
}
VOID DUNG()
{
DC_TRAI = 0;
DC_PHAI = 0;
DELAY_MS(20);
SET_POWER_PWM2_DUTY(0);
SET_POWER_PWM6_DUTY(0);
}
////////////////////////////////////////////////////////////////////////////////
VOID NANGCHAM()
{
DC_NANG = 0;
DELAY_MS(20);
SET_POWER_PWM4_DUTY(800);
}
VOID HACHAM()
{
DC_NANG = 1;
DELAY_MS(20);
SET_POWER_PWM4_DUTY(800);
}
////////////////////////////////////////////////////////////////////////////////
VOID CHAY_THU()
{
IF(TIEN==1&&LUI==1&&TRAI==1&&PHAI==1)
{
DUNG();

}
//CHAY TIEN & RE TRAI & RE PHAI
IF(TIEN==0)
{
WHILE(TIEN==0)
{
IF(NHANH==0)
{WHILE(NHANH==0){
TIEN_NHANH();
}}
ELSE IF(TRAI==0)
{WHILE(TRAI==0){
QUAY_TRAI();
}}
ELSE IF(PHAI==0)
{WHILE(PHAI==0){
QUAY_PHAI();
}}
ELSE
{CHAY_TIEN();}
}
}
IF(LUI==0)
{
WHILE(LUI==0)
{
IF(NHANH==0)
{WHILE(NHANH==0){
LUI_NHANH();
}}
ELSE IF(TRAI==0)
{WHILE(TRAI==0){
QUAY_TRAI();
}}
ELSE IF(PHAI==0)
{WHILE(PHAI==0){
QUAY_PHAI();
}}
ELSE
{CHAY_LUI();}
}
}
IF(TRAI==0)
{
WHILE(TRAI==0)
{
IF(NHANH==0)
{WHILE(NHANH==0){
TRAI_NHANH();
}}
ELSE
{QUAY_TRAI();}
}
}
IF(PHAI==0)
{
WHILE(PHAI==0)
{
IF(NHANH==0)
{WHILE(NHANH==0){

PHAI_NHANH();
}}
ELSE
{QUAY_PHAI();}
}
}
IF(NANG==0)
{WHILE(NANG==0){
NANGCHAM();
}}
IF(HA==0)
{WHILE(HA==0){
HACHAM();
}}
}
////////////////////////////////////////////////////////////////////////////////
VOID MAIN()
{
SETUP_POWER_PWM_PINS(PWM_ODD_ON,PWM_ODD_ON,PWM_ODD_ON,PWM_ODD_ON);
SETUP_POWER_PWM(PWM_CLOCK_DIV_64|PWM_FREE_RUN,1,0,250,0,1,0);
SET_TRIS_A (0XFF);
SET_TRIS_B (0X00);
SET_TRIS_C (0X0F);
SET_TRIS_D (0X0F);
SET_TRIS_E (0B111);
SETUP_TIMER_2(T2_DIV_BY_1,255,1);
DC_TRAI = 0;
DC_PHAI = 0;
DC_NANG = 0;
SET_POWER_PWM4_DUTY(0);
SET_POWER_PWM2_DUTY(0);
SET_POWER_PWM6_DUTY(0);
WHILE(TRUE)
{
CHAY_THU();
}
}

You might also like