ja nasel tohle akorat nevim kam pridat nejakou funkci if

no skusim si stim zejtra pohrat snad neco vymyslim.
Kód: Vybrat vše
// AVR ATMEGA8 - INTERNAL 8MHz CLK
// Auhtor: Zaid Pirwani
// Developer at Ejaad
// email@zaidpirwani.com
// 21-02-2012
//
#include "template.h" // Code-Tamplate I use in my Projects
#include "lcd.h" // LCD HEADER FILE
#define MAX_OPTIONS 6
// MENU Options
char menu_opt[MAX_OPTIONS][16] = { "MENU OPTION 1",
"MENU OPTION 2",
"MENU OPTION 3",
"MENU OPTION 4",
"MENU OPTION 5",
"MENU OPTION 6",
};
unsigned char item = 0, item_old=0;
void disp_opt(unsigned char);
void chk_btns(void);
int main(void){
// LCD
lcd_init(LCD_DISP_ON);
lcd_clrscr();
// i/o Setup D.0-2 [PULLED UP]
//PREV NEXT SELECT BACK
IN(D,0); IN(D,1); IN(D,2); IN(D,3);
SET(D,0); SET(D,1); SET(D,2); SET(D,3);
// Initial LCD Text
lcd_putc('>');
lcd_putc(' ');
lcd_puts(&menu_opt[item][0]);
lcd_gotoxy(2,1);
lcd_puts(&menu_opt[item+1][0]);
while(1){
chk_btns(); // Poll Buttons
}
return(0);
}
// Display Options / Update LCD Display
void disp_opt(unsigned char item){
if(item>item_old){
lcd_clrscr();
lcd_gotoxy(2,0);
lcd_puts(&menu_opt[item-1][0]);
lcd_gotoxy(0,1);
lcd_putc('>');
lcd_putc(' ');
lcd_puts(&menu_opt[item][0]);
}
else if(item<item_old) {
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_putc('>');
lcd_putc(' ');
lcd_puts(&menu_opt[item][0]);
lcd_gotoxy(2,1);
lcd_puts(&menu_opt[item+1][0]);
}
}
// Check Buttons
void chk_btns(void){
// PRIMITIVE BUTTON POLLING
// Will detect the FIRST ACTIVE BUTTON
// One Active Signal on a single press
// Will Ignore Buttons which are checked LATER if any previously checked Button is ACTIVE
if(READ(D,0)==LOW){ // Prev Option
delay(BTBOUNCE);
while(READ(D,0)==LOW){};
item_old = item;
item -= item<1 ? 0 : 1;
disp_opt(item);
delay(BTBOUNCE);
}
if(READ(D,1)==LOW){ // Next Option
delay(BTBOUNCE);
while(READ(D,1)==LOW){};
item_old = item;
item += item>(MAX_OPTIONS-2) ? 0 : 1;
disp_opt(item);
delay(BTBOUNCE);
}
if(READ(D,2)==LOW){ // SELECT Button
delay(BTBOUNCE);
while(READ(D,2)==LOW){};
lcd_clrscr();
lcd_puts("Selected Opt: ");
lcd_putc(item+48+1); //Comvert ITEM into CHAR Number+1
lcd_gotoxy(0,1);
lcd_puts(&menu_opt[item][0]);
delay(BTBOUNCE);
}
if(READ(D,3)==LOW){ // BACK Button
delay(BTBOUNCE);
while(READ(D,3)==LOW){};
if(item<(MAX_OPTIONS-1)){
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_putc('>');
lcd_putc(' ');
lcd_puts(&menu_opt[item][0]);
lcd_gotoxy(2,1);
lcd_puts(&menu_opt[item+1][0]);
}else{
lcd_clrscr();
lcd_gotoxy(2,0);
lcd_puts(&menu_opt[item-1][0]);
lcd_gotoxy(0,1);
lcd_putc('>');
lcd_putc(' ');
lcd_puts(&menu_opt[item][0]);
}
delay(BTBOUNCE);
}
}