Advertisement
Moreno132

Labos5

Jun 4th, 2023 (edited)
1,670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 2.33 KB | Software | 0 0
  1.         ORG     0x0
  2.         B       INIT            
  3.  
  4.         ORG     0x18
  5.         B       PREKID
  6.  
  7. INIT    MSR     CPSR, #0b10010010;prelazak u nacin rada IRQ
  8.         MOV     SP, #0xFC00;inicijalizacija IRQ stoga
  9.         MSR     CPSR, #0b10010011;prelazak u SVC način rada
  10.         MOV     SP, #0x10000;inicijalizacija SVC stoga
  11.        
  12.         ;inicijalizacija DMAC-a
  13.         LDR     R0, DMAC;dohvaćanje adrese DMAC-a
  14.         LDR     R1, IU;
  15.         STR     R1, [R0, #16];source
  16.         MOV     R1, #M1
  17.         STR     R1, [R0, #20];destination
  18.         LDR     R1, SIZE ;blok od 4 podataka i 16 podataka
  19.         STR     R1, [R0, #24]
  20.         MOV     R1, #0b11100110; IE=1, DRE=1, TW=10, SI=0, DI = 1, DRI=10
  21.         STR     R1, [R0, #28];spremi config
  22.         ;inicijalizacija vanjske jedinice
  23.         LDR     R1, IU
  24.         MOV     R2, #32
  25.         STR     R2, [R1, #4]        
  26.         ;omogućavanje IRQ prekida
  27.         MRS     R1, CPSR;
  28.         BIC     R1, R1, #0x80
  29.         MSR     CPSR, R1;
  30.         ;pokreni DMA
  31.         MOV     R1, #1
  32.         STR     R1, [R0, #0]
  33.  
  34. GLAVNI  MOV     R11, #11;
  35. LOOP    SUBS    R11, R11, #1
  36.         BEQ     LOOP
  37. CEKAJ   LDR     R1, COUNT
  38.         CMP     R1, #2; ako je završen drugi prijenos završi program
  39.         BNE     CEKAJ ; ako DMA-prijenos još traje => čekaj
  40. KRAJ    SWI     0x123456
  41.  
  42. PREKID  STMFD   SP!, {R0, R1, LR}
  43.         LDR     R0, DMAC
  44.         STR     R0, [R0, #4];obriši stanje spremnosti
  45.         LDR     R1, COUNT;dohvati brojač prekida
  46.         CMP     R1, #0;usporedi sa 0 (ovo je prvi prekid)
  47.         BLEQ    ZAMJENA;ako jest reinicijaliziraj DMAC
  48.         ADD     R1, R1, #1
  49.         STR     R1, COUNT;povećaj brojač prekida za 1
  50.         LDMFD   SP!, {R0, R1, LR}
  51.         SUBS    PC, LR, #4
  52.  
  53. ZAMJENA STMFD   SP!, {R1};prima adresu DMAC-a preko R0
  54.         MOV     R1, #M2
  55.         STR     R1, [R0, #20]
  56.         ;pokreni DMA
  57.         MOV     R1, #1
  58.         STR     R1, [R0, #0]
  59.         LDMFD   SP!, {R1}
  60.         MOV     PC, LR
  61.  
  62. DMAC    DW      0x00FF0000;adresa DMACA
  63. IU      DW      0xFFFF0D00;adresa ulazne jedinice
  64. OU      DW      0xFFFF0C00;adresa izlazne jedinice
  65. M1      DW      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  66. M2      DW      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  67. COUNT   DB      0;brojač prijenosa
  68. SIZE    DW      0x2010
  69.  
  70.      
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement