Hallo! Ich möchte den Zählerstands des Timers ausgeben. Ist der Quellcode soweit richtig? #include <stdio.h> #include <LCDIO.h> #include <REG8252.h> int stand=0; //globale Variabeln //Programmfunktionen: //Zeigt einmal den Zählerstand in HEX an void test(void) interrupt TF0_VECTOR //Interrupt { stand=(TH0*256)+TL0; //High und Low miteinander verknüpfen } //interrupt ENDE //Main void main(void) { TMOD=0x10; //Timer Modus festlegen ET0=1; //Timer 0 Interrupt Enable: 1=Enabled TR0=1; //Timer 0 Run Control Bit EA=1; // Global Interrupt Enable, 0=Disable all interrupts do { clrsc(); //Display leeren printf(%x,stand); //Ausgabe des Zählerstands } while(1); } //Main ENDE
Hi Chris, wenn mich mein 8051-Wissen nicht trügt, so bekommst du immer den gleichen Wert, weil der Interrupt immer dann ausgelöst wird, wenn der Timer von 0xFFFF nach 0x0000 überläuft. Besser wäre es, wenn du bei jedem Interrupt die Variable "Stand" inkrementierst. Die Berechnung, in welchen Abständen der Interrupt erfolgt, berechnest du m.W. aus der Formel fOSC/12*65536. fOSC ist deine Quarzfrequenz. Man korrigiere mich bitte, wenn ich falsch liege... Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.