Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

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