проверка кода
Добавлено: Вт янв 08, 2013 23:52:57
я только начал пробовать себя в программировании мк, вот код сам конечно не писал а брал из разных примеров по кускам т правил всё методом тыка но в протеусе всё пашет время только за пол часа спешит на секунду ну это я думаю настрою, прозьба проверить код, может там мусора лишнего куча так как многое я совсем не знаю или что не так (не забываем я учюсь)
вот код может что лишнее или чего не хватает, или вообще не правильно (но в протеусе работает)
вот код может что лишнее или чего не хватает, или вообще не правильно (но в протеусе работает)
Код: Выделить всё
//таймер на mega8535
#include <mega8535.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
int s = 0;
int m = 0;
int ch = 0;
const int sim=-2;
// начало прерывания
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
s++;
if(s>59)
{
s=0;
m++;
}
else if(m>59)
{m=0;
ch++;}
else if(ch>59)
{ch=0;}
TCNT1H=0;
TCNT1L=0;
}
// конец прерывания
void main(void)
{
TCCR1A=0x00;
TCCR1B=0x05; //вроде пред делитель (это мне известно)
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x03; //вот этим я настраивал синхронность времени
OCR1AL=0xcd; //вот этим я настраивал синхронность времени
TIMSK=0x10;
lcd_init(8);
#asm("sei")//разрешаем прерывания (это мне известно)
while (1)
{
////////////////////////////////////лсд
lcd_gotoxy(0,0);
lcd_putchar(s/10+0x30); //вывод секунд
lcd_putchar(s%10+0x30); //вывод секунд
lcd_putchar(sim%10+0x30);//вывод точка разделитель
lcd_putchar(m/10+0x30); //вывод минут
lcd_putchar(m%10+0x30); //вывод минут
lcd_putchar(sim%10+0x30); //вывод точка разделитель
lcd_putchar(ch/10+0x30); //вывод часов
lcd_putchar(ch%10+0x30);//вывод часов
///////////////////////////////лсд
};
}