Facebook
From Lousy Leopard, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 201
  1. /*
  2. * GccApplication2.c
  3. *
  4. * Created: 03.10.2018 18:02:37
  5. * Author : student
  6. */
  7.  
  8. #include <avr/io.h>
  9. #include <inttypes.h>
  10. #include <avr/interrupt.h>
  11. #include <avr/sleep.h>
  12.  
  13.  
  14. // te makra wywołuje framework
  15. // tu piszemy minimum kodu, resztę wewnątrz pętli w main()
  16. // komunikacja pomiędzy tymi funkcjami za pomoca zmiennych globalnych volatile
  17.  
  18.  
  19.  
  20. int tablica[] = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B  };
  21. volatile int ix = 0;
  22. volatile int sw1=0;
  23. volatile int sw2=0;
  24. ISR(INT0_vect)
  25. {
  26.         ix=9;
  27.         TIMSK=_BV(OCIE1A);
  28.         OCR1A=0x7A0;
  29.        
  30. }
  31.  
  32.  
  33. ISR(INT1_vect)
  34. {
  35.         OCR1A=0x3D0;
  36. }
  37.  
  38. ISR(TIMER1_COMPA_vect)
  39. {
  40. if(ix>0)
  41.         ix--;
  42. TCNT1=0;
  43.  
  44. }
  45.  
  46.  
  47. int main(void)
  48. {
  49.         // same jedynki => ustawiamy na wyjście
  50.         DDRB=0xFF;
  51.  
  52.        
  53.        
  54.         //PORTB=tablica[ix];
  55.  
  56.         // 4 jedynki, 4 zera => 4 doiody powinny sie zapalic
  57.  
  58.         sei();
  59.        
  60.        
  61.         TCNT1=0;
  62.        
  63.  
  64.         TCCR1A = _BV(WGM10)|_BV(WGM11);
  65.         TCCR1B = _BV(CS12) | _BV(CS10) | _BV(WGM13) | _BV(WGM12);
  66.  
  67.        
  68.         PORTB=~0x1;
  69.         //TIMER1_COMPA_vect
  70.         MCUCR = _BV(ISC11) | _BV(ISC01);
  71.         GICR = _BV(INT0) | _BV(INT1);
  72.        
  73.         OCR1A=0x7A0;
  74.         while (1)
  75.         {
  76.  
  77.                 sleep_mode();
  78.         //      TIFR=_BV(OCIE1A);
  79.         /*      if(sw1==1){
  80.                        
  81.                         TCNT1=0;
  82.                         OCR1A=0x7A0;
  83.                         sw1=0;
  84.                 }
  85.                 if(sw2==1){
  86.                        
  87.                         TCNT1=0;                                                                                                                                                                                                                                                                                  
  88.                         OCR1A=0x2620;
  89.                         sw2=0;
  90.                 }
  91.         */
  92.                
  93.                
  94.                 //PORTB = PORTB<<1;
  95.                 PORTB=tablica[ix];
  96.                
  97.                 if(ix==0)
  98.                         TIMSK=~_BV(OCIE1A);            
  99.  
  100.         }
  101. }