Прошу обрамлять тексты программ тегами Code. akl
Написал программу на С в CVAVR смоделировал в протеусе, всё работает, посмотрите пожалуйста, оцените насколько грамотно/неграмотно сделал, походу надо кварц часовой прикручивать, или пойдёт такая схемка?#include <mega16.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
int i;
int sek;
int min;
int ch;
char lcd_buffer[5];
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xFF;
i++;
if(i>30){i=0; sek++;}
}
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x7;
DDRD=0x00;
TCCR0=0x05;
TCNT0=0xFF;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x01;
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
#asm("sei")
while (1)
{delay_ms(100);
if (PIND.0==0){delay_ms(300); sek++;}
if (PIND.1==0){delay_ms(300); min++;}
if (PIND.2==0){delay_ms(300); ch++;}
if (sek>59){sek=0;min++;}
if (min>59){min=0; ch++;}
if (ch>23){ch=0;}
sprintf(lcd_buffer,"%d:%d:%d",ch,min,sek);
lcd_clear();
lcd_puts(lcd_buffer);
};
}