Ср июн 20, 2007 18:24:48
Ср июн 20, 2007 19:03:29
Ср июн 20, 2007 19:43:40
Negor писал(а):И ещё вопрос. Чтоб создать обработчик прерывания в CodeVision нужно:
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
PORTB|=1<<PORTB.0;
}
а вот где взять список правильно написанных вторых частей строки(выделенно) а то мне компилятор выдал interrupt vector exceeds allowable range
Ср июн 20, 2007 19:45:21
Aheir писал(а):Да вроде как CodeWizard обычно их сам правильно пишет...
Чт июн 21, 2007 05:08:47
Negor писал(а):Имхо уж очень легко ты разкидываешся таймерами... я понимаю, если бы их было штук восемь... а так два таймера(я изучаю тини2313) и, как правильно заметил ARV один просто будет молотить и энергия расходуется в никуда...
Чт июн 21, 2007 20:30:42
Вт июн 26, 2007 17:01:41
Ср июн 27, 2007 07:03:46
Ср июн 27, 2007 11:34:37
Negor писал(а):Попробую перейти на ICC
Чт июн 28, 2007 12:36:16
Сб июл 14, 2007 18:48:23
Сб июл 14, 2007 20:03:37
Пн июл 16, 2007 17:38:29
TCNT1H=С2;
TCNT1L=F7;
TCCR1B=(1<<CS12);
#include<tiny2313>
#include<delay>
unsigned char i=0,j=0;
unsigned char Digit[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};
unsigned char FrstState,ScndState,RealState,Flag;
unsigned char ScndH=0xC2,ScndL=0xF7;
void KeyState(void)
{
FrstState=~PIND;
ScndState=FrstState & ~PIND;
RealState=(ScndState) & ~(Flag);
Flag=ScndState;
}
void OutFrst(unsigned char Digit)
{
PORTD|=0x03;
PORTB=Digit;
PORTD&=0x7e;
}
void OutScnd(unsigned char Digit)
{
PORTD|=0x03;
PORTB=Digit;
PORTD&=0x7d;
}
interrupt [TIM0_OVF] void timer0_ovf_isr (void)
{
OutFrst(Digit[i]);
delay_us(25);
OutScnd(Digit[j]);
}
interrupt [TIM1_OVF] void timer1_ovf_isr (void)
{
i++;
if (i>9)
{
i=0;
j++;
};
if (j>5) j=0;
TCNT1H=ScndH;
TCNT1L=ScndL;
}
void main(void)
{
TCNT1H=ScndH;
TCNT1L=ScndL;
DDRB=0xff;
DDRD=0x03;
PORTD=0x7f;
#asm("SEI");
TIMSK=(1<<TOIE0)|(1<<TOIE1);
TCCR0B=(1<<CS00);
TCCR1B=(1<<CS12>9)
{
i=0;
j++;
};
if (j>9) j=0;
KeyState();
}
}
Пн июл 16, 2007 18:05:25
Negor писал(а):ТОв.tych, зачем в начале прерывания останавливать таймер, записывать в него значение а потом запускать?
Разве нельзя просто в конце прерывания записать нужное значение в рег. таймера как сделал я?
Пн июл 16, 2007 18:09:26
Negor писал(а):С таким кодом циферки меняются оч. долго... секунды 3-4...
Пн июл 16, 2007 18:36:03
Обновлять число в таймере нужно в начале обработчика прерывания.
Прверьте на какой частоте работает МК.
Пн июл 16, 2007 18:51:04
Пн июл 16, 2007 18:52:11
Negor писал(а):Обновлять число в таймере нужно в начале обработчика прерывания.
Пробовал... не помогает...
Пн июл 16, 2007 19:39:24
Пн июл 16, 2007 22:44:30