Advertisement
duke

behajici ledka, SPS, fixed

Dec 17th, 2010
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*.include "nios_macros.s"*/
  2. .equ LEDR_BASE, 0x10000000
  3. .equ SW_BASE, 0x10000040
  4. .equ LED_COUNT, 17
  5. .equ LAST_DRAM_WORD, 0x7FFFFC
  6.  
  7. .text                           /* executable code follows */
  8.     .global _start
  9. _start:
  10.     /* initialize base addresses of parallel ports */
  11.     movia       r10, SW_BASE        /* SW slider switch base address */
  12.     movia       r12, LEDR_BASE      /* red LED base address */
  13.     movia       sp, LAST_DRAM_WORD
  14.     movia       r2, 1
  15.     movia       r5, 1 /* start led position */
  16.     movia       r6, 0 /* smer */
  17.     movia       r15, 0  /* porovnavac ledky vs switche*/
  18.     movia       r16, LED_COUNT
  19.     movia       r17, LED_COUNT
  20.  
  21. LOOP:
  22.     ldwio       r7, 0(r10) /* load switches*/
  23.     stwio       r5, 0(r12) /*ulozeni do ledek*/
  24.  
  25.     call        WAITING
  26.  
  27.     beq         r6, r0, LEFT
  28.     beq         r6, r2, RIGHT
  29.     br          LOOP
  30.  
  31. RIGHT:
  32.     roli        r5, r5, 31 /* posun ledky doprava*/
  33.     addi        r16, r16,1 /* ledka o jednu vyssi*/
  34.     and         r15, r7, r5 /* pokud je ledka nad sepnutym switchem bude vysledek nenulovy*/
  35.     beq         r16, r17, MOVELEFT /* pokud na okraji zmen smer*/
  36.     bne         r15, r0, MOVELEFT /*pokud nad switchem zmen smer*/     
  37.     br          LOOP
  38.  
  39. LEFT:
  40.     roli        r5, r5, 1 /* posun ledky doleva*/
  41.     addi        r16, r16,-1 /* ledka o jednu nizsi*/
  42.     and         r15, r7, r5 /* pokud je ledka nad sepnutym switchem bude vysledek nenulovy*/
  43.     beq         r16, r0, MOVERIGHT /* pokud na okraji zmen smer*/
  44.     bne         r15, r0, MOVERIGHT /*pokud nad switchem zmen smer*/
  45.     br          LOOP
  46.  
  47. MOVELEFT:
  48.     movia       r6, 0
  49.     br          LOOP
  50.    
  51. MOVERIGHT:
  52.     movia       r6, 1
  53.     br          LOOP
  54.        
  55.  WAITING:
  56.     stw         r18,0(sp)
  57.     addi        sp, sp, -4
  58.     movia       r18, 10000000
  59.    
  60. WAIT1:
  61.     addi        r18, r18, -1
  62.     bne         r18, r0, WAIT1
  63.     addi        sp, sp, 4
  64.     ldw         r18,0(sp)
  65.     ret
  66.  
  67. .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement