#include <avr/io.h>
#include <avr/sleep.h>
#include <util/delay.h>
#include "lcd.h"
int main(void) {
DDRB = 0xffu;
set_sleep_mode(SLEEP_MODE_IDLE);
lcd_init(LCD_DISP_ON);
for (;;) {
uint32_t us = 0;
uint8_t cm = 0;
char buf[17] = {0};
uint8_t i, j, len;
lcd_clrscr();
DDRD |= 1<<PD0;
PORTD &= ~(1<<PD0);
_delay_us(2);
PORTD |= 1<<PD0;
_delay_us(5);
PORTD &= ~(1<<PD0);
DDRD &= ~(1<<PD0);
while (!(PIND & (1<<PD0)));
while (PIND & (1<<PD0)) {
us += 6;
}
cm = us / 29 / 2;
for (i = 0; i < 13 && (cm || i == 0); ++i) {
buf[i] = cm % 10 + '0';
cm /= 10;
}
len = j = i;
for (--j, i = 0; i < j; ++i, --j) {
char tmp;
tmp = buf[i];
buf[i] = buf[j];
buf[j] = tmp;
}
i = len;
buf[i++] = ' ';
buf[i++] = 'c';
buf[i++] = 'm';
lcd_puts(buf);
_delay_ms(1000);
}
return 0;
}
I2luY2x1ZGUgPGF2ci9pby5oPgojaW5jbHVkZSA8YXZyL3NsZWVwLmg+CiNpbmNsdWRlIDx1dGlsL2RlbGF5Lmg+CgojaW5jbHVkZSAibGNkLmgiCgppbnQgbWFpbih2b2lkKSB7CiAgRERSQiA9IDB4ZmZ1OwogIHNldF9zbGVlcF9tb2RlKFNMRUVQX01PREVfSURMRSk7CiAgbGNkX2luaXQoTENEX0RJU1BfT04pOwogIGZvciAoOzspIHsKICAgIHVpbnQzMl90IHVzID0gMDsKICAgIHVpbnQ4X3QgY20gPSAwOwogICAgY2hhciBidWZbMTddID0gezB9OwogICAgdWludDhfdCBpLCBqLCBsZW47CiAgICBsY2RfY2xyc2NyKCk7CiAgICBERFJEIHw9IDE8PFBEMDsKICAgIFBPUlREICY9IH4oMTw8UEQwKTsKICAgIF9kZWxheV91cygyKTsKICAgIFBPUlREIHw9IDE8PFBEMDsKICAgIF9kZWxheV91cyg1KTsKICAgIFBPUlREICY9IH4oMTw8UEQwKTsKICAgIEREUkQgJj0gfigxPDxQRDApOwogICAgd2hpbGUgKCEoUElORCAmICgxPDxQRDApKSk7CiAgICB3aGlsZSAoUElORCAmICgxPDxQRDApKSB7CiAgICAgIHVzICs9IDY7CiAgICB9CiAgICBjbSA9IHVzIC8gMjkgLyAyOwogICAgZm9yIChpID0gMDsgaSA8IDEzICYmIChjbSB8fCBpID09IDApOyArK2kpIHsKICAgICAgYnVmW2ldID0gY20gJSAxMCArICcwJzsKICAgICAgY20gLz0gMTA7CiAgICB9CiAgICBsZW4gPSBqID0gaTsKICAgIGZvciAoLS1qLCBpID0gMDsgaSA8IGo7ICsraSwgLS1qKSB7CiAgICAgIGNoYXIgdG1wOwogICAgICB0bXAgPSBidWZbaV07CiAgICAgIGJ1ZltpXSA9IGJ1ZltqXTsKICAgICAgYnVmW2pdID0gdG1wOwogICAgfQogICAgaSA9IGxlbjsKICAgIGJ1ZltpKytdID0gJyAnOwogICAgYnVmW2krK10gPSAnYyc7CiAgICBidWZbaSsrXSA9ICdtJzsKICAgIGxjZF9wdXRzKGJ1Zik7CiAgICBfZGVsYXlfbXMoMTAwMCk7CiAgfQogIHJldHVybiAwOwp9Cg==