Advertisement
desdemona

swim zad2

Mar 7th, 2013
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.28 KB | None | 0 0
  1. #include <p18f4520.h>
  2. #include <timers.h>
  3. #include <usart.h>
  4. #include <delays.h>
  5.  
  6. int counter = 0;
  7.  
  8. char tmp;
  9. char maska = 0xF0;
  10. #define BUTTON_PORT PINC
  11. #define BUTTON_LINE 0
  12. void timer_isr (void);
  13.  
  14. #pragma code high_vector = 0x08
  15. #pragma config LVP = OFF, DEBUG = OFF
  16.  
  17. void high_interrupt (void)
  18. {
  19.     _asm GOTO timer_isr _endasm
  20. }
  21.  
  22. #pragma code
  23. #pragma interrupt timer_isr
  24.  
  25. void timer_isr (void)
  26. {
  27.     counter++;
  28.     if (counter == 255)
  29.     {
  30.         counter = 0;
  31.     }
  32.     INTCONbits.TMR0IF = 0;
  33. }
  34.  
  35.  
  36. void delay()
  37. {
  38.     int i, j;
  39.     for(i=0; i<=400; i++)
  40.     {
  41.     }
  42. }
  43. //char liczby[16] = { 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xC0 };
  44. char liczby[16] = { 0xB0, 0xF8, 0x83, 0x8E, 0xA4, 0x82, 0x88, 0x86,  0xF9,  0x92, 0x90, 0xA1, 0xC0,  0x99, 0x80, 0xC6};
  45.  
  46.  
  47. char data[4] = {   0xB0, 0xF9, 0xC0, 0xA4  };
  48.  
  49. void CheckKeyboards(char* data, int position)
  50. {  
  51.  
  52.     if((PORTB & 0x08) == 0x00)
  53.     {
  54.         data[3] = data[2];
  55.         data[2] = data[1];
  56.         data[1] = data[0];
  57.         data[0] = liczby[position * 4];
  58.     }
  59.     if((PORTB & 0x04) == 0x00)
  60.     {
  61.         data[3] = data[2];
  62.         data[2] = data[1];
  63.         data[1] = data[0];
  64.         data[0] = liczby[position * 4 + 1];
  65.     }
  66.     if((PORTB & 0x02) == 0x00)
  67.     {
  68.         data[3] = data[2];
  69.         data[2] = data[1];
  70.         data[1] = data[0];
  71.         data[0] = liczby[position * 4 + 2];
  72.     }
  73.     if((PORTB & 0x01) == 0x00)
  74.     {
  75.         data[3] = data[2];
  76.         data[2] = data[1];
  77.         data[1] = data[0];
  78.         data[0] = liczby[position * 4 + 3];
  79.     }
  80.     //Delay10KTCYx(1);
  81. }
  82.  
  83. void Print(char* data)
  84. {
  85.     LATB = 0xEF;
  86.     LATD = data[0];
  87.     //Delay10KTCYx(1);
  88.     delay();
  89.    
  90.     LATB = 0xDF;
  91.     LATD = data[1];
  92.     //Delay10KTCYx(1);
  93.     delay();
  94.    
  95.     LATB = 0xBF;
  96.     LATD = data[2];
  97.     //Delay10KTCYx(1);
  98.     delay();
  99.    
  100.     LATB = 0x7F;
  101.     LATD = data[3];
  102.     //Delay10KTCYx(1);
  103.     delay();
  104. }  
  105.  
  106. void main(void)
  107. {
  108.     int i=0;
  109.     TRISB = 0x0F;
  110.     TRISD = 0x00;
  111.    
  112.    
  113.     INTCON2bits.RBPU = 0x0;
  114.     ADCON1bits.PCFG0 = 0x1;
  115.     ADCON1bits.PCFG1 = 0x1;
  116.     ADCON1bits.PCFG2 = 0x1;
  117.     ADCON1bits.PCFG2 = 0x1;
  118.    
  119.     //INTCONbits.GIE = 1;
  120.     while (1)
  121.     {
  122.        
  123.         LATB = 0xEF;
  124.         CheckKeyboards(data, 0);
  125.        
  126.         LATB = 0xDF;
  127.         CheckKeyboards(data, 1);
  128.        
  129.         LATB = 0xBF;
  130.         CheckKeyboards(data, 2);
  131.        
  132.         LATB = 0x7F;
  133.         CheckKeyboards(data, 3);
  134.        
  135.         for(i=0; i<4; i++)
  136.         {
  137.         Print(data);
  138.         }
  139.         //Delay10KTCYx(1);
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement