IProgrammatori.it

Forum programmazione

Forum di supporto alla programmazione in generale e nei principali linguaggi.

Oggi è ven set 03, 2010 1:34 pm

Tutti gli orari sono UTC + 2 ore




   [ 2 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: [Asm z80] Interfacciare interrupt
MessaggioInviato: mer apr 23, 2008 8:43 pm 
Newbies
Iscritto il: dom apr 13, 2008 2:28 pm
Messaggi: 6

Codice:
;Come la CPU riconosce una richiesta di interruzione?
;Tramite 2 ingressi INT e NMI sui quali dispositivi esterni inviano le proprie richieste di interruzione

;Programmato da Numa

INIT1: LD A,0C3H                 ;il primo byte è il codice dell'istruzione di salto
       LD(0038H),A               ;indirizzo della routine di servizio #1
       LD IY,SERV1
       IM1
       EX AF,AF'                 ;fissa il formato per gli spazi vuoti
       LD A,40H
       EX AF,AF'
       JP MAIN                   ;salta al MAIN

MAIN: EI                         ;abilita le interruizioni
      LD IX,DSTACK               ;fondo stack dati
      LD (IX+00H),OFF H          ;temporizzatore x visualizzazione
      LD HL,ADDH                 ;predispone il puntatore del buffer
      LD A,I
      JP E,HIGH
LOW:  LD(HL),00H
      JR NEXT
HIGH: LD (HL),10H
NEXT: DEC HL                     ;sposta il puntatore del buffer
      DEC (HL)                   ;decrementa COUNT
      LD (DATAL),SP              ;trascrive SP nel buffer
      LD HL,LEDL                 ;predispone HL x CONVDI
      LD DE,ADDH                 ;predisponde DE per CONVDI
DISABL: NOP
      CALL CONVDI
DLOOP: CALL DISPL
      DEC (IX,00H)               ;un altro temporizzatore xD
      JR NZ,DLOOP
      JP MAIN                    ;salta indietro all'indirizzo del programma

SERV1: PUSH BC
       PUSH DE                   ;salva i registri della CPU
       PUSH HL
       PUSH AF
       PUSH IX
       PUSH IY
DS1:   INC IX
       INC IX                           ;aggiorna lo stack pointer
       INC IX
       NOP
       LD (IX+00H),OFFH                 ;predisponde il tempo di DLOOP1, CLOOP1, DLOOP1
       LD (IX+01H),O0AH
CLOOP1: LD (IX+02H),O2H
       LD HL,ADDH       
       LD A,I                           ;valore di IFF2
       JP PE,HIGH1
LOW1:  LD (HL),00H                      ;valore=0
       JR NEXT1
HIGH1: LD (HL),10H                      ;valore=1
NEXT1: DEC HL                           ;sposta il puntatore del buffer
       INC (HL)                         ;incrementa ADDL
       LD (DATAL),SP                    ;trascrive lo stack pointer nel buffer
       LD HL,LEDL                       ;predispone HL e poi DE per CONVDI
       LD DE,ADDH
       CALL CONVDI
DLOOP: CALL DISPL
       DEC (IX+00)                      ;altro temp.
       JR NZ,DLOOP1
       DEC (IX+02)
       JR NZ,DLOOP1
       DEC (IX+02)                      ;temp. per routine di servizio
       JR NZ,CLOOP1
       POP IY
       POP IX
       POP AF
       POP HL
       POP DE
       POP BC
       EI                               ;abilita le int
       RETI                             ;torna all'int.


;NUMA



Numa sarei io :P

_________________
http://numa.insanedevelopers.net


   
 Oggetto del messaggio: Re: [Asm z80] Interfacciare interrupt
MessaggioInviato: lun ago 25, 2008 8:59 am 
Moderatore
Iscritto il: mar giu 27, 2006 11:52 am
Messaggi: 261

complimentoni..........

madonna santa l'assembly ke incubo......

_________________
per qualsiasi consiglio, problema riguardante prodotti microsoft visitate http://www.windowsolution.org


   
Visualizza ultimi messaggi:  Ordina per  
   [ 2 messaggi ] 

Tutti gli orari sono UTC + 2 ore


 Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a: