Computertechnik mit Mikrocontrollern
Computertechnik mit Mikrocontrollern
Computertechnik mit Mikrocontrollern
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
KAPITEL 13. AUFBAU DES SYSTEMS 193<br />
#include <br />
// parameter for Timer0<br />
unsigned short prescaler[6]={ 0,1,8,64,256,1024 };<br />
unsigned char psindex = 5;<br />
unsigned char tim0cnt = 144; // => 25 Hz<br />
#include "mainboard.h"<br />
#include "putbyte_disp.c"<br />
void displa (unsigned long i2)<br />
{<br />
if (i2>=10) displa (i2/10);<br />
putbyte (i2%10+’0’);<br />
}<br />
void display()<br />
{<br />
putbyte (’\f’);<br />
displa (Clock);<br />
putbyte (’H’); putbyte (’z’);<br />
putbyte (’/’); putbyte (’2’); putbyte (’/’);<br />
putbyte (’\r’); putbyte (’\n’);<br />
displa (prescaler[psindex]);<br />
putbyte (’/’);<br />
displa (tim0cnt);<br />
putbyte (’=’);<br />
displa (Clock/2/prescaler[psindex]/tim0cnt);<br />
putbyte (’H’); putbyte (’z’);<br />
}<br />
unsigned char taster (unsigned char n)<br />
{<br />
static unsigned char state [4];<br />
switch (n) {<br />
case 1: if(!state[0] && bit_is_clear(tas1_PIN,tas1_PB)) return state[0]=1;<br />
else if (bit_is_set(tas1_PIN,tas1_PB)) state[0]=0; return 0;<br />
case 2: if(!state[1] && bit_is_clear(tas2_PIN,tas2_PB)) return state[1]=1;<br />
else if (bit_is_set(tas2_PIN,tas2_PB)) state[1]=0; return 0;<br />
case 3: if(!state[2] && bit_is_clear(tas3_PIN,tas3_PB)) return state[2]=1;<br />
else if (bit_is_set(tas3_PIN,tas3_PB)) state[2]=0; return 0;<br />
case 4: if(!state[3] && bit_is_clear(tas4_PIN,tas4_PB)) return state[3]=1;<br />
else if (bit_is_set(tas4_PIN,tas4_PB)) state[3]=0; return 0;<br />
}<br />
}<br />
ISR ( SIG_OVERFLOW0 ) // timer0<br />
{<br />
static unsigned char buzzer;<br />
sei();<br />
TCNT0 = ~tim0cnt;<br />
if (buzzer) {sbi(buzzer_PORT,buzzer_PB);buzzer=0;}<br />
else {cbi(buzzer_PORT,buzzer_PB);buzzer=1;}<br />
}<br />
main ()<br />
{<br />
TCCR0B = psindex;<br />
TCNT0 = ~tim0cnt;<br />
sbi (TIMSK0,TOIE0);