โปรแกรม 4 แยกไฟแดง แบบไม่มีตัวเลขนับ


(Permpol Thanapunnamas) #1

โปรแกรมนี้ออกแบบเป็นไฟ LED 3 สี แดง เหลือง และเขียว สำหรับ 4 แยก ทั่วไป การทำงานก็จะทำงานสลับกันไป เหมือนระบบสี่แยกนั้นละครับ ถ้าท่านใดกำลังมองหาก็ลองเอาไปประยุกต์ดัดแปลงกันได้เลย

#include <htc.h>
__CONFIG(FOSC_INTOSC & 
WDTE_OFF & 
PWRTE_ON & 
MCLRE_ON & 
CP_OFF & 
CPD_OFF & 
BOREN_OFF & 
CLKOUTEN_OFF & 
IESO_ON & 
FCMEN_ON &

WRT_OFF & 
//VCAPEN_OFF & 
PLLEN_ON & 
STVREN_ON & 
BORV_HI & 
LVP_OFF);
#define _XTAL_FREQ 32000000


#define LED1_RED0 LATCbits.LATC0
#define LED2_YEL0 LATCbits.LATC1
#define LED3_GRE0 LATCbits.LATC2
#define LED4_RED1 LATCbits.LATC3
#define LED5_YEL1 LATCbits.LATC4
#define LED6_GRE1 LATCbits.LATC5
#define LED7_RED2 LATDbits.LATD0
#define LED8_YEL2 LATDbits.LATD1
#define LED9_GRE2 LATDbits.LATD2
#define LED10_RED3 LATDbits.LATD3
#define LED11_YEL3 LATDbits.LATD4
#define LED12_GRE3 LATDbits.LATD5
#define ON 1;
#define OFF 0;
unsigned int i,j;

//////////// SET LED On,Off 1 
#define LED1_RED0_On() LED1_RED0 = 1;
#define LED1_RED0_Off() LED1_RED0 = 0;
#define LED2_YEL0_On() LED2_YEL0 = 1;
#define LED2_YEL0_Off() LED2_YEL0 = 0;
#define LED3_GRE0_On() LED3_GRE0 = 1;
#define LED3_GRE0_Off() LED3_GRE0 = 0;

////////////// SET LED On,Off 2 ///////////////
#define LED4_RED1_On() LED4_RED1 = 1;
#define LED4_RED1_Off() LED4_RED1 = 0;
#define LED5_YEL1_On() LED5_YEL1 = 1;
#define LED5_YEL1_Off() LED5_YEL1 = 0;
#define LED6_GRE1_On() LED6_GRE1 = 1;
#define LED6_GRE1_Off() LED6_GRE1 = 0;

////////////// SET LED On,Off 3 
#define LED7_RED2_On() LED7_RED2 = 1;
#define LED7_RED2_Off() LED7_RED2 = 0;
#define LED8_YEL2_On() LED8_YEL2 = 1;
#define LED8_YEL2_Off() LED8_YEL2 = 0;
#define LED9_GRE2_On() LED9_GRE2 = 1;
#define LED9_GRE2_Off() LED9_GRE2 = 0;

////////////// SET LED On,Off 4 
#define LED10_RED3_On() LED10_RED3 = 1;
#define LED10_RED3_Off() LED10_RED3 = 0;
#define LED11_YEL3_On() LED11_YEL3 = 1;
#define LED11_YEL3_Off() LED11_YEL3 = 0;
#define LED12_GRE3_On() LED12_GRE3 = 1;
#define LED12_GRE3_Off() LED12_GRE3 = 0;


void main (void)
{
OSCCONbits.SPLLEN = 1;
OSCCONbits.IRCF = 14;
OSCCONbits.SCS = 0;
TRISD=0x00;
TRISC=0x00;
while(1)
{
////////////// SET 1 
LED1_RED0_Off();
LED2_YEL0_Off();
LED3_GRE0_On();

LED4_RED1_On();
LED5_YEL1_Off();
LED6_GRE1_Off();

LED7_RED2_Off();
LED8_YEL2_Off();
LED9_GRE2_On();

LED10_RED3_On();
LED11_YEL3_Off();
LED12_GRE3_Off();
__delay_ms(800);

/////////////// SET 2 
LED1_RED0_Off();
LED3_GRE0_Off();
LED2_YEL0_On();

LED4_RED1_Off();
LED5_YEL1_Off();
LED6_GRE1_Off();

LED7_RED2_Off();
LED9_GRE2_Off();
LED8_YEL2_On();

LED10_RED3_Off();
LED11_YEL3_Off();
LED12_GRE3_Off();
__delay_ms(350);

///////////////// SET 3 
LED2_YEL0_Off();
LED1_RED0_On();
LED3_GRE0_Off();

LED4_RED1_Off();
LED5_YEL1_Off();
LED6_GRE1_On();

LED8_YEL2_Off();
LED7_RED2_On();
LED9_GRE2_Off();

LED12_GRE3_On();
LED10_RED3_Off();
LED11_YEL3_Off();
__delay_ms(800);

////////////// SET 4 
LED1_RED0_Off();
LED2_YEL0_Off();
LED3_GRE0_Off();

LED6_GRE1_Off();
LED5_YEL1_On();
LED4_RED1_Off();

LED7_RED2_Off();
LED8_YEL2_Off();
LED9_GRE2_Off();

LED12_GRE3_Off();
LED11_YEL3_On();
LED10_RED3_Off();
__delay_ms(350);




}
   }