#include<mega128.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
unsigned long q;
interrupt [EXT_INT0] void ext_int0_isr(void) // процедура обработки прерывания
{
q++; //с каждым прерыванием значение переменной увеличивается на 1
}
int main()
{
char w[32]; //для преобразования числа в строку/символы
DDRA=0x00;
PORTA=0x00;
DDRB=0xF0;
PORTB=0x00;
DDRE = 0b00110000;
PORTE = 0b00100000;
lcd_init(16);
lcd_gotoxy(5,0);
lcd_putsf("Hello!");
Privet();
delay_ms(3000);
while(1) {
q=0;
lcd_clear();
Go();
lcd_putsf(" ");
Stop();
lcd_putsf(" ");
Reset();
delay_ms(10);
if (!(PINA & 0b00000001)) { //Пуск
lcd_clear();
Go();
delay_ms(1000);
SREG.7 = 1;
EIMSK = 0x01;
EICRA = 0x0C;
EICRB = 0x0C;
while(PINA & 0b00000100){ //Сброс
lcd_clear();
sprintf(w,"adc= %d\n",q);
lcd_puts(w);
delay_ms(50);
}
lcd_clear();
Reset();
delay_ms(2000);
}
}
return 0;
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20