/*****************************************************
CodeWizardAVR V2.04.4a
Chip type : ATmega8
AVR Core Clock frequency: 4,000000 MHz
*****************************************************/
#include <mega8.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include // библиотека задержки
#include // стандартная библиотека вывода символов на экран
unsigned char lcd_buffer[16];
unsigned int pokazometr=0;
unsigned char iii=0;
eeprom unsigned int kol_VKL=0;
void main(void)
{
PORTB=0b00000000; //подтяжка
DDRB=0b00000000; //выход
PORTC=0b00000011;
DDRC=0b00000000;
PORTD=0b00000000;
DDRD=0b00000000;
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
kol_VKL++;
lcd_gotoxy(0,0);
lcd_putsf("c2.at.ua");
lcd_gotoxy(0,1);
lcd_putsf("START MK.");
while (iii<200) {iii+=1;
delay_ms(8);}; //задержка надписи
lcd_clear();
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/2048k
#pragma optsize-
WDTCR=0x1F;
WDTCR=0x0F;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
while (1)
{
#asm("wdr"); //Сбрасываем счетчик WDT
pokazometr++;//Счетчик работы МК, - показометр
sprintf(lcd_buffer,"pokazometr=%i",pokazometr); // записуем в масив показания на экран
lcd_gotoxy(0,0); // указали место на дисплее
lcd_puts(lcd_buffer); // выводим масив на LCD
sprintf(lcd_buffer,"kol_VKL.=%i",kol_VKL); // записуем в масив показания на экран
lcd_gotoxy(0,1);
lcd_puts(lcd_buffer); // выводим масив на LCD
// delay_ms(30);
if(PINC.0==0) while (1) {} //имитируем зависание
if(PINC.1==0) { //
pokazometr=0;
kol_VKL=0; //обнуляем счетчик включений
lcd_clear();
}
};
}