Advertisement
peppe1992

Esercizio 1 - Sistemi elettronici

May 9th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 3.10 KB | None | 0 0
  1.  ;================================================
  2. ;Sistemi Elettronici
  3. ;File di base per la scrittura di applicazioni per
  4. ;il microcontrollore AT90S8535
  5. ;
  6. ;================================================
  7.  
  8. ;================================================
  9. ;include del file standard di definizione dei
  10. ;nomi dei registri
  11.  
  12. .include "8535def.inc"
  13. ;================================================
  14.  
  15.  
  16. ;==============
  17. ;definizione delle variabili. La Memoria Ram
  18. ; inizia dall'indirizzo esadecimale 60
  19.  
  20. .DSEG
  21. .ORG 0x60
  22.  
  23.  
  24.  
  25. ;=============
  26.  
  27. ;=================================================
  28. ;Interrupt jump table;
  29. ;questa sezione di codice deve essere
  30. ;caricata in memoria programma a partire dall'indirizzo $000
  31.  
  32. .CSEG
  33. .ORG 0x000
  34.     rjmp    RESET   ;Reset        Handle $000
  35.     rjmp    int_0   ;INT0         Handle $001
  36.     reti            ;INT1         Handle $002
  37.     reti            ;TIMER2 COMP  Handle $003
  38.     reti            ;TIMER2 OVF   Handle $004
  39.     reti            ;TIMER1 CAPT  Handle $005
  40.     reti            ;TIMER1 COMPA Handle $006
  41.     reti            ;TIMER1 COMPB Handle $007
  42.     reti            ;TIMER1 OVF   Handle $008
  43.     reti            ;TIMER0 OVF   Handle $009
  44.     reti            ;SPI STC      Handle $00A
  45.     reti            ;UART RX      Handle $00B
  46.     reti            ;UART UDRE    Handle $00C
  47.     reti            ;UART TX      Handle $00D
  48.     reti            ;ADC          Handle $00E
  49.     reti            ;EE_RDY       Handle $00F
  50.     reti            ;ANA_COMP     Handle $010
  51. ;==========================================================
  52. ;
  53. ;  
  54. ; Here main program starts
  55.  
  56. RESET:
  57. ;===========================
  58. ; la prima operazione da compiere in ogni caso e'
  59. ; l'inizializzazione dello Stack pointer
  60.  
  61. ;Setting Stack Pointer
  62.  
  63.     ldi r16, low(RAMEND)
  64.     out SPL, r16
  65.     ldi r16, high(RAMEND)
  66.     out SPH, r16
  67. ; done
  68. ;===========================
  69.  
  70.  
  71.  
  72. ;========Inizio programma principale================
  73.  
  74. DOVE: .DW 0b0101010101010101
  75.  
  76.  
  77. ;CONFIGURAZIONE DELLE PORTE (A-B IN USCITA, D INGRESSO)
  78.  
  79. ser r16
  80. out ddra, r16
  81. out ddrb, r16
  82. com r16         ;complemento a 1
  83. out ddrd, r16
  84.  
  85. ;LEGGO IL VALORE DALLA MEMORIA E SETTO DUE REGISTRI AL VALORE 8
  86.  
  87. ldi zh, high(DOVE*2)
  88. ldi zl, low(DOVE*2)
  89. lpm  ;carica la parte bassa o alta dell'indirizzo di memoria dell'etichetta DOVE
  90. mov r17, r0
  91. inc zl
  92. lpm
  93. mov r16,r0
  94.  
  95. ldi r18, 0x09
  96. ldi r19, 0x09
  97. clr r22
  98. ;CONFIGURO LE INTERRUPT
  99.  
  100. in r25, gimsk           ;carico il gimsk su r16
  101. ori r25, 0b01000000     ;faccio un ori fra r16 e quel valore binario
  102. out gimsk, r25          ;carico in gimsk il contenuto di r16
  103. sei                     ;abilito le interrupt
  104.  
  105.  
  106. ;PROGRAMMA PRINCIPALE        
  107.  
  108. wait:  rjmp wait
  109.  
  110. ;QUANDO AVVIENE L'INTERRUPT
  111.  
  112. int_0:          
  113.    
  114.     ;SALVO I REGISTRI  
  115.  
  116.     push r16
  117.     push r17
  118.     push r18
  119.     push r19
  120.  
  121.     hdata:
  122.         lsl r16
  123.         dec r18
  124.         brcs cerca_0H
  125.         breq ldata
  126.         rjmp hdata
  127.  
  128.     cerca_0H:
  129.         lsl r16
  130.         dec r18
  131.         breq coppia_centrale
  132.         brcs cerca_0H
  133.         inc r22
  134.         rjmp hdata
  135.  
  136.     coppia_centrale:
  137.         lsl r17
  138.         dec r19
  139.         brcs cerca_0L
  140.         inc r22
  141.         rjmp ldata
  142.  
  143.     ldata:
  144.         lsl r17
  145.         dec r19
  146.         brcs cerca_0L
  147.         breq fine_conteggio
  148.         rjmp ldata
  149.  
  150.     cerca_0L:
  151.         lsl r17
  152.         dec r19
  153.         brcs cerca_0L
  154.         breq fine_conteggio
  155.         inc r22
  156.         rjmp ldata
  157.    
  158.    
  159.     fine_conteggio:
  160.         loop: rjmp loop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement