Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > Hallo, > > wird in dem Demo-Programm in main() bei Sekunde=10 die Funktion Timer_T0CNT(); > aufgerufen bleibt das Programm stehen! > > Bug? > > > > > > > > // LCD_Uhr_1: LCD-Uhr (Anzeigeformat "13:47:24") > // LED1 blinkt mit 1Hz > // erforderliche Library: IntFunc_Lib.cc, LCD_Lib.cc > > // Auf dem Display wird eine LCD-Uhr im Anzeigenformat "13:47:24" dargestellt. > // Zeitbasis 10ms Interrupt mit Zeitkorrektur > > byte cnt1; // globale Variablendeklaration > byte Sekunde, Minute, Stunde; // globale Variablendeklaration > > //------------------------------------------------------------------------------ > // Zeichenausgabe > // > void Write2Digits(byte pos,byte val) > { > char num[3]; > > LCD_CursorPos(pos); // LCD Cursor positionieren > Str_WriteWord(val,10,num,0,2); // Zahl mit Basis 10, Offset 0, 2 stellig in String schreiben > LCD_WriteText(num); // String ausgeben > } > > //------------------------------------------------------------------------------ > // Ausgabeformat der Uhr festlegen > // > void Display_Time(void) > { > Write2Digits(0,Stunde); // Stunde > LCD_WriteChar(':'); > Write2Digits(3,Minute); // Minute > LCD_WriteChar(':'); > Write2Digits(6,Sekunde); // Sekunde > } > > //------------------------------------------------------------------------------ > // Zeitberechnung > // > void RTC(void) > { > cnt1++; // 10ms Zähler erhöhen > if (cnt1==50) > { > Port_WriteBit(PORT_LED1,PORT_OFF); // LED1 ausschalten > } > if (cnt1==100) > { > Port_WriteBit(PORT_LED1,PORT_ON); // LED1 einschalten > Display_Time(); // Funktionsaufruf: Display_Time > Sekunde++; > if (Sekunde==60) > { > Sekunde=0; > Minute++; > if (Minute==60) > { > Minute=0; > Stunde++; > if (Stunde==24) Stunde=0; > } > } > cnt1=0; > } > } > > //------------------------------------------------------------------------------ > // Interrupt alle 10ms > // > void INT_10ms(void) > { > int irqcnt; > > RTC(); // Funktionsaufrauf: RTC > irqcnt=Irq_GetCount(INT_TIM2COMP); // Interrupt Request Counter > } > > //------------------------------------------------------------------------------ > // Hauptprogramm > // > void main(void) > { > LCD_Init(); // Display initialisieren > LCD_ClearLCD(); // Display löschen > LCD_CursorOff(); // Display Cursur ausschalten > > cnt1=0; > > Port_DataDirBit(PORT_LED1,PORT_OUT); // LED1 auf Ausgabe vorbereiten > Port_WriteBit(PORT_LED1,PORT_OFF); // LED1 ausschalten > Sekunde=30; // Startzeit festlegen z.B. 12:25:00 > Minute=32; > Stunde=12; > Irq_SetVect(INT_TIM2COMP,INT_10ms); // Interrupt Service Routine definieren > > > > while (1) // Endlosschleife, hier können weitere > { // Anweisungen stehen > > > > > if (Sekunde == 10) // Programm bleibt stehen > Timer_T0CNT(); > } > > }