IProgrammatori.it

Forum programmazione

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

It is currently Mon Mar 15, 2010 9:43 pm

All times are UTC + 2 hours




Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: [Asm z80] Interfacciare interrupt
PostPosted: Wed Apr 23, 2008 8:43 pm 
Newbies
Joined: Sun Apr 13, 2008 2:28 pm
Posts: 6

Code:
;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


Offline
 Profile  
 Post subject: Re: [Asm z80] Interfacciare interrupt
PostPosted: Mon Aug 25, 2008 8:59 am 
Moderatore
Joined: Tue Jun 27, 2006 11:52 am
Posts: 259

complimentoni..........

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

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


Offline
 Profile  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC + 2 hours


 Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: