  | 
   L'analisi del codice (puoi scorrerlo con la 
  barra laterale) 
  mette in evidenza la tecnica utilizzata per garantire il ritardo con 
  esattezza: 
      | si predispone il
  Canale2 del 
  
  
  Timer di Sistema per generare un 
  impulso (Modo 000) 
    e per contare indietro in binario; la programmazione del 
    Timer inizia sempre con la scrittura 
  della parola di comando del suo 
    Registro di Controllo (porta 
    0043H) |  
      | per poter esercitare il servizio č poi necessario 
    predisporre il latch di temporizzazione (a 16 bit)  con il 
  valore presente in ingresso in BX; 
    poichč la porta d'accesso del latch č di soli 8 
  bit, per scriverci bisogna fare 2 accessi di I/O, prima con la 
    parte bassa e 
  poi con la parte alta |  
      | la scrittura della porta B 
    dell'interfaccia 8255 (=61H) 
    dą il comando di partenza:
        | ponendo il bit0=1 
    il clock 
  (un segnale di 1,19318 MHz, pari ad periodo di 
    838,1ns) č reso disponibile in ingresso 
    al
  Canale2 del Timer |  
        | ponendo il bit1=0 
    si evita che l'uscita del contatore venga spedita all'altoparlante, cosa 
    ovviamente inopportuna |  
     
     |  
   
  
      | da questo istante il contatore 
    comincia a decrementare il valore della  
  costante preimpostata, ad ogni impulso di
    clock; contemporaneamente la sua uscita, 
    alta a riposo, 
  va  bassa e rimane a questo livello fino 
    al momento in cui il conteggio raggiunge il valore
  0000H |  
      | il valore corrente del conteggio 
  viene letto in continuazione in un
  loop d'attesa; per questo č necessario fornire 
    ogni volta la relativa 
  parola di comando al 
  Registro di Controllo (porta 
  0043H) |  
      | per scoprire quando il conteggio raggiunge il valore
  0000H ho dovuto 
  inventarmi un non facile algoritmo 
  di verifica: non sono infatti
  riuscito a rilevare 
  lo stato logico del segnale generato dal
  Canale2; secondo la letteratura esso 
  dovrebbe essere campionabile attraverso il bit5 
  della porta C dell'interfaccia
  8255 (=62H), ma la lettura 
  di questo registro non ha dato risultati (?!) |  
      | quando il contatore ha ultimato il suo
  conteggio indietro la sua
  uscita torna a 1 |  
      | in condizioni normali il 
  contatore viene ricaricato automaticamente con la  
  costante ancora presente nel suo latch, 
  ricominciando un nuovo conteggio; in questa procedura invece non č necessario: 
  il ritardo programmato si č 
  consumato regolarmente |  
      | un nuovo intervento sui bit della 
    porta B dell'interfaccia 8255 
    (=61H) pone fine alle operazioni:
        | ponendo il bit0=0 
    il clock viene tolto dall'ingresso al
  Canale2 del Timer |  
        | ponendo il bit1=0 
    si ribadisce l'esclusione funzionale dell'altoparlante |  
     
     |  
   
   |