Advertisement
Guest User

Untitled

a guest
Jun 20th, 2011
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.50 KB | None | 0 0
  1. #include <avr/io.h>
  2. //#include <avr/iotn2313a.h>
  3. #include <util/delay.h>
  4. #include <avr/interrupt.h>
  5.  
  6. #define PCIE1 3
  7.  
  8. uint8_t digits[] = {
  9.         //      63,6,91,79,102,109,125,7,127,111};
  10.         119,66,93,94,106,62,63,82,127,126};
  11. volatile uint8_t loop;
  12.  
  13. /*ISR(PCINT_A_vect, ISR_NAKED) {
  14.         loop++; reti();
  15. }*/
  16.  
  17. ISR(TIMER0_OVF_vect)
  18. {
  19.         loop++;
  20. }
  21.                
  22. /*ISR_ALIASOF(PCINT_A_vect));
  23. EMPTY_INTERRUPT(BADISR_vect);
  24. */
  25.  
  26. void showDigit(uint8_t pos, uint8_t digit) {
  27.         PORTB = digits[digit];
  28.         PORTD = 0b11111 & ((uint8_t) ~_BV(pos));
  29. }
  30.  
  31. void showNumber(uint8_t num) {
  32.         uint8_t i = 0;
  33.         do {
  34.                 //PORTB = digits[i];
  35.                 //PORTD = ((uint8_t) ~_BV(num % 10));
  36.                 showDigit(i++, num % 10);
  37.                 num /= 10;
  38.                 i++;
  39.         } while (num > 0);
  40. }
  41.  
  42.  
  43. int main(void) {
  44.         // ports output
  45.         DDRB = 0xFF; // all pins
  46.         DDRD = 0xFF; // are outputs
  47.         DDRA = 0x01;
  48.  
  49.         //timer
  50.         GTCCR           = _BV(PSR10);  // clear timer
  51.         TCCR0B  = _BV(CS00) | _BV(CS02); // prescaler 1/1024
  52.         TIMSK           = _BV(TOIE0);   // timer overflow interrupt
  53. /*
  54.         // interrupt
  55.         GIMSK           |= _BV(PCIE1);   // pin change interrupt
  56.         PCMSK1  |= _BV(PCINT9); // pin change for PINA2
  57.         */
  58.         sei();  // enable interrupts
  59.  
  60.         while (1) {
  61.                 //_delay_ms(500);
  62.                 showNumber(loop);
  63.         }
  64.  
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement