Advertisement
Sothian

Untitled

Oct 14th, 2019
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <io.h>
  3. #include <system.h>
  4. #include <definitions.h>
  5.  
  6. int main() {
  7.     printf("Hello from Nios II!\n");
  8.  
  9.     /* Stan do sprawdzenia jaki przycisk jest wciśnięty */
  10.     int state = 0;
  11.  
  12.     /* Pętla nieskończona w której działa program */
  13.     while(1) {
  14.         /* Pobranie panelu switchów */
  15.         int switches = IORD(SW_SLIDERS_BASE,0);
  16.         /* Odczyt który slajder został użyty */
  17.         state = switches & (SW0|SW1|SW2|SW3|SW4|SW5|SW6);
  18.  
  19.         /* Robienie czegoś w zależności jaki slider został użyty */
  20.         switch(state) {
  21.             case 0:
  22.                 /* Reset wszystkich diod i segmentów, żaden slider nie został użyty*/
  23.                 /* !!!UWAGA!!!
  24.                     Jeśli jest jakiś problem z odczytywanie tych nazw LEDS_GREEN itp to używamy adresów typu 0x00000030, które można odczytać w Qsys lub z pliku system.h znajdującego się w bibliotece BSP danego projektu)
  25.                 */
  26.                 IOWR(LEDS_GREEN_BASE,0,0);
  27.                 IOWR(LEDS_RED_BASE,0,0);
  28.                 IOWR(HEX_3_BASE,0,0);
  29.                 break;
  30.             case 1:
  31.                 /* Zapala diode na pozycji 0 przy uzyciu slidera na pozycji 0 */
  32.                 IOWR(LEDS_RED_BASE,0,LED0);
  33.  
  34.                 /* Instrukcja segmentów HEX:
  35.                         Pierwszy z lewej: Po prostu nazwa zdefiniowanej cyfry lub liczby HEX__
  36.                         Drugi od lewej: (HEX__ << 8)
  37.                         Trzeci z lewej: (HEX__ << 16)
  38.                         Czwarty z lewej: (HEX__ << 24)
  39.                     Na przykład:
  40.                     IOWR(HEX_3_BASE, (HEX3 << 24) | (HEX2 <<16) | (HEX1 <<8) |HEX0);
  41.                     Wyświetli: |0|1|2|3|
  42.                 */
  43.                 IOWR(HEX_3_BASE,0,HEX1);
  44.  
  45.                 if((switches & SW7) && (switches & SW8)) {
  46.                     IOWR(LEDS_RED_BASE,0,LED17);
  47.                     IOWR(HEX_3_BASE,0,((HEXE<<24) | (HEXr<<16) | (HEXr<<8)));
  48.                 } else if(switches & SW7) {
  49.                     IOWR(LEDS_RED_BASE,0,LED7);
  50.                     IOWR(HEX_3_BASE,0,(HEXA<<8));
  51.                 } else if(switches & SW8) {
  52.                     IOWR(LEDS_RED_BASE,0,LED8);
  53.                     IOWR(HEX_3_BASE,0,(HEXF<<8));
  54.                 }
  55.                 break;
  56.             case 2:
  57.                 IOWR(LEDS_RED_BASE,0,LED1);
  58.                 IOWR(HEX_3_BASE,0,HEX2);
  59.                 break;
  60.             case 4:
  61.                 IOWR(LEDS_RED_BASE,0,LED2);
  62.                 IOWR(HEX_3_BASE,0,HEX3);
  63.                 break;
  64.             case 8:
  65.                 IOWR(LEDS_RED_BASE,0,LED3);
  66.                 IOWR(HEX_3_BASE,0,HEX4);
  67.  
  68.                 if(((switches & SW9) && (switches & SW10)) ||
  69.                         ((switches & SW9) && (switches & SW11)) ||
  70.                         ((switches & SW9) && (switches & SW12)) ||
  71.                         ((switches & SW10) && (switches & SW11)) ||
  72.                         ((switches & SW10) && (switches & SW12)) ||
  73.                         ((switches & SW11) && (switches & SW12))) {
  74.                     IOWR(LEDS_RED_BASE,0,LED17);
  75.                     IOWR(HEX_3_BASE,0,((HEXE<<24) | (HEXr<<16) | (HEXr<<8)));
  76.                 } else if(switches & SW9) {
  77.                     IOWR(LEDS_RED_BASE,0,LED9);
  78.                     IOWR(HEX_3_BASE,0,((HEXC<<16)| (HEX1 <<8)));
  79.                 } else if(switches & SW10) {
  80.                     IOWR(LEDS_RED_BASE,0,LED10);
  81.                     IOWR(HEX_3_BASE,0,((HEXC<<16)| (HEX2 <<8)));
  82.                 } else if(switches & SW11) {
  83.                     IOWR(LEDS_RED_BASE,0,LED11);
  84.                     IOWR(HEX_3_BASE,0,((HEXD<<16)| (HEX1 <<8)));
  85.                 } else if(switches & SW12) {
  86.                     IOWR(LEDS_RED_BASE,0,LED12);
  87.                     IOWR(HEX_3_BASE,0,((HEXD<<16)| (HEX2 <<8)));
  88.                 }
  89.                 break;
  90.             case 16:
  91.                 IOWR(LEDS_RED_BASE,0,LED4);
  92.                 IOWR(HEX_3_BASE,0,HEX5);
  93.                 break;
  94.             case 32:
  95.                 IOWR(LEDS_RED_BASE,0,LED5);
  96.                 IOWR(HEX_3_BASE,0,HEX6);
  97.                 break;
  98.             case 64:
  99.                 IOWR(LEDS_RED_BASE,0,LED6);
  100.                 IOWR(HEX_3_BASE,0,HEX7);
  101.                 break;
  102.             default:
  103.                 /* Reset diod niebieskich, zapalenie ostatniej diody czerwonaj i wyświetlenie na HEX "Err"*/
  104.                 IOWR(HEX_3_BASE,0,((HEXE<<16) | (HEXr<<8) | HEXr));
  105.                 IOWR(LEDS_RED_BASE,0,0);
  106.                 IOWR(LEDS_RED_BASE,0,LED17);
  107.                 break;
  108.         }
  109.     }
  110.  
  111.     return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement