roboforum.ru

Технический форум по робототехнике.

Непонятки с таймером и кнопкой

Непонятки с таймером и кнопкой

d3xr » 13 авг 2011, 02:31

16 мега, подключен 7 сегментный индикатор на 4 разряда и кнопка. Кварц на 16мег. компилятор cvavr. Функция вывода числа работает верно, например
Код: Выделить всёРазвернуть
print(751);

Но при выполнении того же действия при нажатии кнопки происходит что то совсем не понятное моему разуму: число 0751 выводится поразрядно, начиная с младшего, с задержкой около секунды и после отрисовки и отпускания кнопки остается висеть на индикаторе (я ожидал 0000 увидеть)

Пожалуйста, не могли бы вы посмотреть код и сказать, что в нем не то?
Код: Выделить всёРазвернуть
if (PINA.1==0) print(751); 


Код: Выделить всёРазвернуть
    #include <mega16.h> 
    #include <delay.h>

unsigned char segment[10]= { 0x40,0x76,0xC,0x24,0x32,0x21,0x1,0x74,0x0,0x20 }, data[4]= {0,0,0,0};       
     

     void cifra(int z)

    PORTC=0xFF;   
    PORTC = segment[z];
    delay_ms(5);
   
}
   
   void print(int n)
{

data[0]=n%10; n = n/10;   
data[1]=n%10; n = n/10;   
data[2]=n%10; n = n/10;     
data[3]=n%10;   
   
}


   
   void initialization()
   {     
DDRC=0xFF;
PORTC=0xFF;
DDRA=0xFD;             
PORTA=0xFD; 
   
TCCR0=0x05;
TCNT0=0x16;
OCR0=0x00;
TIMSK=0x01;
     
#asm("sei");
   } 
 

    void main(void)       
{
    initialization(); 
   
while (1)
      {         
      if (PINA.1==0) print(751);     
      }   



interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{

TCNT0=0x16;

PORTA=0x10; cifra(data[0]);
PORTA=0x20; cifra(data[1]);
PORTA=0x40; cifra(data[2]);
PORTA=0x80; cifra(data[3]);




}

Re: Непонятки с таймером и кнопкой

d3xr » 16 авг 2011, 21:29

разобрался, можно закрыть


cron
Rambler\'s Top100 Mail.ru counter