/*Project: TramseinDatum: 10-mei-2010Programmeur: Sander Brugmans GPIO0 = TAMS_JP3.1 = rode LEDGPIO1 = TAMS_JP3.2 = gele LEDGPIO2 = TAMS_JP3.3 = groene LEDGPIO3 = TAMS_JP2 = inputGPIO4 = TAMS_JP3.4 = rode LED overwegGPIO5 = TAMS_JP3.5 = rode LED overweg*/#include <pic.h>__CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO); // Basis instellingenchar puls, pulsrt = 0;char sec2 = 0;char sec1 = 0;char overweg = 0;char r, o, g, ow0, ow1 = 0; char tmr1count = 0;char tmr0count = 0;//-----------------------------------------------------------------------------------------------------// Delayvoid delay(long i){ while(i--);}//-----------------------------------------------------------------------------------------------------// Interruptsvoid interrupt vector(void){ if (T0IF == 1){ T0IF = 0; tmr0count++; if (tmr0count == 15){ tmr0count = 0; sec1 = !sec1; } TMR0 = 0x00; } if (TMR1IF == 1){ TMR1IF = 0; tmr1count++; if (tmr1count == 4){ sec2 = 1; GIE = 0; PEIE = 0; PIE1 = 0; T1CON = 0b00110100; tmr1count = 0; } else TMR1H = 0x0B; // timer 1 (0,5sec) laden) TMR1L = 0xDB; GIE = 1; PEIE = 1; PIE1 = 1; T1CON = 0b00110101; }}//-----------------------------------------------------------------------------------------------------// Mainvoid main(void){ GPIO = 0x00; // Poort A = laag TRISIO = 0x08; // A0, 1, 2, 4 & 5 zijn output, A3 is input ANSEL = 0x00; // Geen analoog in r = 1; // Rode LED is aan TMR0 = 0x00; OPTION = 0b11000111; T0IE = 1; while (1){ GPIO0 = r; GPIO1 = o; GPIO2 = g; GPIO4 = ow0; GPIO5 = ow1; puls = 0; if (GPIO3 == 1){ // Beetje debounce delay(2000); if (GPIO3 == 1) puls = 1; } pulsrt = GPIO3; if (puls && r){ r = 0; // Rode LED is uit g = 1; // Groene LED is aan sec2 = 0; // 2 seconde flag naar 0 overweg =1; TMR1H = 0x0B; // timer 1 (0,5sec) laden) TMR1L = 0xDB; GIE = 1; PEIE = 1; PIE1 = 1; T1CON = 0b00110101; } if (sec2 && g && !pulsrt){ g = 0; // Groene LED is uit o = 1; // Oranje LED is aan sec2 = 0; // 2 seconde flag naar 0 TMR1H = 0x0B; // timer 1 (0,5sec) laden) TMR1L = 0xDB; GIE = 1; PEIE = 1; PIE1 = 1; T1CON = 0b00110101; } if (sec2 && o){ o = 0; // Oranje LED is uit r = 1; // Rode LED is aan sec2 = 0; // 2 seconde flag naar 0 overweg = 0; } if (overweg && sec1){ ow0 = 1; ow1 = 0; } if (overweg && !sec1){ ow0 = 0; ow1 = 1; } if (!overweg){ ow0 = 0; ow1 = 0; } if (pulsrt) tmr1count = 0; }}
...alleen zou je de oranjefase met 1 seconden willen verlengen?
De oranjefase, dat is toch Koninginnedag? Bij verkeerslichten heet die kleur geel, net als bij spoorseinen.De meest gebruikelijke lengte voor de geelfase bij verkeerslichten is 2 seconden.