| 
    
  
    
  3.- Definizione degli I/O
  Abbiamo stabilito quale microcontroller intendiamo impiegare, ora può
  essere utile fornire qualche informazione su come è collegato il processore,
  l' uso degli I/O, ecc. Tutte queste informazioni servono non solo a chi legge,
  ma anche a se stessi per avere le idee chiare sulle risorse disponibili e su
  come usarle. 
  Una cosa che quasi sempre manca in un sorgente è: come sono collegati i
  pin. Non si tratta di una informazione trascurabile, in quanto può evitare di
  avere l' obbligo di accompagnare il tutto con uno schema elettrico o comunque
  rende chiaro perchè un pin sia programmato come uscita oppure come ingresso.  
  Vediamo un esempio in forma "grafica" (per quanto possibile in
  editor di testo). 
  Siccome i pin solitamente hanno più funzioni assegnabile, sono riportate le
  alternative, il che evita la necessità di consultare il foglio dati. 
  
    
      
        
          ;**************************************************************************** 
            ; MAPPA I/O 
            ; 
            ; Pinout : PIC16F1826/7 @ 18 pin PDIP / SOIC 
            ; ---------- 
            ; 
            ;           |¯¯\/¯¯| 
            ;      RA2 -|1   18|- RA1 
            ;      RA3 -|2   17|- RA0 
            ;      RA4 -|3   16|- RA7 
            ; MCLR/RA5 -|4   15|- RA6 
            ;      Vss -|5   14|- Vdd 
            ;      RB0 -|6   13|- RB7/PGD 
            ;  PGM/RB1 -|7   12|- RB6/PGC 
            ;      RB2 -|8   11|- RB5 
            ;      RB3 -|9   10|- RB4 
            ;          
            |______| 
            ; 
            ; Impiego pin : 
            ; ---------------- 
            ; PIC16F1826-27                      
            18 pin  Impiego 
            ; 
            ; Vdd                                    
            14: Vdd 
            ; Vss                                     
            5: Vss 
            ; 
            ; RA0/AN0/CPS0/C12IN0-/SDO               
            17: AN0 - livello 
            ; RA1/AN1/CPS1/C12IN1-/SS                
            18: AN1 - temperatura 
            ; RA2/AN2/CPS2/C12IN2-/C12IN+/Vref-/DACOUT 1: in  - pulsante on 
            ; RA3/AN3/CPS3/C12IN3/C1IN+/C1OUT/SRQ/CCP3 2: in  - pulsante
            off 
            ; RA4/AN4/CPS4/C2OUT/SRNQ/T0CKI/CCP4      
            3:  - 
            ; RA5/MCLR/Vpp/SS1                        
            4: MCLR 
            ; RA6/P1D/P2B/SDO1/OSC2/CLKOUT/CLKR      
            15:  - 
            ; RA7/P1C/P2A7CCP2/OSC1/CLKIN            
            16:  - 
            ; 
            ; RB0/SRI/T1G/CCP1/P1A/FLT0/INT           
            6: out - LED rosso 
            ; RB1/AN11/CPS11/RX/DT/SDA/SDI1           
            7: out - LED verde 
            ; RB2/AN10/CPS10/RX../SDA2/SDI2/SDO1/MDMIN 8: out - LED giallo 
            ; RB3/AN9/CPS9/CCP1/P1A/MDOUT             
            9: out - buzzer 
            ; RB4/AN8/CPS8/SCL1/SCK1/SDO1/MDCIN2     
            10: 
            ; RB5/AN7/CPS7/P1B/TX/SCL2/SCK2/SS1      
            11: 
            ; RB6/AN5/CPS5/T1OSO/T1CKI/P1C/P2A/CCP2   12: 
            ; RB7/AN6/CPS6/T1OSO/P1D/P2B/NDCIN2      
            13: 
            ; 
             | 
         
      
     
   
  Anche qui si tratta di un' area di solo testo di commento, indifferente per
  la compilazione, ma la cui presenza rende quasi superfluo uno schema
  elettrico. Anche qui, forma e struttura sono ampiamente modificabili. 
  La sua utilità sta nella possibilità di rendersi conto con una sola occhiata
  delle risorse disponibili, della loro collocazione e del loro impiego nel
  progetto. 
  Questa sezione può essere validamente completata da una mappatura degli
  I/O con relative label, che serviranno rendere più pratico il sorgente. Anche
  qui possiamo ricorre ad una forma semi-grafica che è ben esplicativa: 
  
    
      
        
          ;==================================================================== 
            ; DEFINIZIONE DI IMPIEGO DEI PORT 
            ;==================================================================== 
            ; 
            ;PORTA map 
            ;| 7   |  6  |  5  |  4  | 
            3  |  2  |  1  |  0  | 
            ;|-----|-----|-----|-----|-----|-----|-----|-----| 
            ;|     |     |    
            |     |     |    
            |     |     | 
            ; 
            ;#define PORTA,0 ; 
            ;#define PORTA,1 ;  
            ;#define PORTA,2 ;  
            ;#define PORTA,3 ; 
            ;#define PORTA,4 ; 
            ;#define PORTA,5 ; 
            ;#define PORTA,6 ; 
            ;#define PORTA,7 ; 
             
            ;PORTB map 
            ;| 7   |  6  |  5  |  4  | 
            3  |  2  |  1  |  0  | 
            ;|-----|-----|-----|-----|-----|-----|-----|-----| 
            ;|     |     |    
            |     |     |    
            |     |     | 
            ; 
            ;#define PORTB,0 ; 
            ;#define PORTB,1 ;  
            ;#define PORTB,2 ;  
            ;#define PORTB,3 ;  
            ;#define PORTB,4 ; 
            ;#define PORTB,5 ; 
            ;#define PORTB,6 ; 
            ;#define PORTB,7 ; 
             
            ;******************************************************************** 
            ;#################################################################### | 
         
      
     
   
  Qui si inizia a valutare l' utilità della colorazione del testo operata
  dagli editor adeguati: il template è, inizialmente, un foglio millimetrato
  vuoto, da adattare alla propria esigenza. 
   
  Qui, ad esempio, de-commentando le righe che si intendono usare ed aggiungendo
  quanto necessario, il testo base si trasformerà da un puro commento ad un un
  elemento della compilazione. 
  
    
      
        
          ;==================================================================== 
            ; DEFINIZIONE DI IMPIEGO DEI PORT 
            ;==================================================================== 
            ; 
            ;PORTA map 
            ;| 7   |  6  |  5  |  4  | 
            3  |  2  |  1  |  0  | 
            ;|-----|-----|-----|-----|-----|-----|-----|-----| 
            ;|     |     |    
            |     |stop |avvio|temp |level| 
            ; 
             #define
            level PORTA,0 ; ingresso analogico 0 
             #define
            temp  PORTA,1 ; ingresso analogico
            1 
             #define
            PBON  PORTA,2 ; pulsante avvio 
             #define
            PBOFF PORTA,3 ; pulsante stop 
            ;#define PORTA,4 ; 
            ;#define PORTA,5 ; 
            ;#define PORTA,6 ; 
            ;#define PORTA,7 ; 
             
            ;PORTB map | 
         
      
     
   
   
  Ovviamente le parti inutilizzate potranno essere eliminate; in ogni caso, la
  presenza di linee ancora commentate rende visibile la disponibilità
  potenziale di altre possibilità. 
 
 
   
 |