atmega128 ile lcd programımdaki bir sıkıntım

Başlatan yahya255, 23 Temmuz 2013, 10:39:40

yahya255

Merhaba;

Arkadaşlar 16x2 lcd miz var bu lcdnin menüleri var ve bu menülerde mikroişlemci girişlerine göre değişen değişkenler var atıyorum ARIZA - NORMAL bunları çalıştırıyorum ancak bir menüde girişlerin sürelerini tutmam gerekti yani bir sayaç hazırlıyorum ve program orda döngüde kalıyor. Benim istediğim o döndüdeyken ben diğer işlemleri yapıyım bunu nasıl halledebiliriz.

MOD NOTU:
Mesaj başlığınız forum kurallarına uygun değildir.
Lütfen düzeltiniz...

camby

kesme bu gibi işleri halleder.

Ama istediğiniz açıklayıcı değil ve kod da yok.

Kabil ATICI

İşlerin ana döngüde çokça kalıyorsa, orada sayıcı koyabilirsin ve her geçtiğinde sayıcıyı 1 artırı ve istediğin değeri geldiğinde istediğin işlemi yaptırırsın.

Diğer yöntem @Cambb belirttiği gibi timer kesmelerini kullanmaktır. Elbette bu timer'ları nasıl başlatılıp durdurulduğunu biliyorsunuz.

Programın, şeman kıymetli, hiç değilse işlemcinin adını belirtseydiniz.
ambar7

yahya255

Özür diliyorum önemli hiç birşey yok zaten açık kaynak herşey  :)  kod biraz uzun ama yinede paylaşıyım burda program bilgim çağresiz kaldı zaten yeni sayılırım bu işlerdede.
Yapamadığımı söyliyim size
1. si ekran fonksiyonlarında program takılı kalıyor yani atıyorum bir ekran fonksiyonuna girdiğinde bir girişten herhangi bir sinyal geldiğinde o değişikliği algılayamıyor.
2. si ise dediğim gibi giriş sürelerini tutmak ve lcd de göstemek istiyorum saat dakika formatında ancak bir sayaç hazırlayınca sadece o sayaçda dönüp duruyor program :) ben ayrı ayrı 22 girişinde aktif çalışma sürelerini tutmak istiyorum.  İşlemci atmega128 dir.

İlgilendiğiniz için bu arada teşekkür ediyorum.

#include <avr/io.h> // Avr itlemci giris/cikis (port)kutuphanesi
#include <util/delay.h> // Gecikme kutuphanesi
#include <stdio.h>
#include <stdbool.h>
#include "lcd.h" // lcd kutuphanesi

volatile unsigned int qq; // jetfan1 çalışma süresi
volatile unsigned int ww; // jetfan2 çalışma süresi
volatile unsigned int ee; // jetfan3 çalışma süresi
volatile unsigned int rr; // jetfan4 çalışma süresi
volatile unsigned int tt; // jetfan5 çalışma süresi
volatile unsigned int yy; // jetfan6 çalışma süresi
volatile unsigned int uu; // jetfan7 çalışma süresi
volatile unsigned int oo; // jetfan8 çalışma süresi
volatile unsigned int pp; // jetfan9 çalışma süresi
volatile unsigned int zz; // jetfan10 çalışma süresi
volatile unsigned int dad; // jetfan11 çalışma süresi
volatile unsigned int zdz; // jetfan12 çalışma süresi
volatile unsigned int psp; // jetfan13 çalışma süresi
volatile unsigned int zsz; // jetfan14 çalışma süresi
volatile unsigned int pjp; // jetfan15 çalışma süresi
volatile unsigned int zjp; // jetfan16 çalışma süresi
volatile unsigned int ooo; // jetfan11 çalışma süresi
volatile unsigned int ggg; // jetfan12 çalışma süresi
volatile unsigned int nnn; // jetfan13 çalışma süresi
volatile unsigned int mmm; // jetfan14 çalışma süresi
volatile unsigned int xxx; // jetfan15 çalışma süresi
volatile unsigned int qer; // jetfan16 çalışma süresi

FILE lcd_str = FDEV_SETUP_STREAM(lcd_data, NULL,_FDEV_SETUP_WRITE);

#define sure 300

void Bekle(uint16_t ms)
{
for(uint16_t x=0;x<ms;x++)
{
_delay_ms(1);
}
}
void mcu_init(void) //Giris/Cikis ayarlari
{
DDRA=0X00; // A port giriş
DDRB=0X00; // B port giriş
DDRC=0X00; // C port giriş
DDRD=0X00; // D port giriş
DDRE=0X00; // E port giriş
DDRF=0X00; // F port giriş
DDRG=0X00; // G port giriş
PORTB&=_BV(0);
PORTB&=_BV(1);
PORTB&=_BV(2);

}

void DurumMenu(void)//durum fonk.
{

	unsigned char menucikisi=1;
	unsigned char MenuDegeri=1;

DurumEkranbir();
Bekle(300);
lcd_setcursor(1,1);
lcd_string(">");
while(menucikisi)
{
if(bit_is_clear(PINB,1)) // Artir
{
while(bit_is_clear(PINB,1)); // Buton arkini onlemek icin.
Bekle(250);

MenuDegeri++;

if(MenuDegeri==23)MenuDegeri=1;

if(MenuDegeri==1){ DurumEkranbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeri==2){ DurumEkranbir();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeri==3){ DurumEkraniki();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeri==4){ DurumEkraniki();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeri==5){ DurumEkranuc();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeri==6){ DurumEkranuc();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeri==7){ DurumEkrandort();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeri==8){ DurumEkrandort();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeri==9){ DurumEkranbes();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeri==10){ DurumEkranbes();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==11){ DurumEkranalti();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==12){ DurumEkranalti();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==13){ DurumEkranyedi();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==14){ DurumEkranyedi();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==15){ DurumEkransekiz();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==16){ DurumEkransekiz();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==17){ DurumEkrandokuz();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==18){ DurumEkrandokuz();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==19){ DurumEkranon();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==20){ DurumEkranon();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==21){ DurumEkranonbir();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==22){ DurumEkranonbir();
lcd_setcursor(0,2);lcd_string(">" );}

}
if(bit_is_clear(PINB,0)) // Azalt
{
while(bit_is_clear(PINB,0)); // Buton arkini onlemek icin.
Bekle(250);
MenuDegeri--;

if(MenuDegeri==0)MenuDegeri=22;
if(MenuDegeri==1){ DurumEkranbir();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==2){ DurumEkranbir();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==3){ DurumEkraniki();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==4){ DurumEkraniki();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==5){ DurumEkranuc();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==6){ DurumEkranuc();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==7){ DurumEkrandort();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==8){ DurumEkrandort();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==9){ DurumEkranbes();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==10){ DurumEkranbes();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==11){ DurumEkranalti();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==12){ DurumEkranalti();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==13){ DurumEkranyedi();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==14){ DurumEkranyedi();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==15){ DurumEkransekiz();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==16){ DurumEkransekiz();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==17){ DurumEkrandokuz();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==18){ DurumEkrandokuz();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==19){ DurumEkranon();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==20){ DurumEkranon();
lcd_setcursor(0,2);lcd_string(">" );}

if(MenuDegeri==21){ DurumEkranonbir();
lcd_setcursor(0,1);lcd_string(">" );}
if(MenuDegeri==22){ DurumEkranonbir();
lcd_setcursor(0,2);lcd_string(">" );}


} // while menuCikis sonu
if(bit_is_clear(PINB,2)) // çıkış
{
while(bit_is_clear(PINB,2)); // Buton arkini onlemek icin.
main();
}
} // menu sonu
}

void ArizaMenu(void)	//arıza fonk.
{
	unsigned char menucikisii=1;
	unsigned char MenuDegerii=1;

ArizaEkranbir();
Bekle(300);
lcd_setcursor(1,1);
lcd_string(">");
while(menucikisii)
{
if(bit_is_clear(PINB,1)) // Artir
{
while(bit_is_clear(PINB,1)); // Buton arkini onlemek icin.
Bekle(250);

MenuDegerii++;

if(MenuDegerii==23)MenuDegerii=1;

if(MenuDegerii==1){ ArizaEkranbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==2){ ArizaEkranbir();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==3){ ArizaEkraniki();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==4){ ArizaEkraniki();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==5){ ArizaEkranuc();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==6){ ArizaEkranuc();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==7){ ArizaEkrandort();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==8){ ArizaEkrandort();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==9){ ArizaEkranbes();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==10){ ArizaEkranbes();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==11){ ArizaEkranalti();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==12){ ArizaEkranalti();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==13){ ArizaEkranyedi();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==14){ ArizaEkranyedi();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==15){ ArizaEkransekiz();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==16){ ArizaEkransekiz();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==17){ ArizaEkrandokuz();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==18){ ArizaEkrandokuz();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==19){ ArizaEkranon();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==20){ ArizaEkranon();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==21){ ArizaEkranonbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==22){ ArizaEkranonbir();
lcd_setcursor(1,2);lcd_string(">" );}

}
if(bit_is_clear(PINB,0)) // Azalt
{
while(bit_is_clear(PINB,0)); // Buton arkini onlemek icin.
Bekle(250);
MenuDegerii--;

if(MenuDegerii==0)MenuDegerii=22;
if(MenuDegerii==1){ ArizaEkranbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==2){ ArizaEkranbir();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==3){ ArizaEkraniki();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==4){ ArizaEkraniki();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==5){ ArizaEkranuc();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==6){ ArizaEkranuc();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==7){ ArizaEkrandort();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==8){ ArizaEkrandort();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==9){ ArizaEkranbes();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==10){ ArizaEkranbes();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==11){ ArizaEkranalti();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==12){ ArizaEkranalti();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==13){ ArizaEkranyedi();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==14){ ArizaEkranyedi();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==15){ ArizaEkransekiz();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==16){ ArizaEkransekiz();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==17){ ArizaEkrandokuz();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==18){ ArizaEkrandokuz();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==19){ ArizaEkranon();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==20){ ArizaEkranon();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegerii==21){ ArizaEkranonbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegerii==22){ ArizaEkranonbir();
lcd_setcursor(1,2);lcd_string(">" );}

} // while menuCikis sonu

if(bit_is_clear(PINB,2)) // çıkış
{
while(bit_is_clear(PINB,2)); // Buton arkini onlemek icin.
main();
}
} // menu sonu
}


void SurelerMenu(void)//çalışma süreleri fonk.
{

	unsigned char menucikisiii=1;
	unsigned char MenuDegeriii=1;

SureEkranbir();
Bekle(300);
lcd_setcursor(1,1);
lcd_string(">");
while(menucikisiii)
{
if(bit_is_clear(PINB,1)) // Artir
{
while(bit_is_clear(PINB,1)); // Buton arkini onlemek icin.
Bekle(250);

MenuDegeriii++;

if(MenuDegeriii==23)MenuDegeriii=1;
if(MenuDegeriii==1){ SureEkranbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==2){ SureEkranbir();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==3){ SureEkraniki();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==4){ SureEkraniki();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==5){ SureEkranuc();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==6){ SureEkranuc();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==7){ SureEkrandort();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==8){ SureEkrandort();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==9){ SureEkranbes();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==10){ SureEkranbes();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==11){ SureEkranalti();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==12){ SureEkranalti();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==13){ SureEkranyedi();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==14){ SureEkranyedi();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==15){ SureEkransekiz();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==16){ SureEkransekiz();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==17){ SureEkrandokuz();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==18){ SureEkrandokuz();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==19){ SureEkranon();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==20){ SureEkranon();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==21){ SureEkranonbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==22){ SureEkranonbir();
lcd_setcursor(1,2);lcd_string(">" );}

}
if(bit_is_clear(PINB,0)) // Azalt
{
while(bit_is_clear(PINB,0)); // Buton arkini onlemek icin.
Bekle(250);
MenuDegeriii--;

if(MenuDegeriii==0)MenuDegeriii=22;
if(MenuDegeriii==1){ SureEkranbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==2){ SureEkranbir();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==3){ SureEkraniki();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==4){ SureEkraniki();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==5){ SureEkranuc();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==6){ SureEkranuc();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==7){ SureEkrandort();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==8){ SureEkrandort();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==9){ SureEkranbes();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==10){ SureEkranbes();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==11){ SureEkranalti();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==12){ SureEkranalti();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==13){ SureEkranyedi();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==14){ SureEkranyedi();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==15){ SureEkransekiz();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==16){ SureEkransekiz();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==17){ SureEkrandokuz();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==18){ SureEkrandokuz();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==19){ SureEkranon();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==20){ SureEkranon();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDegeriii==21){ SureEkranonbir();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDegeriii==22){ SureEkranonbir();
lcd_setcursor(1,2);lcd_string(">" );}

} // while menuCikis sonu

if(bit_is_clear(PINB,2)) // çıkış
{
while(bit_is_clear(PINB,2)); // Buton arkini onlemek icin.
main();
}
} // menu sonu
}

void CikisYapilandir(void)
{
lcd_clear();
lcd_setcursor(2,1);lcd_string(" CIKIS YAPI ");
Bekle(250);
Bekle(250);
Bekle(250);
Bekle(250);
}
//**************************Menü Ekranları**************************
void MenuEkran(void)
{
lcd_clear();
lcd_setcursor(1,1);lcd_string(" DURUMLAR ");
lcd_setcursor(1,2);lcd_string(" ARIZALAR ");
}
void MenuEkranIki(void)
{
lcd_clear();
lcd_setcursor(2,1);lcd_string(" CALIS SURE ");
lcd_setcursor(2,2);lcd_string(" CIKIS YAPI ");
}
void DurumEkranbir(void)
{
	stdout = stdin = &lcd_str; 
	char *a; //jetfan1
	char *s; //jetfan2

if(bit_is_set(PINE,6))	
a="DEVREDE";
else
a="DEVREDISI";

if(bit_is_set(PINE,7))	
s="DEVREDE";
else
s="DEVREDISI";

lcd_clear();
lcd_setcursor(2,1);printf("FAN1:%s",a); 
lcd_setcursor(2,2);printf("FAN2:%s",s);
}
void DurumEkraniki(void)
{
	stdout = stdin = &lcd_str; 
	char *d; //jetfan3
	char *f; //jetfan4

if(bit_is_set(PINB,3))	
d="DEVREDE";
else
d="DEVREDISI";

if(bit_is_set(PINB,4))	
f="DEVREDE";
else
f="DEVREDISI";

lcd_clear();
lcd_setcursor(2,1);printf("FAN3:%s",d);
lcd_setcursor(2,2);printf("FAN4:%s",f);

}
void DurumEkranuc(void)
{
	stdout = stdin = &lcd_str; 
	char *g; //jetfan5
	char *h; //jetfan6

if(bit_is_set(PINB,5))	
g="DEVREDE";
else
g="DEVREDISI";

if(bit_is_set(PINB,6))	
h="DEVREDE";
else
h="DEVREDISI";

lcd_clear();
lcd_setcursor(2,1);printf("FAN5:%s",g);
lcd_setcursor(2,2);printf("FAN6:%s",h);
}
void DurumEkrandort(void)
{
	stdout = stdin = &lcd_str; 
	char *j; //jetfan7
	char *k; //jetfan8

if(bit_is_set(PINB,7))	
j="DEVREDE";
else
j="DEVREDISI";

if(bit_is_set(PING,3))	
k="DEVREDE";
else
k="DEVREDISI";

lcd_clear();
lcd_setcursor(2,1);printf("FAN7:%s",j);
lcd_setcursor(2,2);printf("FAN8:%s",k);
}
void DurumEkranbes(void)
{
	stdout = stdin = &lcd_str; 
	char *l; //jetfan9
	char *i; //jetfan10

if(bit_is_set(PING,4))	
l="DEVREDE";
else
l="DEVREDISI";

if(bit_is_set(PIND,0))	
i="DEVREDE";
else
i="DEVREDISI";

lcd_clear();
lcd_setcursor(2,1);printf("FAN9:%s",l);
lcd_setcursor(1,2);printf("FAN10:%s",i);

}
void DurumEkranalti(void)
{
	stdout = stdin = &lcd_str; 
	char *ld; //jetfan11
	char *id; //jetfan12

if(bit_is_set(PIND,1))	
ld="DEVREDE";
else
ld="DEVREDISI";

if(bit_is_set(PIND,2))	
id="DEVREDE";
else
id="DEVREDISI";

lcd_clear();
lcd_setcursor(1,1);printf("FAN11:%s",ld);
lcd_setcursor(1,2);printf("FAN12:%s",id);

}
void DurumEkranyedi(void)
{
	stdout = stdin = &lcd_str; 
	char *ls; //jetfan13
	char *is; //jetfan14

if(bit_is_set(PIND,3))	
ls="DEVREDE";
else
ls="DEVREDISI";

if(bit_is_set(PIND,4))	
is="DEVREDE";
else
is="DEVREDISI";

lcd_clear();
lcd_setcursor(1,1);printf("FAN13:%s",ls);
lcd_setcursor(1,2);printf("FAN14:%s",is);

}
void DurumEkransekiz(void)
{
	stdout = stdin = &lcd_str; 
	char *al; //jetfan15
	char *ii; //jetfan16

if(bit_is_set(PIND,5))	
al="DEVREDE";
else
al="DEVREDISI";

if(bit_is_set(PIND,6))	
ii="DEVREDE";
else
ii="DEVREDISI";

lcd_clear();
lcd_setcursor(1,1);printf("FAN15:%s",al);
lcd_setcursor(1,2);printf("FAN16:%s",ii);

}
void DurumEkrandokuz(void)
{
	stdout = stdin = &lcd_str; 
	char *ll; //jetfan17
	char *ld;

if(bit_is_set(PIND,7))	
ll="DEVREDE";
else
ll="DEVREDISI";

if(bit_is_set(PING,1))	
ld="DEVREDE";
else
ld="DEVREDISI";

lcd_clear();
lcd_setcursor(1,1);printf("FAN17:%s",ll);
lcd_setcursor(1,2);printf("FAN18:%s",ld);
}
void DurumEkranon(void)
{
	stdout = stdin = &lcd_str; 
	char *ll; //jetfan17
	char *ld;

if(bit_is_set(PING,0))	
ll="DEVREDE";
else
ll="DEVREDISI";

if(bit_is_set(PINC,0))	
ld="DEVREDE";
else
ld="DEVREDISI";

lcd_clear();
lcd_setcursor(1,1);printf("FAN19:%s",ll);
lcd_setcursor(1,2);printf("FAN20:%s",ld);
}

