 Per comprendere appieno questa documentazione leggere l'articolo :  

                " ALFAPIC manipolatore CW con memoria "  
          di Pierluigi Felletti IW4AA  e  Marino Cenci IW4BIF  

 pubblicato sulla rivista tecnica  " radiokit elettronica "   

 n.  10  OTTOBRE  2004   alle pagine  70 ,  71 ,  72  e  73 .    


 ------------------------------------------------------------------  
 <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>  
 ------------------------------------------------------------------  



>>>>>>>>>>>>  DOCUMENTAZIONE PER IL PROGRAMMA ALFAPIC.ASM  <<<<<<<<<<<<<<  



           CORRISPONDENZA TRA PULSANTI & INTERRUTTORI DI  
       FIGURA 1 ( CIRCUITO ATTUATORE ) E COMANDI DI FIGURA 2 ( disegno )  


  
in FIGURA 1          *  in FIGURA 2
  
ASCEE                *  ASCOLTO MESSAGGI & CARATTERI  
  
SAVEBUF              *  SALVA ( la memoria volatile - buffers - viene 
                     *          copiata o salvata nella EEPROM-dati )  
  
1-3  1-4             *  RAPPORTO PUNTO-LINEA  1-3  1-4  
  
MEMOMAN              *  MANUALE  o  MEMORIA  ( modo o modalit )  
  
AZZBUFF              *  AZZERA ( memoria volatile oppure EEPROM-dati )  
  
out BF / out ON-OFF  *  TIPO DI USCITA :  BF  o  TX  
  
MANPJ                *  manuale GIAMBICO  o  manuale PURO  
  
finePAROLA           *  PAROLA ( per segnalare fine della PAROLA =  
                                               fine CAR + pausa lunga )  
  
fineCAR              *  CAR ( per segnalare fine carattere CW )  
  





<<<<<<<<<<<<<<<<<<<<<<<<<  ALFAPIC.ZIP  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  


ALFAPIC.ZIP  contiene i seguenti files :  

  **  nella cartella TEMP  

- ALFAPIC.DOC  documentazione del programma in formato WIN Word ;  
- ALFAPIC.TXT  documentazione del programma in formato ASCII ;  
               ( da leggere per esempio con l'editor edit del DOS )  
- CONDENSATORI.BMP  schema citato nella Nota D)  di questa documentazione ;  
- P16F84.INC   varie direttive e definizioni usate nel programma 
               ( file indispensabile per il compilatore MPASM ) .  


  **  nella cartella SCHEMI  
  
  SCHEMI A BLOCCHI PRINCIPALI  ( diagrammi di flusso ) :    
                   ----------  

  codice nome del file    descrizione  
  ------ -------------    -----------  
- 0      GENERALE.BMP     schema a blocchi generale ;  
- 0a     azzeraBUF.BMP    azzeramenti / settaggi iniziali ;  
- A      INIZIO.BMP       prima parte del LOOP-2 ;  
- B      RIPROD.BMP       seconda parte del LOOP-2 ;  
- B1     QUALEBUFFER.BMP  scelta del registro buffer-xy da ascoltare ;  
- B2     TITA.BMP         routine usata dal LOOP-2 per la riproduzione 
                          dei PUNTI e delle LINEE ;  
- B3     CWCAR.BMP        riproduzione di un carattere CW dai buffers-xy ;  
- C      INTERUPT.BMP     schema a blocchi degli interrupts ( LOOP-1 ) ;  
- C1     SALVACAR.BMP     copia dei caratteri CW nei buffers-xy ;  
- C2     C2.BMP           interrupt di fine CARattere e di fine PAROLA ;  
- E1     E1.BMP           salva buffers-xy nella EEPROM-dati del PIC ;  
- E1a    COPIABUF.BMP     routine per copiare i registri buffers-xy nella 
                          EEPROM-dati del PIC ;  
- E2     E2.BMP           ascolto o riproduzione dei caratteri CW dalla 
                          EEPROM-dati ;  
- E3     E3.BMP           cancellazione o azzeramento della EEPROM-dati 
                          del PIC .  

Vengono fornite due ( 2 ) versioni di questo programma :  
una veloce nella cartella VELOCE e una pi lenta nella cartella LENTA .  

Nella versione veloce di ALFAPIC la pausa per la fine di un carattere 
 di circa 0,2 secondi e il  " ciclo anti-rimbalzo "  di ritardo 
( ripetuti azzeramenti del registro ANTIRS ) viene eseguito 31 volte .  
Leggere a questo proposito la Nota D) .  
Con il tasto usato da Pierluigi IW4AA ,  il valore 31 decimale  
( + 2 condensatori da 33.000 pF )  VA BENE .  
Con tasti dotati di miglior meccanica si pu scendere ,  
per esempio ,  anche a 15 decimale .  Bisogna provare .  

Nella versione lenta invece la pausa  di circa 0,4 secondi e il 
" ciclo anti-rimbalzo "  di ritardo viene eseguito 127 volte .  

Per la pausa di fine carattere leggere le istruzioni della routine  
SETTAWT  e le istruzioni che precedono la label  ML_VAI:  
nel file sorgente ALFAPIC.ASM .  

Per il  " ciclo anti-rimbalzo "  leggere invece le istruzioni 
successive alla label  Fine_ih:   e   la routine  
RITARDO  nel file sorgente ALFAPIC.ASM .  



All'interno di ciascuna cartella abbiamo altre due ( 2 ) cartelle :  
512Hz versione con tono di B.F. a 512 Hz ( tono medio ) ,  
1024Hz versione con tono di B.F. a 1.024 Hz ( tono acuto ) .  


Come gi indicato ,  tutti gli schemi a blocchi sono nella 
cartella SCHEMI .  Invece i files di documentazione  
ALFAPIC.TXT  e  ALFAPIC.DOC sono nella cartella TEMP .  

Vediamo la struttura completa delle cartelle :  


LENTA  ( cartella )  

   512Hz  ( cartella )  
      ALFAPIC.ASM  
      ALFAPIC.HEX  

   1024Hz  ( cartella )  
      ALFAPIC.ASM  
      ALFAPIC.HEX  


SCHEMI  ( cartella )  
    azzeraBUF.BMP  
    C2.BMP  
    COPIABUF.BMP  
    CWCAR.BMP  
    E1.BMP  
    E2.BMP  
    E3.BMP  
    GENERALE.BMP  
    INIZIO.BMP  
    INTERUPT.BMP  
    QUALEBUFFER.BMP  
    RIPROD.BMP  
    SALVACAR.BMP  
    TITA.BMP  


TEMP  ( cartella )  
  ALFAPIC.DOC  
  ALFAPIC.TXT  
  CONDENSATORI.BMP  
  P16F84.INC  


VELOCE  ( cartella )  

    512Hz  ( cartella )  
       ALFAPIC.ASM  
       ALFAPIC.HEX  
    
    1024Hz  ( cartella )  
       ALFAPIC.ASM  
       ALFAPIC.HEX  



Come si vede dallo schema a blocchi generale ( file GENERALE.BMP ) ,  
nel programma sono implementate 2 diverse modalit di funzionamento :  

                   modo MEMORIA e modo MANUALE .  

Il modo MANUALE a sua volta pu essere PURO o GIAMBICO ( iambic ) .  
In modalit MANUALE il programma funziona come un semplicissimo e 
tradizionale manipolatore CW .  Invece in modalit GIAMBICA viene 
attivato il funzionamento giambico ( o iambic in lingua inglese ) .  

Completano il modo MANUALE le seguenti possibilit :  
1) ascolto o riproduzione dei caratteri CW salvati nella EEPROM-dati  
   del PIC ( schema a blocchi nel file grafico E2.BMP ) ;  
2) cancellazione o azzeramento della EEPROM-dati del PIC  
   ( schema a blocchi nel file grafico E3.BMP ) .  



In modalit MEMORIA invece viene attivata la memoria punto-linea .  
ALFAPIC memorizza in 10 registri interni i punti e le linee .  
In pratica questi dieci registri vengono usati come buffers veloci 
di memoria .  Un registro o buffer per ogni carattere CW completo !  
A questi dieci registri si fa riferimento con il termine BUFfers-xy ,  
ove xy indica un numero da 1 a 10 .  Nel sorgente ( file ALFAPIC.ASM )  
questi registri vengono chiamati in questo modo :  

; Buffers di memoria per salvare i caratteri CW "ICAR" immessi  
; e accettati dal ALFAPIC .  
; MEMORIA VOLATILE per i caratteri CW immessi .  
BUF1    RES     1
BUF2    RES     1
BUF3    RES     1
BUF4    RES     1
BUF5    RES     1
BUF6    RES     1
BUF7    RES     1
BUF8    RES     1
BUF9    RES     1
BUF10   RES     1
;


Due sono i LOOP principali eseguiti dal programma in modalit MEMORIA .  
 
  LOOP-1 per memorizzare PUNTI e/o LINEE      LOOP-2 per l'ascolto o la 
         (  gestito tramite interrupts )            riproduzione dei 
                                                     caratteri CW dai 
                                                     BUFfers-xy 

       ------>--------                             ------>-------- 
       I             I                             I             I 
       I             I                             I             I 
       I    CTRCW    I                             I    PNTRIP   I 
       I             I                             I             I 
       I             I                             I             I 
       ------<--------                             ------<-------- 
 
Nel registro CTRCW ,  ALFAPIC  conta i caratteri CW completi immessi 
                                                    --------  
dall'utilizzatore e memorizzati nei BUFfers-xy .  Arrivati a 10 ,  
se si continua ,  il programma ricomincia da 1 .  Quindi l'undicesimo 
carattere rimpiazza il primo ,  il dodicesimo il secondo e cos via .  

Nel registro PNTRIP ,  ALFAPIC  conta i caratteri riprodotti ,  
cio gi fatti ascoltare .  

In parole povere ,  questi due ( 2 ) registri sono dei "puntatori" ,  
che mi dicono dove sono all'interno dei LOOP .  
                           
All'accensione del circuito ,  effettuati gli azzeramenti o settaggi 
iniziali ( schema a blocchi nel file grafico azzeraBUF.BMP  e  label 
Azzeramenti:  del sorgente ALFAPIC.ASM ) ,  il programma confronta 
i puntatori dei 2 loop :  

                           CTRCW  =  PNTRIP ?  
  
   SI' ===>  faccio ascoltare i Punti e/o le Linee leggendo i bit 
             ( 0 = Punto ,  1 = Linea ) dal registro "ICAR"  ( INLP )  
             - "ICAR" = carattere CW in "costruzione" -  
             oppure direttamente dalle stesse palette del tasto/paddle .  
             Ovviamente all'inizio ,  cio all'accensione del PIC ,  
             CTRCW = PNTRIP = 0-zero  !   
 
   NO  ===>  Devo riprodurre ,  cio far ascoltare ,  i caratteri CW 
             dai  registri  BUFfers-xy  gi  utilizzati .  

Osservare lo schema a blocchi della parte iniziale ( file INIZIO.BMP ) 
e il diagramma di flusso per la gestione dei BUFfers ( file RIPROD.BMP ) .  

Riassumendo :  

 INIZIO.BMP  per la prima parte del LOOP-2 ;  
 TITA.BMP  routine usata dal LOOP-2 per la riproduzione 
           dei PUNTI e/o delle LINEE ;  
 RIPROD.BMP  per la seconda parte del LOOP-2 ;  
 QUALEBUFFER.BMP  per la scelta del registro buffer-xy da ascoltare ;  
 CWCAR.BMP  per la riproduzione di un carattere CW dai buffers-xy .  

In modo MEMORIA ,  disattivando l'ASCOLTO il LOOP-2 non viene eseguito .  



>>>>>>>>>>>>>>>>>>>>>>>>  INTERRUPTS Punto-Linea  <<<<<<<<<<<<<<<<<<<<<<<  


In modalit MEMORIA ,  il programma ALFAPIC abilita gli interrupts delle 
linee RB4-RB7 .  RB4 per i PUNTI ,  RB5 per le LINEE ,  RB6 per indicare 
la fine di un CARattere  e  RB7 per indicare la fine di una PAROLA .  

Per il LOOP-1 ,  parte gestita tramite interrupts sulle linee RB4-RB7 ,  
esaminare / studiare i seguenti schemi a blocchi :  

 INTERUPT.BMP  schema a blocchi degli interrupts ;  
 SALVACAR.BMP  copia dei caratteri CW completati nei buffers-xy ;  
 C2.BMP  interrupt di fine CARattere  e  di fine PAROLA ;  
 E1.BMP  salvataggio dei registri buffers-xy nella EEPROM-dati del PIC ;  
 COPIABUF.BMP  routine per copiare i registri buffers-xy nella EEPROM .  

Vedere lo schema a blocchi del file  C2.BMP  per la gestione 
degli interrupts di fine CARattere ( linea RB6 )  e  
di fine PAROLA ( linea RB7 ) .  


Pertanto il registro INTCON    

  bit 7  GIE  = Global Interrupt Enable 
  bit 6  EEIE = EEprom Interrupt Enable 
  bit 5  T0IE = TMR0 Interrupt Enable 
  bit 4  INTE = INTErrupt RB0 
  bit 3  RBIE = RB linee da 4 a 7 Interrupt Enable 
  bit 2  T0IF = Interrupt Flag per TMR0 
  bit 1  INTF = INTerrupt Flag per RB0 
  bit 0  RBIF = Interrupt Flag per RB4-RB7 
  
viene impostato nel seguente modo :  

        movlw   10001000B
        movwf   INTCON

Queste 2 istruzioni equivalgono a :  

        BSF     INTCON,GIE   ( bit 7 )  
        bcf     INTCON,EEIE  ( bit 6 )  
        bcf     INTCON,T0IE  ( bit 5 )  
        bcf     INTCON,INTE  ( bit 4 )  
        BSF     INTCON,RBIE  ( bit 3 )  
        bcf     INTCON,T0IF  ( bit 2 )  
        bcf     INTCON,INTF  ( bit 1 )  
        bcf     INTCON,RBIF  ( bit 0 )  





  IN FASE DI INTERRUPT :  

        contatto         contatto         contatto  
         chiuso           chiuso           chiuso  
 
  +5 Vcc          pausa            pausa            pausa    
  Ŀ       Ŀ       Ŀ           
                                               
                                               
   0 Vcc - - -   - - -   - - -  > tempo  
          LINEA            PUNTO           PUNTO  
 
        routine di       routine di       routine di  
        interrupt        interrupt        interrupt  
       PUNTO-LINEA      PUNTO-LINEA      PUNTO-LINEA  
 
 
  IN FASE DI ASCOLTO :  
 
           BF a 512 Hz    pausa             pausa             pausa    
         Ŀ       Ŀ       Ŀ    
                                                       
                                                       
  0                                     > tempo  
              LINEA     silenzio   PUNTO  silenzio   PUNTO    
 
  Notare che la LINEA di Bassa Frequenza  pi lunga della durata  
  della chiusura del contatto della paletta delle LINEE .  
 
  Anche il PUNTO di Bassa Frequenza pu essere pi lungo della durata 
  della chiusura del contatto della paletta dei PUNTI .  





>>>>>>>>>>>>>>>>>  OSCILLATORE ESTERNO A QUARZO  <<<<<<<<<<<<<<<<<<<<  
                   ----------------------------  
 

ALFAPIC usa un oscillatore esterno a quarzo .  Il quarzo XTAL usato 
( MHz 4,194304 )  disponibile ,  per esempio ,  presso le 
Radioforniture Romagnole di Forl ( 0543-33211 ) .  A luglio 2004 
questi quarzi costavano 60 centesimi di euro + IVA  cadauno .  

Il programma  ALFAPIC  effettua le seguenti divisioni .  

  quarzo  XTAL  da  4,194304 MHz = 4.194.304 Hz ( quarzo "binario" )  
  4.194.304 / 4   = 1.048.576 Hz  hardware del PIC  
  1.048.576 / 256 = 4.096 Hz      PRESCALER del PIC  
  4096 / 256      = 16 Hz         TIMER0 ( registro TMR0 )  
  16 / 16         = 1 Hz          eventuale contatore per i secondi 
                                          ( registro )  
 
bit-7  bit-6  bit-5  bit-4  bit-3 bit-2  bit-1  bit-0 <-  registro TMR0  
   16     32     64    128    256   512   1024   2048 <-  frequenza in Hz  
 

Attivando l'interrupt del timer ( registro TMR0 ) ,   possibile 
stabilire delle pause precise per gestire la stabilizzazione meccanica 
dei contatti punto-linea ( istruzioni anti-rimbalzo ) e anche per 
considerare completo un carattere CW .  Per esempio ,  con un quarzo 
da 4,194304 MHz si hanno questi tempi :  

   Ŀ 
    WT2    secondi                   ESEMPIO :  
   Ĵ 
     18    1,125      
     17    1,0625     
     16    1          
     15    0,9375     
     14    0,875      
     13    0,8125     
     12    0,75       
     11    0,6875     
     10    0,625      <------------  durata della pausa di fine CAR 
      9    0,5625                    con ASCOLTO attivato  
      8    0,5        
      7    0,4375     
      6    0,375      <------------  durata della pausa di fine CAR 
      5    0,3125                    con ASCOLTO disattivato  
      4    0,25       
      3    0,1875     
      2    0,125      <------------  pausa lunga per ANTI-RIMBALZO  
      1    0,0625     <------------  pausa breve per ANTI-RIMBALZO  
    


Tuttavia ,  i sedici ( 16 ) interrupts al secondo del timer ( TMR0 ) ,  
"disturbano"  la nota di BF in altoparlante ,  cio interferiscono con 
la Bassa Frequenza .  E anche se ascoltando con un cicalino ( buzzer ) 
il problema non si manifesta ,  visto che  possibile gestire il tutto 
via software ,  Pierluigi IW4AA ,  dopo alcune prove ,  ha preferito 
rinunciare all'interrupt di TMR0 e implementare via software la pausa 
per la fine di un carattere e anche il ritardo  " anti-rimbalzo " .  




>>>>>>>>>>>>>>>>>>>>>>>>  USCITE DI ALFAPIC  <<<<<<<<<<<<<<<<<<<<<<<<<<<<  
 

ALFAPIC ha due ( 2 ) linee di uscita :  una per un LED rosso e un'altra  
                                        per altoparlante o cicalino .  

USCITA PER ALTOPARLANTE O CICALINO O TX .  

  Uscita su linea o porta RA2 del PIC ,  cio piedino numero 1 .  
 
  L'uscita di un PIC 16F84(A) pu essere di tipo source o sink .  
                                                      

  Per SOURCE si intende una corrente che esce da un pin del PIC e 
  va verso massa passando attraverso un carico esterno ,  
  per esempio un altoparlante o un cicalino ( buzzer ) .  
  In SOURCE il PIC 16F84(A) pu pilotare direttamente un carico 
  esterno con 20 mA a 5 Vcc = 100 mW .  
 
  Per SINK si intende una corrente esterna che da un positivo entra 
  in un pin del PIC quando questo  a 0 Vcc .  
  In SINK il PIC 16F84(A) pu pilotare direttamente un carico esterno 
  con 25 mA a 5 Vcc = 125 mW .  
  
  Come si vede dal circuito attuatore ( figura 1 dell'articolo ) ,  
  l'uscita di ALFAPIC sul piedino 1 ( linea RA2 ) del PIC 
   di tipo SINK .  Quindi possiamo assorbire al massimo 25 mA a 5 Vcc .  
            ----  
  Diciamo circa 125 mW .  Se non basta ,  usare l'uscita RA2 del PIC  
  per pilotare un oscillatore esterno di nota con frequenza a piacere .  
  Leggere anche la Nota F) di questa documentazione .  
  
  Leggere anche il documento Microchip DS30430C-page 1 intitolato  

        " MICROCHIP                               PIC16F8X "  
        "     18-pin Flash/EEPROM 8-Bit Microcontrollers   " .    




                            Nota A) 
In modo MEMORIA e con l'ASCOLTO attivato la pausa da fare affinch 
il programma "capisca" che il carattere in corso  stato completato 
 pi lunga che con l'ASCOLTO disattivato .  Ho ritenuto infatti ( IW4AA ) 
che ,  se si stanno ascoltando i punti e le linee ,  la manipolazione 
sul tasto non sia troppo veloce ,  ovvero che punti e linee immessi/e 
siano solo quelli/e del carattere CW in corso .  
Se si desidera procedere in modo pi veloce ,  usare il pulsante 
CAR oppure il pulsante PAROLA per dire al programma ALFAPIC che 
il carattere in corso  stato completato .  Oppure disattivare 
momentaneamente l'ASCOLTO dei caratteri immessi .  

Non  una questione di memoria punto-linea ,  ma solo di carattere 
completato .  Il programma cio deve sapere quando un carattere CW 
 stato completato .  Ben quattro ( 4 ) gli eventi che indicano 
il completamento di un carattere CW .  Eccone l'elenco :  

 1) INLP = 6 ;  
 2) pulsante RB6 ( fine CARattere ) ;  
 3) pulsante RB7 ( fine PAROLA = fine CARattere + pausa lunga ) ;  
 4) azzeramento di WT2 .  

Punto 1) .  
Nessun carattere del codice Morse  composto da pi di 6 punti-linee .  
Perci se INLP = 6  ( INLP = registro in cui ALFAPIC conteggia i punti 
e le linee di ogni carattere )  il carattere CW  completo !  

Punto 2) .  
Il pulsante CAR ( linea RB6 ) indica al programma che il carattere 
 stato completato .  ALFAPIC memorizza immediatamente il carattere 
in un BUFfer-xy .                       --------------  

Punto 3) .  
Il pulsante PAROLA ( linea RB7 ) indica al programma che non solo 
il carattere  stato completato ma anche la parola .  Per cui 
ALFAPIC considera completo il carattere e aggiunge anche la pausa 
di fine parola .  Anche in questo caso ALFAPIC memorizza immediatamente 
il carattere in un BUFfer-xy .                           --------------  

Punto 4) .  
I registri WT1 e WT2 vengono usati per il conteggio di una pausa di circa 
0,2 / 0,4 secondi .  Il conteggio di questa pausa ricomincia dall'inizio 
ogni volta che viene premuta una paletta del tasto ( punto o linea ) .  
L'azzeramento del registro WT2 indica la fine di questa pausa di circa 
0,2 / 0,4 secondi .  Per cui il programma considera completato o 
terminato il carattere CW  e  lo salva in un BUFfer-xy .  

Ma se immetto per esempio 3 linee ( lettera O ) e poi ,  prima che un 
brevissimo lampo del LED rosso mi indichi fine pausa cio CAR completato ,  
immetto 3 punti ( lettera S )  il programma  ALFAPIC  "vedr"  in totale 
3 linee + 3 punti = 6 punti-linee ( INLP = 6 ) quindi fine carattere .  
Ma se tale sequenza di punti-linee non dovesse corrispondere a nessun 
carattere dell'alfabeto Morse ,  ascoltereste in altoparlante il 
messaggio di errore ,  cio 7 punti = errore .  E in effetti ,  in 
questo esempio ,  tre linee e tre punti  ---...  non corrispondono 
a nessun carattere dell'alfabeto Morse .  



                            Nota B) 
In caso di carattere CW errato ( la cosa viene segnalata VISIVAMENTE  
con l'accensione del LED rosso e ACUSTICAMENTE con 7 punti = errore ) ,  
la riproduzione dello stesso ( carattere ) pu essere troncata !  
                                                      --------  



                            Nota C) 
Oltre ai casi a) ,  b) ,  c)  e  d)  spiegati nell'articolo ,  
una breve accensione del LED rosso di stop pu avvenire anche in 
questo caso :  mentre il PIC sta eseguendo le istruzioni della 
prima parte del LOOP-2 ,  CTRCW e PNTRIP non hanno pi lo stesso 
valore a causa di una rapida serie di interrupts .  
Dovrebbe essere un evento eccezionale e rarissimo !  



                            Nota D) 
Con la versione veloce di questo programma  ( file ALFAPIC.HEX della 
cartella VELOCE )  pu capitare che ,  immettendo un punto o una linea ,  
il programma ne  "senta"  due ( 2 ) o pi !  Prima di caricare nel PIC 
la versione lenta  ( file ALFAPIC.HEX della cartella LENTA ) ,  provare 
a collegare in parallelo ai contatti punto e linea del tasto due ( 2 ) 
condensatori allo scopo di assorbire o eliminare ( eventuali ) micro 
scintille .  Valori suggeriti :  
da 10.000 pF ( 15 nF ) fino a 33.000 pF ( 33 nF ) ,  25 / 50 VL .  
Per essere ancora pi chiaro ,  un condensatore fra il contatto del punto 
e la massa ,  l'altro fra il contatto della linea e la massa .  
Osservare lo schema nel file grafico  CONDENSATORI.BMP  .    



                            Nota E) 
I caratteri CW ascoltati / riprodotti vengono  " marcati "  come gi 
ascoltati ,  per cui se vogliamo ascoltarli pi volte dobbiamo prima 
salvarli nella EEPROM-dati del PIC e poi ascoltarli in modalit MANUALE .  



                            Nota F) 
Le linee RB4 ,  RB5 ,  RB6  ed  RB7 vengono gestite mediante interrupts .  
In caso di manipolazione veloce ,  i numerosi interrupts generati possono 
"disturbare" ( o interferire con ) la riproduzione delle note punto-linea 
in altoparlante .  Per ovviare a questo inconveniente si pu 
disattivare l'ASCOLTO dei caratteri in modo MEMORIA e ascoltarli solo 
in un momento di pausa oppure selezionare TIPO DI USCITA = TX e poi 
usare l'uscita RA2 del PIC per pilotare un oscillatore esterno di 
nota con frequenza a piacere .  



                            Nota G) 
ALFAPIC.ASM segnala acusticamente e visivamente tramite un LED ( rosso ) 
l'eventuale errore in fase di scrittura/lettura della EEPROM-dati del PIC .  
Una sequenza di sette punti ,  pausa ,  altri sette punti ,  pausa 
e cos via ( .......   .......   .......   eccetera ) indica errore in fase 
di scrittura della EEPROM-dati ,  cio che il carattere registrato nella 
EEPROM-dati NON  uguale all'originale .  Poich la MICROCHIP dichiara per 
la memoria EEPROM dei PIC16F8X ben  10.000.000  di cicli di scrittura o di 
cancellazione ,  questo errore dovrebbe essere rarissimo !  
Nonostante ci ,  la stessa MICROCHIP ,  nel documento DS30430C-page 35 ,  
consiglia di verificare subito quanto scritto in EEPROM-dati .  Cosa che 
il programma ALFAPIC appunto fa .  E che segnala in caso di diversit .  

Soluzioni possibili :  
1 )  provare a riscrivere di nuovo nel PIC l'intero programma ;  
2 )  azzerare la EEPROM-dati prima di copiare in essa i caratteri CW ;  
3 )  usare un PIC nuovo .  

Invece in fase di lettura della EEPROM-dati ,  potrebbe verificarsi 
un altro tipo di errore :  un carattere letto potrebbe non essere valido ,  
ossia non corrispondere a nessun carattere CW .  Poich la MICROCHIP 
indica per il mantenimento o la conservazione dei dati registrati nella 
EEPROM-dati del PIC un periodo di tutto rispetto ( pi di 40 anni !  ) 
anche questa eventualit dovrebbe essere rarissima !  Leggere a tal 
proposito il documento della MICROCHIP  DS30430C-page 1 .  

Nonostante ci ,  se si dovesse verificare un simile evento ,  il programma 
ALFAPIC.ASM ,  invece di un carattere CW alfanumerico ,  restituisce 
sette (7) punti = errore .  Soluzioni possibili :  
1 )  ripetere l'operazione di memorizzazione ;  
2 )  usare un PIC nuovo .  

Nella routine di scrittura della EEPROM-dati il programma ALFAPIC esegue 
il test del flag WRERR .  Per maggior sicurezza ho inserito l'istruzione  
   bcf  EECON1,WRERR      in questa routine ( write_EEPROM ) .  
Secondo la documentazione della MICROCHIP questo flag dovrebbe venire 
impostato/settato a 1 solo quando si verifica un  1) MCLR reset  oppure 
un  2) WDT time-out reset  mentre  in corso una operazione di scrittura 
nella EEPROM-dati del PIC .  Leggere a questo proposito il documento 
della MICROCHIP  DS30430C-page 33 e 34 .  Poich nel programma  
ALFAPIC  non uso il WDT ,  e  in base alle caratteristiche del circuito 
attuatore non dovrebbe verificarsi neanche un MCLR reset ,  non dovrebbe 
essere necessario testare questo flag .  Tuttavia ho preferito lasciare 
queste istruzioni per una maggiore correttezza formale .  

Routines relative alla  lettura / scrittura / verifica  
dei dati nella  EEPROM-dati  del PIC  ( programma ALFAPIC ) :  

azzeraEEPROM ,  ASCOLTO_EEPROM ,  scriviEEPROM ,  write_EEPROM ,  
SALVA_MESSAGGIO  e  VERIFICA_SCRITTURA .  



                            Nota H) 
In questo file di documentazione  ( ALFAPIC.TXT  oppure  ALFAPIC.DOC )  
leggere anche le note che ho scritto riguardo alla direttiva Processor .  
Se leggete questo file di documentazione usando per esempio un semplice 
editor come quello del DOS 6.22 ( >edit ALFAPIC.TXT ) cercare la parola   
" processor "   tramite la voce  Cerca  del Men generale a tendina ,  
poi opzione  Trova...  .    




                            Nota I) 
