- Код: Выделить всё • Развернуть
- #include<mega128.h>
 #include <delay.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <lcd.h>
 #asm
 .equ __lcd_port=0x15 ;PORTC
 #endasm
 unsigned char q;
 interrupt [EXT_INT0] void ext_int0_isr(void)
 {
 q=q+1;
 }
 
 int main()
 {
 
 char w[1];
 DDRA=0x00;
 PORTA=0x00;
 DDRD=0x00;
 PORTD=0xFF;
 DDRB=0xF0;
 PORTB=0x00;
 DDRE = 0b00110000;
 PORTE = 0b00100000;
 
 lcd_init(16);
 
 lcd_gotoxy(5,0);
 lcd_putsf("Hello!");
 delay_ms(3000);
 while(1) {
 q=0;
 lcd_clear();
 lcd_putsf("_ 1 _ 2 _ 3 _");
 delay_ms(10);
 
 if (!(PINA & 0b00000001)) { //Пуск
 lcd_clear();
 lcd_putsf("_ 1 _");
 delay_ms(1000);
 while(PINA.1==1){ //Стоп
 SREG.7 = 1;
 EIMSK = 0x01;
 EICRA = 0x0C;
 EICRB = 0x0C;
 }
 while(PINA & 0b00000100){ //Сброс
 lcd_clear();
 EIMSK = 0x00;
 sprintf(w,"adc= %d\n",q);
 lcd_puts(w);
 delay_ms(50);
 }
 lcd_clear();
 lcd_putsf("_ 3 _");
 delay_ms(2000);
 }
 
 
 }
 return 0;
 }
Считает но далеко неправельно

что делаю не так?








 )
 )