void DurumEkranonbir(void)
{
	stdout = stdin = &lcd_str; 
	char *ll; //jetfan17
	char *ld;
if(bit_is_set(PINC,1))	
ll="DEVREDE";
else
ll="DEVREDISI";

if(bit_is_set(PINC,2))	
ld="DEVREDE";
else
ld="DEVREDISI";

lcd_clear();
lcd_setcursor(1,1);printf("FAN21:%s",ll);
lcd_setcursor(1,2);printf("FAN22:%s",ld);
}
void ArizaEkranbir(void)
{

	stdout = stdin = &lcd_str; 
	unsigned int q; //jetfan1
	unsigned int w; //jetfan2

	if(bit_is_clear(PINC,3))	
	q="NORMAL";
	else
	q="ARIZA";

	if(bit_is_clear(PINC,4))	
	w="NORMAL";
	else
	w="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN1: %s",q);
lcd_setcursor(2,2);printf("FAN2: %s",w);
}
void ArizaEkraniki(void)
{
	stdout = stdin = &lcd_str; 
	char *e; //jetfan3
	char *r; //jetfan4

	if(bit_is_clear(PINC,5))	
	e="NORMAL";
	else
	e="ARIZA";

	if(bit_is_clear(PINC,6))	
	r="NORMAL";
	else
	r="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN3: %s",e);