Nell'articolo ,  per la EEPROM-dati del PIC 16F84(A)  viene indicata 
una capacit di 64 bytes  MA  poi ,  nel paragrafo "Domande e risposte" ,  
si dice che il programma pu memorizzare in totale 63 caratteri CW .  
NESSUN ERRORE ,  infatti il primo byte della EEPROM-dati del PIC 
( cio il byte numero zero ) viene usato dal programma ALFAPIC  e  non 
 quindi disponibile per la memorizzazione di caratteri CW .  
Pertanto :  ( 64 - 1 ) = 63 .  HI .  
I 64 bytes sono menzionati nella colonna centrale di pagina 71 .  



                            Nota L) 
Tono a 512 Hz .  
Per ascoltare un tono di Bassa Frequenza a 512 Hz ( tono medio ) ,  
nelle routines di ALFAPIC preposte all'emissione della nota ,  
bisogna testare il bit numero 2 del registro TMR0 .  
Tono a 1.024 Hz .  
Invece per ascoltare un tono di B.F. a 1.024 Hz ( tono acuto ) ,  
bisogna testare il bit numero 1 del registro TMR0 .  
 
bit-7  bit-6  bit-5  bit-4  bit-3 bit-2  bit-1  bit-0 <-  registro TMR0  
   16     32     64    128    256   512   1024   2048 <-  frequenza in Hz  

Molteplici nel sorgente ( file ALFAPIC.ASM ) le istruzioni da modificare .  
Vediamole .  

LABEL o etichetta  NCW1:  
LABEL o etichetta  LP1:  
LABEL o etichetta  P_WAIT1:  
LABEL o etichetta  PW1:  

Esempio .  

PW1:
        btfss   TMR0,2  --------> tono a    512 Hz  
        goto    PW1
        bsf     PORTA,BF1

PW1:
        btfss   TMR0,1  --------> tono a  1.024 Hz  
        goto    PW1
        bsf     PORTA,BF1

In ogni caso ,  nelle cartelle  512Hz  e  1024Hz  i vari sorgenti 
sono gi modificati e corretti .  




                            Nota M) 
ALFAPIC  un programma pi complesso rispetto ai precedenti 

PERCW1 ( articolo " Un PIC per il CW " - rke n. 3 MARZO 2002 )  

e  

MSGCW  ( articolo " Un po' di CW con un PIC " - rke n. 12 DICEMBRE 2002 ) .  

Ovviamente NON potr soddisfare tutti i grafisti o appassionati di CW 
poich molteplici sono le esigenze e le preferenze personali .  
Per questo motivo ho messo a disposizione il sorgente ,  file ALFAPIC.ASM ,  
e ho indicato con la lettera a minuscola ( nel file compresso ALFAPICa.ZIP ) 
questa prima versione .  Altre infatti potrebbero seguirne .  
Chi conosce il linguaggio assembly di questi PIC  oppure  ha qualche amico 
disposto a dargli una mano potr modificare o personalizzare tale programma .  
Gli schemi a blocchi forniti aiuteranno in questa impresa .  In subordine ,  
anche IW4AA potr esaminare richieste o osservazioni riguardanti ALFAPIC ,  
tempo  permettendo  e  ovviamente  senza  impegno .  
Per comunicazioni o eventuali richieste  inviare messaggi via posta 
elettronica ( in inglese  e-mail = electronic mail ) a :  
Pierluigi Felletti IW4AA  iw4aa.pf@libero.it  .    






                                  73 cordiali da Pierluigi IW4AA .  

                                  Ravenna ,  15 settembre 2004  







    ͻ 
             POSIZIONE e CONDIZIONE degli INTERRUTTORI           
                         e dei PULSANTI                          
    ͼ 


Nell'articolo sopra menzionato non abbiamo specificato la posizione che 
gli interruttori devono avere al momento dell'accensione e/o a circuito 
acceso per avere le varie funzioni del programma .  
Per maggior chiarezza ,  leggere le seguenti note .  


Sapendo che l'interruttore indicato con  < out BF / out ON-OFF >  
nel circuito attuatore determina il tipo di uscita ,  cio uscita 
di Bassa Frequenza per altoparlanti oppure uscita di tipo ON-OFF per 
cicalini ( buzzer ) e/o TX  basta provare :  
se collegando un altoparlante e ascoltando dei caratteri CW si sentono solo 
dei toc ,  spostare l'interruttore .  In questa posizione l'interruttore 
dir al programma del PIC di dare in uscita un segnale ad onda quadra 
di Bassa Frequenza .  Contrassegnare questa posizione con la scritta  
< out BF >  oppure < BF > mediante una etichetta .  
L'altra posizione di questo interruttore sar ,  di conseguenza ,  
< out ON/OFF >  oppure  < TX > .  

Possiamo effettuare le prove appena descritte oppure misurare con un 
multimetro ( o tester ) in portata voltmetrica lo stato logico della 
linea RA2 - piedino 1 - del PIC .  

Se volete usare il multimetro ,  le seguenti tabelline riepilogative 
Vi saranno d'aiuto .  




    ͻ 
             TABELLA  RIEPILOGATIVA  DELLE LINEE  RA             
    ͼ 

--------------*--------------*---------*---------*-------------------------* 
LINEA del PIC * INDICAZIONE  * + 5 Vcc *   0 V   * COMMENTO - NOTE - VARIE * 
--------------*--------------*---------*---------*-------------------------* 
     RA0      * MANPJ        *  puro   *  iambic * in modalit MANUALE     * 
--------------*--------------*---------*---------*-------------------------* 
     RA1      * out BF/ONOFF *  B.F.   *  ON-OFF * tipo di uscita          * 
--------------*--------------*---------*---------*-------------------------* 
     RA2      * USCITA B.F.  *   no    *   s    * uscita sink del PIC     * 
              *              *         *         * piedino 1               * 
