Trafik Lambası 2009

Başlatan ahmet2004, 14 Temmuz 2009, 02:55:33

ahmet2004

Biraz hareket lazım...

Trafik ışıkları at89s52 kullanarak yapılmış örnek uygulama...

Bütün dosyaları PAYLAŞIM sitemizde.
http://www.4shared.com/file/117899215/3c2d3475/prj_trafik_ahmet2004.html



/******************************************************************************/
/*     Trafik Lambasi 2009   ahmet2004
/******************************************************************************/
#include "AT89X52.H"
#include "main.h"
sbit KIRMIZI_LED = P2^0;
sbit SARI_LED = P2^3;
sbit YESIL_LED = P2^6;
int16u sayac;
STATE durumu;
void main_Init(void)
{
durumu = KIRMIZI;
sayac = 0;
KIRMIZI_LED = OFF;
SARI_LED = OFF;
YESIL_LED = OFF;
}
void zaman_Timer2_Init(void)
{
T2MOD = 0x00;
T2CON = 0x00;
TH2 = (65536 - SYS_TIK * 1000) / 256;
TL2 = (65536 - SYS_TIK * 1000) % 256;
RCAP2H = (65536 - SYS_TIK * 1000) / 256;
RCAP2L = (65536 - SYS_TIK * 1000) % 256;
ET2 = 1;
EA = 1;
TR2 = 1;
}
void zaman() interrupt TIMER2_OVERFLOW
{
TF2 = 0;
main_Update();
}
void main_Update(void)
{
switch(durumu)
{
case KIRMIZI:
KIRMIZI_LED = ON;
SARI_LED = OFF;
YESIL_LED = OFF;
if(KIRMIZI_DURAKLAMA_SURESI == (++sayac / ZAMAN_ORANI))
{
durumu = KIRMIZI_SARI;
sayac = 0;
}
break;
case KIRMIZI_SARI:
KIRMIZI_LED = ON;
SARI_LED = ON;
YESIL_LED = OFF;
if(KIRMIZI_SARI_DURAKLAMA_SURESI == (++sayac / ZAMAN_ORANI))
{
durumu = YESIL;
sayac = 0;
}
break;
case YESIL:
YESIL_LED = ON;
KIRMIZI_LED = OFF;
SARI_LED = OFF;
if(YESIL_DURAKLAMA_SURESI == (++sayac / ZAMAN_ORANI))
{
durumu = SARI;
sayac = 0;
}
break;
case SARI:
SARI_LED = ON;
KIRMIZI_LED = OFF;
YESIL_LED = OFF;
if(SARI_DURAKLAMA_SURESI == (++sayac / ZAMAN_ORANI))
{
durumu = KIRMIZI;
sayac = 0;
}
break;
default:
break;
}
}
void main(void)
{
main_Init();
zaman_Timer2_Init();
while(1)
{
CPU_IDLE();
}
}