Don't like ads? PRO users don't see any ads ;-)
Guest

esercizio_19

By: a guest on Jun 17th, 2012  |  syntax: ASM (NASM)  |  size: 2.71 KB  |  hits: 83  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Esercizio 19
  2. Un processore PD32 è responsabile del controllo della saturazione del gas all’interno di una stanza. Per
  3. far questo utilizza quattro sensori di gas disposti lungo il perimetro della stanza. Ogni SENSORE, una
  4. volta avviato, interromperà il processore PD32 al superamento di una soglia fissata e preprogrammata
  5. nella fase d’inizializzazione del sistema. Tale soglia è definita: SOGLIA. La saturazione del gas è
  6. definita come un valore positivo a 16 bits. Il servizio associato all’interruzione è il seguente: il
  7. processore preleva il valore della saturazione prodotto dal sensore che ha generato l’interruzione e
  8. calcola la media tra esso e le ultime tre rilevazioni degli altri sensori. Se questa nuova media supera
  9. quella calcolata durante la gestione dell’interruzione precedente, il PD32 scrive il valore 1 (su 32 bit)
  10. su una periferica di output ALLARME, sincrona e direttamente interfacciata al processore. In caso di
  11. non superamento scrive il valore 0 (su 32 bit) sulla stessa periferica ALLARME.
  12. Per semplicità si ipotizzi che i valori iniziali associati alle quattro saturazioni precedentemente rilevate
  13. siano SAT_SENS e che il valore iniziale della media delle saturazioni sia SAT_MEDIA.
  14. Il sistema deve essere ciclico, in altre parole a ogni rilevazione bisogna riattivare il sensore per un
  15. nuovo monitoraggio.
  16. Tutti i driver sono non interrompibili.
  17. Progettare:
  18. - il SCA dell’interfaccia di un SENSORE e ALLARME;
  19. - il software di attivazione del sistema, ed i driver di tutti i sensori;
  20. Suggerimento: utilizzare una subroutine per il calcolo della media.
  21.  
  22.  
  23.  
  24. ORG 400H
  25.  
  26. SE1     EQU     0H
  27. SE2     EQU     1H
  28. SE3     EQU     2H
  29. SE4     EQU     3H
  30. ALARM   EQU     4H
  31. VAL     EQU     500H
  32. SATSENS EQU     X
  33. SATMED  EQU     Y
  34.  
  35.  
  36. CODE
  37.         JSR INIT
  38. LOOP:   NOP
  39.         JMP LOOP
  40.  
  41. INIT:   PUSH R0
  42.  
  43.         MOVL #VAL,R0
  44.         MOVW #SATSENS,(R0)
  45.         MOVW #SATSENS,2(R0)
  46.         MOVW #SATSENS,4(R0)
  47.         MOVW #SATSENS,6(R0)
  48.         MOVW #SATMED,8(R0)
  49.  
  50.         START SE1      
  51.         START SE2      
  52.         START SE3      
  53.         START SE4
  54.  
  55.         OUTL #0,ALARM  
  56.  
  57.         POP R0
  58.         RET
  59.  
  60. MEDIA:  PUSH R0
  61.         PUSH R1
  62.         PUSH R2
  63.  
  64.         MOVL #VAL, R0
  65.         MOVW R0, R1
  66.         MOVW 8(R0), R2
  67.        
  68.         ADDW 2(R0), R1
  69.         ADDW 4(R0), R1
  70.         ADDW 6(R0), R1
  71.         LSRW #2,R1
  72.        
  73.         SUBW R1,R2
  74.         JNC C0
  75.         JMP NOSUP
  76. C0:     JNZ Z0
  77.         JMP NO SUP
  78. Z0:     OUTL #1, ALARM         
  79.         JMP EXIT
  80. NOSUP:  OUTL #0, ALARM
  81. EXIT:   MOVW R1, 8(R0)
  82.         POP R2 
  83.         POP R1 
  84.         POP R0
  85.         RET
  86.  
  87.         HALT
  88.  
  89. DRIVER SE1, 700H
  90.         PUSH R0
  91.         MOVL #VAL, R0
  92.         INW SE1, (R0)
  93.         JSR MEDIA
  94.         START SE1
  95.         POP R0
  96.         RTI
  97.        
  98. DRIVER SE2, 800H
  99.         PUSH R0
  100.         MOVL #VAL, R0
  101.         INW SE2, 2(R0)
  102.         JSR MEDIA
  103.         START SE2
  104.         POP R0
  105.         RTI
  106.  
  107. DRIVER SE3, 900H
  108.         PUSH R0
  109.         MOVL #VAL, R0
  110.         INW SE3, 4(R0)
  111.         JSR MEDIA
  112.         START SE3
  113.         POP R0
  114.         RTI    
  115.  
  116. DRIVER SE4, 1000H
  117.         PUSH R0
  118.         MOVL #VAL, R0
  119.         INW SE4, 6(R0)
  120.         JSR MEDIA
  121.         START SE4
  122.         POP R0
  123.         RTI
  124.        
  125.  
  126.         END