fork download
  1. #include <avr/io.h>
  2. #include <avr/sleep.h>
  3. #include <util/delay.h>
  4.  
  5. #include "lcd.h"
  6.  
  7. int main(void) {
  8. DDRB = 0xffu;
  9. set_sleep_mode(SLEEP_MODE_IDLE);
  10. lcd_init(LCD_DISP_ON);
  11. for (;;) {
  12. uint32_t us = 0;
  13. uint8_t cm = 0;
  14. char buf[17] = {0};
  15. uint8_t i, j, len;
  16. lcd_clrscr();
  17. DDRD |= 1<<PD0;
  18. PORTD &= ~(1<<PD0);
  19. _delay_us(2);
  20. PORTD |= 1<<PD0;
  21. _delay_us(5);
  22. PORTD &= ~(1<<PD0);
  23. DDRD &= ~(1<<PD0);
  24. while (!(PIND & (1<<PD0)));
  25. while (PIND & (1<<PD0)) {
  26. us += 6;
  27. }
  28. cm = us / 29 / 2;
  29. for (i = 0; i < 13 && (cm || i == 0); ++i) {
  30. buf[i] = cm % 10 + '0';
  31. cm /= 10;
  32. }
  33. len = j = i;
  34. for (--j, i = 0; i < j; ++i, --j) {
  35. char tmp;
  36. tmp = buf[i];
  37. buf[i] = buf[j];
  38. buf[j] = tmp;
  39. }
  40. i = len;
  41. buf[i++] = ' ';
  42. buf[i++] = 'c';
  43. buf[i++] = 'm';
  44. lcd_puts(buf);
  45. _delay_ms(1000);
  46. }
  47. return 0;
  48. }
  49.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty