именно с дробными числами нет арифметики( , на дисплее 0 вместо числа
подаю импульсы на вход INT1 (10 гц)
УЗНАЮ частоту
дальше делю 1 на частоту ,узнаю период (0.1 сек)
а вод умножая его на число 10 получаю на дисплее 0
Код: Выделить всё
#include <mega8.h>
#include <delay.h>
#asm
.equ __lcd_port=0x12
#endasm
#include <lcd.h>
#include <stdio.h>
float t;
int i = 0, freq=0,s;
char lcd_buf[33];
interrupt [EXT_INT1] void ext_int1_isr(void)
{
i++;
}
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
freq=i;
i=0;
TCNT1H=0x00;
TCNT1L=0x00;
}
void main(void)
{
TIMSK=0x10;
TCCR1B=0x05;
OCR1AH=0x1E;
OCR1AL=0x85;
GICR=0x80;
MCUCR=0x0C;
DDRB=0x01;
lcd_init(16);
#asm("sei")
while(1)
{
t=(1/freq);
s=t*10;
sprintf(lcd_buf,"%d",s);
lcd_clear();
lcd_puts(lcd_buf);
delay_ms(20);
}
}


