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...
kesme bu gibi işleri halleder.
Ama istediğiniz açıklayıcı değil ve kod da yok.
İş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.
Ö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.
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..
Ç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.
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 ?