--------------*--------------*---------*---------*-------------------------* 
     RA3      * LED - uscita *  spento *  acceso * STOP temporaneo         * 
--------------*--------------*---------*---------*-------------------------* 
     RA4      * ASCEE        *   no    *   s    * ascolto caratteri CW    * 
              *              *         *         * in modo MEMORIA         * 
              *              *         *         *                         * 
     RA4      * ASCEE        *   no    *   s    * ascolto messaggi        * 
              *              *         *         * in modo MANUALE         * 
--------------*--------------*---------*---------*-------------------------* 



    ͻ 
             TABELLA  RIEPILOGATIVA  DELLE  LINEE  RB            
    ͼ 

--------------*--------------*---------*---------*-------------------------* 
LINEA del PIC * INDICAZIONE  * + 5 Vcc *   0 V   * COMMENTO - NOTE - VARIE * 
--------------*--------------*---------*---------*-------------------------* 
     RB0      * SAVEBUF      *    no   *   s    * copia nella EEPROM-dati * 
--------------*--------------*---------*---------*-------------------------* 
     RB1      * pesatura     *  1 - 4  *  1 - 3  * rapporto Punto - Linea  * 
--------------*--------------*---------*---------*-------------------------* 
     RB2      * MEMOMAN      * MANUALE * MEMORIA * scelta della modalit   * 
--------------*--------------*---------*---------*-------------------------* 
     RB3      * AZZBUFF      *    no   *   s    * azzera EEPROM-dati      * 
              *              *         *         * in modo MANUALE         * 
              *              *         *         *                         * 
     RB3      * AZZBUFF      *    no   *   s    * azzera memoria volatile * 
              *              *         *         * in modo MEMORIA         * 
--------------*--------------*---------*---------*-------------------------* 


Le linee RB4 ,  RB5 ,  RB6  e  RB7 sono gestite sotto "interrupt" .  
--------------*--------------*---------*---------*-------------------------* 
LINEA del PIC * INDICAZIONE  * + 5 Vcc *   0 V   * COMMENTO - NOTE - VARIE * 
--------------*--------------*---------*---------*-------------------------* 
     RB4      * PUNTO        *    no   *   s    * PUNTO                   * 
--------------*--------------*---------*---------*-------------------------*
     RB5      * LINEA        *    no   *   s    * LINEA                   * 
--------------*--------------*---------*---------*-------------------------* 
     RB6      * fineCAR      *    no   *   s    * fine del CARattere CW   * 
--------------*--------------*---------*---------*-------------------------* 
     RB7      * finePAROLA   *    no   *   s    * fine della PAROLA  =    * 
              *              *         *         * fine del CARattere CW   * 
              *              *         *         * + pausa lunga           * 
--------------*--------------*---------*---------*-------------------------* 






    ͻ 
               TABELLA  RIEPILOGATIVA  PER  IL  LED              
    ͼ 

--------------*------------*---------------------------------------------* 
LINEA del PIC *  output    *        SIGNIFICATO  GENERALE                * 
--------------*------------*---------------------------------------------* 
     RA3      *    LED     *  STOP   temporaneo o momentaneo per altre   * 
  piedino 2   *            *  ( eventuali ) operazioni  oppure   ERRORE  * 
--------------*------------*---------------------------------------------* 





========================================================================== 
========================================================================== 




                       C O M P I L A Z I O N E  

Usando il programma MPASM versione 02.30 per compilare o ,  meglio ,  per 
" assemblare "  il programma  ALFAPIC.ASM  capiter di notare a fine  
compilazione ( assemblaggio ) che il programma MPASM indicher un numero 
di righe ben superiore alle 1.024 words di memoria-programma del 
micro-controllore PIC 16F84(A) .  Mi riferisco al messaggio ( o alla riga )  
Lines Assembled ,  per esempio :  Lines Assembled 3415 !  
In realt MPASM conteggia anche i commenti ,  cio per intenderci le righe 
che iniziano con il punto e virgola ( ; ) .  Il numero esatto di words 
occupate dal programma ALFAPIC.ASM pu essere letto nelle ultime righe  
del file  ALFAPIC.LST  ( output di MPASM ) .  

Files generati da MPASM :  

- ALFAPIC.HEX  programma in esadecimale ,   il file da caricare nel PIC ;  
- ALFAPIC.ERR  lista degli errori ;  
- ALFAPIC.LST  lista completa del processo di compilazione ;  
- ALFAPIC.COD  ( non usato ) .  


Esempio della parte finale del file ALFAPIC.LST :  


MEMORY USAGE MAP ('X' = Used,  '-' = Unused)


0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
2000 : -------X-------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used:  1021
Program Memory Words Free:     3


Errors   :     0
Warnings :     0 reported,     0 suppressed
Messages :    13 reported,     0 suppressed



Esempio del file ALFAPIC.ERR :  

Message[302] E:\PIC-ASM\ALFAPIC.ASM 2170 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2742 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2745 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2747 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2778 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2780 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2783 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2785 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2787 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2804 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2861 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2864 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] E:\PIC-ASM\ALFAPIC.ASM 2866 : Register in operand not in bank 0.  Ensure that bank bits are correct.

Notare che NON trattasi di errori ma di semplici messaggi .  



Tenere presente che il PIC 16F84 ha una " Flash Program Memory " pari a 
1.024 locazioni ,  ognuna in grado di contenere un opcode a 14 bit .  
Per questo si parla di 1.024 WORDS anzich di 1.024 BYTES .  
                             ----- 


In inglese WORD significa parola ,  termine ,  vocabolo .  
Nell'informatica un insieme o gruppo di 8 bit viene chiamato BYTE .  
Invece un insieme o gruppo di bit diverso da 8 ( in genere maggiore di 8 ) 
viene designato usando il termine WORD = PAROLA .  Nel caso dei PIC 
della Microchip abbiamo words o parole formate da 14 bit .  





                         M P A S M    Microchip  