lcd_setcursor(2,2);printf("FAN4: %s",r);
}
void ArizaEkranuc(void)
{
	stdout = stdin = &lcd_str; 
	char *t; //jetfan5
	char *y; //jetfan6

	if(bit_is_clear(PING,2))	
	t="NORMAL";
	else
	t="ARIZA";

	if(bit_is_clear(PINA,7))	
	y="NORMAL";
	else
	y="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN5: %s",t);
lcd_setcursor(2,2);printf("FAN6: %s",y);
}
void ArizaEkrandort(void)
{
	stdout = stdin = &lcd_str; 
	char *u; //jetfan7
	char *o; //jetfan8

	if(bit_is_clear(PINA,6))	
	u="NORMAL";
	else
	u="ARIZA";

	if(bit_is_clear(PINA,5))	
	o="NORMAL";
	else
	o="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN7: %s",u);
lcd_setcursor(2,2);printf("FAN8: %s",o);
}
void ArizaEkranbes(void)
{
	stdout = stdin = &lcd_str; 
	char *p; //jetfan9
	char *z; //jetfan10

	if(bit_is_clear(PINA,4))	
	p="NORMAL";
	else
	p="ARIZA";

	if(bit_is_clear(PINA,3))	
	z="NORMAL";
	else
	z="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN9: %s",p);
lcd_setcursor(2,2);printf("FAN10: %s",z);
}

void ArizaEkranalti(void)
{
	stdout = stdin = &lcd_str; 
	char *pe; //jetfan9
	char *ze; //jetfan10

	if(bit_is_clear(PINA,2))	
	pe="NORMAL";
	else
	pe="ARIZA";

	if(bit_is_clear(PINA,1))	
	ze="NORMAL";
	else
	ze="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN11: %s",pe);
lcd_setcursor(2,2);printf("FAN12: %s",ze);
}
void ArizaEkranyedi(void)
{
	stdout = stdin = &lcd_str; 
	char *pa; //jetfan9
	char *za; //jetfan10

	if(bit_is_clear(PINA,0))	
	pa="NORMAL";
	else
	pa="ARIZA";

	if(bit_is_clear(PINF,7))	
	za="NORMAL";
	else
	za="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN13: %s",pa);
lcd_setcursor(2,2);printf("FAN14: %s",za);
}
void ArizaEkransekiz(void)
{
	stdout = stdin = &lcd_str; 
	char *ps; //jetfan9
	char *zz; //jetfan10

	if(bit_is_clear(PINF,6))	
	ps="NORMAL";
	else
	ps="ARIZA";

	if(bit_is_clear(PINF,5))	
	zz="NORMAL";
	else
	zz="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN15: %s",ps);
lcd_setcursor(2,2);printf("FAN16: %s",zz);
}
void ArizaEkrandokuz(void)
{
	stdout = stdin = &lcd_str; 
	char *pp; //jetfan10
	char *p;
	if(bit_is_clear(PINF,4))	
	pp="NORMAL";
	else
	pp="ARIZA";
	if(bit_is_clear(PINF,3))	
	p="NORMAL";
	else
	p="ARIZA";

lcd_clear();
lcd_setcursor(2,1);printf("FAN17: %s",pp);
lcd_setcursor(2,2);printf("FAN18: %s",p);
}
void ArizaEkranon(void)
{
	stdout = stdin = &lcd_str; 
	char *pp; //jetfan10
	char *po; //jetfan10

	if(bit_is_clear(PINF,4))	
	pp="NORMAL";
	else
	pp="ARIZA";
	if(bit_is_clear(PINF,3))	
	po="NORMAL";
	else
	po="ARIZA";
lcd_clear();
lcd_setcursor(2,1);printf("FAN19: %s",pp);
lcd_setcursor(2,2);printf("FAN20: %s",po);
}
void ArizaEkranonbir(void)
{
	stdout = stdin = &lcd_str; 
	char *p; //jetfan10
	char *o; //jetfan10

	if(bit_is_clear(PINF,4))	
	p="NORMAL";
	else
	p="ARIZA";
	if(bit_is_clear(PINF,3))	
	o="NORMAL";
	else
	o="ARIZA";
lcd_clear();
lcd_setcursor(2,1);printf("FAN21: %s",p);
lcd_setcursor(2,2);printf("FAN22: %s",o);
}


void SureEkranbir(void)
{	
	stdout = stdin = &lcd_str; 

	if(bit_is_set(PINE,6))	
	{

	int i;
	int a=0;
	for(i=0;i<10000;i++)
	{
		
	a++;
	_delay_ms(1000);
	lcd_clear();
	lcd_setcursor(2,1);printf("FAN1: %d",a);
	if(bit_is_clear(PINE,6))break;
	}
	}
	else
	{
	lcd_clear();
	lcd_setcursor(2,1);printf("FAN1: %d",qq);
	}
	
}
void SureEkraniki(void)
{
	stdout = stdin = &lcd_str; 

lcd_setcursor(2,2);printf("FAN2: %d",ww);
lcd_clear();
lcd_setcursor(2,1);printf("FAN3: %d",ee);
lcd_setcursor(2,2);printf("FAN4: %d",rr);
}
void SureEkranuc(void)
{
	stdout = stdin = &lcd_str; 


lcd_clear();
lcd_setcursor(2,1);
printf("FAN5: %d",tt);
lcd_setcursor(2,2);
printf("FAN6: %d",yy);
}
void SureEkrandort(void)
{
	stdout = stdin = &lcd_str; 


lcd_clear();
lcd_setcursor(2,1);
printf("FAN7: %d",uu);
lcd_setcursor(2,2);
printf("FAN8: %d",oo);
}
void SureEkranbes(void)
{
	stdout = stdin = &lcd_str; 

lcd_clear();
lcd_setcursor(2,1);
printf("FAN9: %d",pp);
lcd_setcursor(2,2);
printf("FAN10: %d",zz);
}

void SureEkranalti(void)
{
	stdout = stdin = &lcd_str; 

lcd_clear();
lcd_setcursor(2,1);
printf("FAN11: %d",dad);
lcd_setcursor(2,2);
printf("FAN12: %d",zdz);
}

void SureEkranyedi(void)
{
	stdout = stdin = &lcd_str; 

lcd_clear();
lcd_setcursor(2,1);
printf("FAN13: %d",psp);
lcd_setcursor(2,2);
printf("FAN14: %d",zsz);
}

void SureEkransekiz(void)
{
	stdout = stdin = &lcd_str; 

lcd_clear();
lcd_setcursor(2,1);
printf("FAN15: %d",pjp);
lcd_setcursor(2,2);
printf("FAN16: %d",zjp);
}

void SureEkrandokuz(void)
{
	stdout = stdin = &lcd_str; 

lcd_clear();
lcd_setcursor(2,1);
printf("FAN17: %d",ooo);
lcd_setcursor(2,2);
printf("FAN18: %d",ggg);
}
void SureEkranon(void)
{
	stdout = stdin = &lcd_str; 

lcd_clear();
lcd_setcursor(2,1);
printf("FAN19: %d",nnn);
lcd_setcursor(2,2);
printf("FAN20: %d",mmm);
}

void SureEkranonbir(void)
{
	stdout = stdin = &lcd_str; 

lcd_clear();
lcd_setcursor(2,1);
printf("FAN21: %d",xxx);
lcd_setcursor(2,2);
printf("FAN22: %d",qer);
}


