ATmega8 Timer0 Overflow
In diesem Codebeipsiel zeigt ein Digitalport das MSB des endlos laufenden Timer0 an.
Beschreibung Der Timer 0 des ATmega8 wird in diesem Beispiel mit einem 1MHz Mikrocontroller Clock betreiben. Nach einem Overflow fängt der Timer jeweils wieder bi 0 mit zählen an. Der Prescaler teilt den Clock für den Timer0 durch 1024. Somit ist der Clock des Timer0 976Hz. Das Programm beobachtet das MSB des Timer0. Dieses ändert alle 128 Timer0 Clockzyklen. Seine Frequenz ist deshalb 976Hz / 256 = 3.81Hz. Der Zustand des MSB wird an PA0 ausgegeben. |
Please visit: the four |
C Sourcecode
#include <avr/io.h>
int main(void)
{
DDRB = 0x01; // Set PB0 as output
TCCR0= (1<<CS02)|(1<<CS00); // Start Timer 0 with prescaler 1024
for(;;) // Endless loop;
{
if(TCNT0&0x80) // Is the MSB of Timer1 = 1?
PORTB |=0x01; // Set PB0
else // Is the MSB of Timer1 = 0?
PORTB &= ~0x01; // Reset PB0
} // main() will never be left
return 0; // This line will never be executed
}
Download C-Sourcefile mit ASCII-Schema: C-Sourcefile mit ACII-Schema
Signalplots
Gelb: Digitalausgang PB0 zeigt das MSB des Timer0 an.
|