Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => KEIL => Konuyu başlatan: ahmet2004 - 14 Temmuz 2009, 02:55:33

Başlık: Trafik Lambası 2009
Gönderen: ahmet2004 - 14 Temmuz 2009, 02:55:33
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

(http://img158.imageshack.us/img158/8387/trafikci.gif)


/******************************************************************************/
/*     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();
}
}