hi,
ich benutze einen ATmega16 mit 8 Mhz internem oszilator
Ich progge in "C" mit WinAVR und AVR Studio 4
MfGCode:#include <avr/io.h> #include <inttypes.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/sleep.h> #include "lcd.c" /*************************Variablen********************************************************/ uint8_t std = 0; uint8_t min = 0; uint8_t sec = 0; uint8_t day = 0; uint8_t auswahl = 0; uint8_t smiley = 0; uint8_t delay = 0; /****************************Timer Interupts********************************/ SIGNAL(SIG_OUTPUT_COMPARE1A) { char cSREG; cSREG = SREG; // Statusregister puffern in Variable cSREG // if(delay >0) delay--; sec++; if(sec == 60){ min++; sec = 0; if(min == 60){ std++; min = 0; if(std == 24){ sec = 0; min = 0; std = 0; day++; if(day == 7){ day = 0; } } } } if(bit_is_clear(PINC,0)){ auswahl++; if(auswahl == 4) auswahl = 0; } /*if(bit_is_clear(PINC,4)){ auswahl++; smiley++; if(smiley == 7) smiley = 0; }*/ if(auswahl == 0){ if(bit_is_clear(PINC,1)){ std++; } if(bit_is_clear(PINC,2)){ std--; } } if(auswahl == 1){ if(bit_is_clear(PINC,1)){ min++; } if(bit_is_clear(PINC,2)){ min--; } } if(auswahl == 2){ if(bit_is_clear(PINC,1)){ sec++; } if(bit_is_clear(PINC,2)){ sec--; } } if(auswahl == 3){ if(bit_is_clear(PINC,1)){ day++; } if(bit_is_clear(PINC,2)){ day--; } } SREG = cSREG; // Statusregister aus Variable cSREG retten // } /******************************Initialisierung der PORTS**************************/ void init_ports (void) { DDRB = 0xff; // Port B als Ausgang DDRD = 0xff; // Port D als Ausgang DDRC = 0x00; // Port C als Eingang PORTC = 0xff; //interne Pullup widerstände aktivieren } /************************Timer Initialisierung***************************************/ void init_timer1 (void) { // fclk=2MHz// // N=Prescaler = 64// // OCR1A= Output_Compare_Vergleichswert// cli(); // Interrupts sperren! TCCR1A= 0x00; // Compare- Ausgang A und B nicht toggeln TCCR1B |= (1<<WGM12) | (1<<CS12); // Mode: Output Compare ; Prescaler: Faktor 256 OCR1AH= 0x7A; // Output Compare High = 0x7A dez. 31250 OCR1AL= 0x12; // Output Compare Low = 0x12 TCNT1H= 0x00; // Timer1 auf 0 stellen TCNT1L= 0x00; // Timer1 auf 0 stellen TIMSK |= (1<<OCIE1A); // Timer1 Output Compare Interrupt Enable A aktivieren (Bit setzen) // sei(); // Interrrupts freigeben! } /*************************Hauptprogramm***************************/ int main (void) //Hauptprogramm begin { init_timer1(); init_ports(); lcd_init(LCD_DISP_ON); lcd_clrscr(); lcd_home(); lcd_puts("00:00:00"); while (1){ //endlos schleife if(bit_is_clear(PINC,4)){ delay = 10; } if(delay >0){ lcd_init(LCD_DISP_ON); lcd_home(); lcd_gotoxy(0,0); switch (std){ case 0 : lcd_puts("00"); break; case 1 : lcd_puts("01"); break; case 2 : lcd_puts("02"); break; case 3 : lcd_puts("03"); break; case 4 : lcd_puts("04"); break; case 5 : lcd_puts("05"); break; case 6 : lcd_puts("06"); break; case 7 : lcd_puts("07"); break; case 8 : lcd_puts("08"); break; case 9 : lcd_puts("09"); break; case 10 : lcd_puts("10"); break; case 11 : lcd_puts("11"); break; case 12 : lcd_puts("12"); break; case 13 : lcd_puts("13"); break; case 14 : lcd_puts("14"); break; case 15 : lcd_puts("15"); break; case 16 : lcd_puts("16"); break; case 17 : lcd_puts("17"); break; case 18 : lcd_puts("18"); break; case 19 : lcd_puts("19"); break; case 20 : lcd_puts("20"); break; case 21 : lcd_puts("21"); break; case 22 : lcd_puts("22"); break; case 23 : lcd_puts("23"); break; case 24 : lcd_puts("24"); break; case 25 : lcd_puts("25"); break; case 26 : lcd_puts("26"); break; case 27 : lcd_puts("27"); break; case 28 : lcd_puts("28"); break; case 29 : lcd_puts("29"); break; case 30 : lcd_puts("30"); break; case 31 : lcd_puts("31"); break; case 32 : lcd_puts("32"); break; case 33 : lcd_puts("33"); break; case 34 : lcd_puts("34"); break; case 35 : lcd_puts("35"); break; case 36 : lcd_puts("36"); break; case 37 : lcd_puts("37"); break; case 38 : lcd_puts("38"); break; case 39 : lcd_puts("39"); break; case 40 : lcd_puts("40"); break; case 41 : lcd_puts("41"); break; case 42 : lcd_puts("42"); break; case 43 : lcd_puts("43"); break; case 44 : lcd_puts("44"); break; case 45 : lcd_puts("45"); break; case 46 : lcd_puts("46"); break; case 47 : lcd_puts("47"); break; case 48 : lcd_puts("48"); break; case 49 : lcd_puts("49"); break; case 50 : lcd_puts("50"); break; case 51 : lcd_puts("51"); break; case 52 : lcd_puts("52"); break; case 53 : lcd_puts("53"); break; case 54 : lcd_puts("54"); break; case 55 : lcd_puts("55"); break; case 56 : lcd_puts("56"); break; case 57 : lcd_puts("57"); break; case 58 : lcd_puts("58"); break; case 59 : lcd_puts("59"); break; case 60 : lcd_puts("60"); break; default: lcd_puts(" "); break; } lcd_gotoxy(2,0); lcd_puts(":"); lcd_gotoxy(3,0); switch (min){ case 0 : lcd_puts("00"); break; case 1 : lcd_puts("01"); break; case 2 : lcd_puts("02"); break; case 3 : lcd_puts("03"); break; case 4 : lcd_puts("04"); break; case 5 : lcd_puts("05"); break; case 6 : lcd_puts("06"); break; case 7 : lcd_puts("07"); break; case 8 : lcd_puts("08"); break; case 9 : lcd_puts("09"); break; case 10 : lcd_puts("10"); break; case 11 : lcd_puts("11"); break; case 12 : lcd_puts("12"); break; case 13 : lcd_puts("13"); break; case 14 : lcd_puts("14"); break; case 15 : lcd_puts("15"); break; case 16 : lcd_puts("16"); break; case 17 : lcd_puts("17"); break; case 18 : lcd_puts("18"); break; case 19 : lcd_puts("19"); break; case 20 : lcd_puts("20"); break; case 21 : lcd_puts("21"); break; case 22 : lcd_puts("22"); break; case 23 : lcd_puts("23"); break; case 24 : lcd_puts("24"); break; case 25 : lcd_puts("25"); break; case 26 : lcd_puts("26"); break; case 27 : lcd_puts("27"); break; case 28 : lcd_puts("28"); break; case 29 : lcd_puts("29"); break; case 30 : lcd_puts("30"); break; case 31 : lcd_puts("31"); break; case 32 : lcd_puts("32"); break; case 33 : lcd_puts("33"); break; case 34 : lcd_puts("34"); break; case 35 : lcd_puts("35"); break; case 36 : lcd_puts("36"); break; case 37 : lcd_puts("37"); break; case 38 : lcd_puts("38"); break; case 39 : lcd_puts("39"); break; case 40 : lcd_puts("40"); break; case 41 : lcd_puts("41"); break; case 42 : lcd_puts("42"); break; case 43 : lcd_puts("43"); break; case 44 : lcd_puts("44"); break; case 45 : lcd_puts("45"); break; case 46 : lcd_puts("46"); break; case 47 : lcd_puts("47"); break; case 48 : lcd_puts("48"); break; case 49 : lcd_puts("49"); break; case 50 : lcd_puts("50"); break; case 51 : lcd_puts("51"); break; case 52 : lcd_puts("52"); break; case 53 : lcd_puts("53"); break; case 54 : lcd_puts("54"); break; case 55 : lcd_puts("55"); break; case 56 : lcd_puts("56"); break; case 57 : lcd_puts("57"); break; case 58 : lcd_puts("58"); break; case 59 : lcd_puts("59"); break; case 60 : lcd_puts("60"); break; default: lcd_puts(" "); break; } lcd_gotoxy(5,0); lcd_puts(":"); lcd_gotoxy(6,0); switch (sec){ case 0 : lcd_puts("00"); break; case 1 : lcd_puts("01"); break; case 2 : lcd_puts("02"); break; case 3 : lcd_puts("03"); break; case 4 : lcd_puts("04"); break; case 5 : lcd_puts("05"); break; case 6 : lcd_puts("06"); break; case 7 : lcd_puts("07"); break; case 8 : lcd_puts("08"); break; case 9 : lcd_puts("09"); break; case 10 : lcd_puts("10"); break; case 11 : lcd_puts("11"); break; case 12 : lcd_puts("12"); break; case 13 : lcd_puts("13"); break; case 14 : lcd_puts("14"); break; case 15 : lcd_puts("15"); break; case 16 : lcd_puts("16"); break; case 17 : lcd_puts("17"); break; case 18 : lcd_puts("18"); break; case 19 : lcd_puts("19"); break; case 20 : lcd_puts("20"); break; case 21 : lcd_puts("21"); break; case 22 : lcd_puts("22"); break; case 23 : lcd_puts("23"); break; case 24 : lcd_puts("24"); break; case 25 : lcd_puts("25"); break; case 26 : lcd_puts("26"); break; case 27 : lcd_puts("27"); break; case 28 : lcd_puts("28"); break; case 29 : lcd_puts("29"); break; case 30 : lcd_puts("30"); break; case 31 : lcd_puts("31"); break; case 32 : lcd_puts("32"); break; case 33 : lcd_puts("33"); break; case 34 : lcd_puts("34"); break; case 35 : lcd_puts("35"); break; case 36 : lcd_puts("36"); break; case 37 : lcd_puts("37"); break; case 38 : lcd_puts("38"); break; case 39 : lcd_puts("39"); break; case 40 : lcd_puts("40"); break; case 41 : lcd_puts("41"); break; case 42 : lcd_puts("42"); break; case 43 : lcd_puts("43"); break; case 44 : lcd_puts("44"); break; case 45 : lcd_puts("45"); break; case 46 : lcd_puts("46"); break; case 47 : lcd_puts("47"); break; case 48 : lcd_puts("48"); break; case 49 : lcd_puts("49"); break; case 50 : lcd_puts("50"); break; case 51 : lcd_puts("51"); break; case 52 : lcd_puts("52"); break; case 53 : lcd_puts("53"); break; case 54 : lcd_puts("54"); break; case 55 : lcd_puts("55"); break; case 56 : lcd_puts("56"); break; case 57 : lcd_puts("57"); break; case 58 : lcd_puts("58"); break; case 59 : lcd_puts("59"); break; case 60 : lcd_puts("60"); break; default: lcd_puts(" "); break; } lcd_gotoxy(0,1); switch (day){ case 0 : lcd_puts("Montag "); break; case 1 : lcd_puts("Dienstag "); break; case 2 : lcd_puts("Mittwoch "); break; case 3 : lcd_puts("Donnerstag "); break; case 4 : lcd_puts("Freitag "); break; case 5 : lcd_puts("Samstag "); break; case 6 : lcd_puts("Sonntag "); break; default: lcd_puts(" "); break; } lcd_gotoxy(10,0); switch (smiley){ case 0 : lcd_puts(":-)"); break; case 1 : lcd_puts(":-("); break; case 2 : lcd_puts(":-x"); break; case 3 : lcd_puts(";-)"); break; case 4 : lcd_puts(":-/"); break; case 5 : lcd_puts(":-!"); break; case 6 : lcd_puts("8-)"); break; default: lcd_puts(" "); break; } } else{ lcd_init(LCD_DISP_OFF); } } //endlos schleife } //hauptprogramm ende
Martin







Zitieren

Lesezeichen