Per ri-assemblare questo programma occorrono i seguenti files :  
P16F84.INC  accluso al file compresso ALFAPIC.ZIP nella cartella TEMP  
e  l'applicativo MPASM.EXE ,  il programma assemblatore della Microchip .  
Quest'ultimo file pu essere scaricato dal sito Internet della Microchip .  
Pi ovviamente il file sorgente  ALFAPIC.ASM  !    

Per assemblare ALFAPIC.ASM ,  nella videata iniziale del programma 
MPASM versione 02.30  impostare i parametri in questo modo :  

Source File Name: ( per esempio ) E:\PIC-ASM\ALFAPIC.ASM  
Options: 
Radix: * Default 
Warning Level: * Default 
Hex Output * Default 
Generated Files:  x Error File   e   x List File 
x Case Sensitive 
Macro Expansion: * Default 
Processor 16F84 
( NOTA BENE !  Nel sorgente ALFAPIC.ASM la direttiva PROCESSOR  16F84 ;  
  se indichiamo  Processor 16F84A   meglio cambiare anche la 
  direttiva nel sorgente ALFAPIC.ASM ,  cio PROCESSOR  16F84A e poi 
  ri-assemblare o ri-compilare il programma con MPASM.EXE ) 
Tab Size 8 

                      Ŀ   
infine clic finale su  V Assemble   ( Assemble source file and exit ) .  
                      
Controllare sempre che non vi siano errori .  In caso affermativo ,  
correggere gli errori del programma ( nel file ALFAPIC.ASM ) e poi 
ripetere la compilazione o assemblaggio .  




                         S O F T W A R E  

Per caricare nella memoria del PIC 16F84 ( va bene anche il PIC 16F84A ) 
questo programma ( file ALFAPIC.HEX ) si pu utilizzare il pi semplice 
circuito programmatore che si trova in commercio ,  il cosiddetto 
LUDIPIPO e il programma freeware IC-Prog 0.9e - Prototype Programmer .  
I files  ALFAPIC.HEX  si trovano nel file compresso ALFAPIC.ZIP 
che pu essere scaricato via Internet dal sito delle Edizioni C&C 

http://www.edizionicec.it  bottone AREA DOWNLOAD .  

Fra le varie versioni ,  scegliere quella che si preferisce .  
In caso di incertezza ,  scegliere la versione VELOCE con tono a 512 Hz .  
Leggere a questo proposito la  Nota D)  di questa documentazione .  

Inserire il PIC 16F84 nello zoccolo del programmatore e poi collegare il 
programmatore al personal computer ( in genere su COM1 ) .  
Lanciare il programma icprog.exe e impostare i parametri in questo modo :  
  JDM Programmer on Com1 ( con il LUDIPIPO ) 
  Device: PIC 16F84 oppure PIC 16F84A 
  ( NOTA BENE !  Nel sorgente ALFAPIC.ASM la direttiva PROCESSOR  16F84 ;  
    se indichiamo  Device: PIC 16F84A   meglio cambiare anche la 
    direttiva nel sorgente ALFAPIC.ASM ,  cio PROCESSOR  16F84A e poi 
    ri-assemblare il programma con MPASM.EXE ) 
  Oscillator: XT  ( cio XTAL = a quarzo )  
  Fuses: spuntare solo PWRT ( finestrella bianca per WDT e CP ) 
         in questo modo Config word sar = 3FF1h .  
         ( NOTA BENE !  Si legge : tre-effe-effe-uno esadecimale ) 
A questo punto Erase All per cancellare la memoria del PIC ,  
               Open File ALFAPIC.HEX per selezionare questo programma e 
               Program All per caricare il programma ALFAPIC.HEX nel PIC .  
Chiudere il programma icprog ,  scollegare il programmatore dal PC 
( per prudenza a PC spento ) ,  quindi sfilare il PIC dal programmatore e 
infilarlo nello zoccolo del circuito attuatore .  Il gioco  fatto .  




>>>>>>>>>>>>>>>>>>>>>>>>>>>>  IMPORTANTE  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

Il programma ALFAPIC.ASM  stato scritto da IW4AA Pierluigi Felletti nel 
linguaggio assembly dei PIC 16F8X della Microchip .  
Pu essere utilizzato liberamente dai radioamatori PER USO PRIVATO .  
Trattasi quindi di un programma FREEWARE ( di libero uso ) .  

Questo programma  disponibile via INTERNET nel sito 
http://www.edizionicec.it  ( bottone :  AREA DOWNLOAD ) .  
( rivista  " radiokit elettronica "  ) .  

Nessuno pu appropriarsi di questo programma per scopi commerciali 
o di lucro .  Pur consentendone l'utilizzo privato ,  
IW4AA Pierluigi Felletti   e  resta il proprietario di questo software .  

Questo programma viene fornito cos com' !  Non viene fornita 
nessuna garanzia implicita e/o esplicita di corretto funzionamento .  
Pertanto l'Autore non  responsabile per eventuali inconvenienti 
derivanti dall'uso di questo programma .  Sono graditi consigli ,  
suggerimenti e segnalazioni di errori .  Chi trova qualcosa che 
non va ,   pregato di farmelo sapere al pi presto .  Grazie .  

Chi conosce il linguaggio assembly del PIC 16F8X potr modificare il 
programma sorgente ALFAPIC.ASM per adattarlo meglio alle proprie esigenze .  
Proprio per questo motivo ho deciso di rendere disponibili oltre ai vari 
files  ALFAPIC.HEX  anche i sorgenti originali di ciascuna versione ,  
cio i vari files  ALFAPIC.ASM .  


Per modifiche e/o richieste inviare i messaggi a IW4AA Pierluigi Felletti :  

E-mail  iw4aa.pf@libero.it            <<==========================  

( Packet  IK4ICZ-8 di Ravenna ITALIA .  )  

Oppure scrivere al seguente indirizzo :  

                Felletti Pierluigi 
                via Dantona n. 13 
                48100 RAVENNA - Italia ( Italy )  

allegando ,  se lo si ritiene necessario ,  dischetto gi formattato e 
busta pre-affrancata e pre-indirizzata .  Non telefonare .  GRAZIE .  