//***************** ANA MENU FONKSIYONU ******************
void Menu(void)
{
unsigned char menucikis=1;
unsigned char MenuDeger=1;
MenuEkran();
Bekle(300);
lcd_setcursor(1,1);
lcd_string(">");
while(menucikis)
{
if(bit_is_clear(PINB,1)) // Artir
{
while(bit_is_clear(PINB,1)); // Buton arkini onlemek icin.
Bekle(250);
MenuDeger++;
if(MenuDeger==5)MenuDeger=1;
if(MenuDeger==1){ MenuEkran();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDeger==2){ MenuEkran();
lcd_setcursor(1,2);lcd_string(">" );}

if(MenuDeger==3){ MenuEkranIki();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDeger==4){ MenuEkranIki();
lcd_setcursor(1,2);lcd_string(">" );}


}
if(bit_is_clear(PINB,0)) // Azalt
{
while(bit_is_clear(PINB,0)); // Buton arkini onlemek icin.
Bekle(250);
MenuDeger--;
if(MenuDeger==0)MenuDeger=1;
if(MenuDeger==1){ MenuEkran();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDeger==2){ MenuEkran();
lcd_setcursor(1,2);lcd_string(">" );}
if(MenuDeger==3){ MenuEkranIki();
lcd_setcursor(1,1);lcd_string(">" );}
if(MenuDeger==4){ MenuEkranIki();
lcd_setcursor(1,2);lcd_string(">" );}
}
if(bit_is_clear(PINB,2)) // Giris
{
while(bit_is_clear(PINB,2)); // Buton arkini onlemek icin.

if(MenuDeger==1)
{
DurumMenu(); Bekle(250);menucikis=0;
}
if(MenuDeger==2) 
{
ArizaMenu(); Bekle(250);menucikis=0;
}
if(MenuDeger==3) 
{
SurelerMenu(); Bekle(250);menucikis=0;
}
if(MenuDeger==4) 
{
CikisYapilandir(); Bekle(250);menucikis=0; 

}
} // OK tus sonu
} // while menuCikis sonu
} // menu sonu
int main(void)
{

mcu_init(); // işlemci port kurumulu.
lcd_init(); // Lcd on hazirlik

while(1)
{
	lcd_clear();
	lcd_setcursor(0,1);lcd_string( " MAVI OTOMASYON ");
	lcd_setcursor(1,2);lcd_string( " HOSGELDINIZ ");
	if(bit_is_set(PINB,2)) // giris tusu
{
while(bit_is_set(PINB,2)); // Buton arkini onlemek icin.
Menu();
}
	


} // while dongu sonu.
} // main dongu sonu.

Kabil ATICI

Bacak kontrolunu timer'a bağayabilirsin.
ikinci olarak 1 tane timer ile 22 tane sayacıda kontrol edebilirsin.
22 tane bayrak ve sayac (örneğin bayrak1, bayrak2...ve sayac1, sayac2,..) ata. örneğin bayraklara 1 ata sayaclara 0 ata.
entegre bacağı senin istediğin duruma geldiğinde bu bayrağı 0 yap.
Tek yapman gereken bu bayrağı timer içinde kontrol etmek ve sayacının değeri artırmak.

timer1 kesmesi:
bayrak1 0 ise
sayac1 =sayac1+1
eğer sayac1=20 ise
bayrak1=1
.
.
.
istiyorsan timer1'e girdiğinde burada bacaklarıda kontrol edebilirsin..

bu sayede sen nerede ne iş yaparsan yap bu işlem yürütülmüş olur..
ambar7

yahya255

Çok teşekkür ediyorum cevabınız baya aydınlatıcı oldu şimdi atmega128 in bilgi kitabından timer larla alakalı bölümü çözmeye çalışıyorum sıkıntı çıkarsa tekrar yazıcam burdan. Teşekkürler.

yahya255

Arkadaşlar timer kullanımına biraz örnek verebilir misiniz yani giriş e göre sayaç olarak kullanımına ben nette araştırıyorum fakat pek bir şey bulamadım genelde PWM üretmek amaçlı kullanıyorlar. Birde program kesmeye gittiğinde normal akışını da devam ettirebilecek mi ?