die lcd-routinen lasse ich mal weg:
Code:
#include <avr/io.h>
#include <stdlib.h>
#include "lcd-routines.h"
#include <util/delay.h>
int main(void)
{
int counter=0;
int temp1, temp2;
DDRD = 0xf0;
lcd_init();
while(1)
{
if ( PIND&(0x04) )
{
PORTD |= 0x40; //signal LED ein
TCCR1A = 0x00;
TCCR1B |= (1<<CS12)|(1<<CS10); //timer starten
_delay_ms(20);
while (PIND&(0x04));
TCCR1B &= ( (~(1<<CS12)) | (~(1<<CS10)) ); //timer stoppen
temp1= TCNT1L;
temp2 = TCNT1H;
counter = (temp2<<8)+temp1;
//zählregister auf 0 zurück setzen
TCNT1H = 0x00;
TCNT1L = 0x00;
//Ausgang abschalten
PORTD &= 0xdf;
}
{
char Buffer[16]; // in diesem {} lokal
lcd_clear();
set_cursor(0,2);
itoa( counter, Buffer, 10 );
// ... ausgeben
lcd_string( Buffer );
_delay_ms(200);
}
}
return 0;
}
Lesezeichen