ELEMANIA
PIC16F690 - Registri generici e speciali

Come si è già avuto occasione di accennare, i registri del PIC si dividono in due categorie: i General Purpose Register (GPR) e gli Special Purpose Register (SFR). I primi, come dice il nome, servono per scopi generali (per esempio per salvare temporaneamente il risultato di un calcolo), mentre i secondi sono fondamentali per controllare tutte le funzioni del PIC.

General Purpose Registers (GPR)

Il PIC16F690 contiene 256 registri GPR, ciascuno da un byte. Come suggerisce il nome si tratta di un'area di memoria di uso generale, dove salvare i risultati e i dati di calcolo del programma. Per esempio un registro GPR può essere utilizzato come contatore in un ciclo (incrementandolo a ogni ripetizione del ciclo stesso). Questi registri svolgono le funzioni dei normali registri di uso generale (A, B, C, D etc.) del microprocessore Z80.

I registri GPR, a differenza degli Special Function Register, non hanno un nome ed è possibile accedervi solo per mezzo del loro indirizzo o definendo una opportuna etichetta letterale associata al registro stesso.

Questi registri sono collocati a partire dall'indirizzo relativo 20h nei banchi di memoria 0, 1 e 2. Occorre anche osservare che le ultime 16 locazioni di ogni banco (da 70h a 7Fh) sono comuni ai banchi 0,1 e 2. In altre parole, questi 16 indirizzi corrispondono in realtà a 16 locazioni mappate su ogni banco: si tratta in sostanza di 16 registri che possono essere indirizzati indifferentemente nel banco 0, 1 oppure 2 (aree colorate in giallo nella figura qui sotto).

Special Function Registers (SFR)

Si tratta di locazioni di memoria utilizzate dal PIC per svolgere particolari compiti predeterminati. In molti casi i bit di questi registri sono fisicamente collegati con particolari componenti del PIC (per esempio col convertitore AD, il modulo di comunicazione seriale, il Program Counter etc.): pertanto ogni modifica dei valori contenuti in questi registri ha effetto sul funzionamento del PIC e dei suoi moduli interni.

Per esempio modificando il contenuto del registro TRISA è possibile cambiare la programmazione dei bit della PORTA A (programmandoli come input o come output):

Gli SFR sono dotati di un nome che li identifica e che può essere usato programmando in assembly per accedere rapidamente ai registri stessi (senza doverne ricordare l'indirizzo).

Come abbiamo già visto, alcuni di questi registri sono "copiati" (più correttamente si dice mappati) in entrambi i banchi; ciò significa che per accedere a quel registro è sufficiente specificarne l'indirizzo di memoria, non importa quale banco sia abilitato in quel momento. Ad esempio, per accedere al registro PCL possiamo portarci all'indirizzo 02h del banco 0, ma anche all'indirizzo 02h del banco 1.

 

Mappa completa dei registri SFR (cortesia prof. Loredana Caruso)

 

 

SFR = special function register PIC16F690

 

 

 

Bank 0

Indirect addr

Bank 1

Indirect addr.

Bank 2

Indirect addr.

Bank 3

Indirect addr.

 

 

 

00h

 

 

80h

 

 

100h

 

 

180h

 

1.   

TMRO

01h

1.   

OPTION_REG

81h

1.  

TMRO

101h

1.  

OPTION_REG

181h

 

2.   

PCL

02h

2.   

PCL

82h

2.  

PCL

102h

2.  

PCL

182h

 

3.   

STATUS

03h

3.   

STATUS

83h

3.  

STATUS

103h

3.  

STATUS

183h

 

4.   

FSR

04h

4.   

FSR

84h

4.  

F8R

104h

4.  

FSR

184h

 

5.   

PORTA

05h

5.   

TRISA

85h

5.  

PORTA

105h

5.  

TRISA

185h

 

6.   

PORTB

06h

6.   

TRISB

86h

6.  

PORTB

106h

6.  

TRISB

186h

 

7.   

PORTC

07h

7.   

TRISC

87h

7.  

PORTC

107h

7.  

TRISC

187h

 

 

 

08h

 

 

88h

 

 

108h

 

 

188h

 

 

 

09h

 

 

89h

 

 

109h

 

 

189h

 

8.   

PCLATH

0Ah

8.   

PCLATH

8Ah

8.  

PCLATH

10Ah

8.  

PCLATH

18Ah

 

9.   

INTCON

0Bh

9.   

INTCON

8Bh

9.  

INTCON

10Bh

9.  

INTCON

18Bh

 

10.                

PIR1

0Ch

10.                

PIE1

8Ch

10.                

EEDAT

10Ch

10.                

EECON1

18Ch

 

11.                

PIR2

0Dh

11.                

PIE2

8Dh

11.                

EEADR

10Dh

11.                

EECON2

18Dh

 

12.                

TMR1L

0Eh

12.                

PCON

8Eh

12.                

EEDATH

10Eh

 

 

18Eh

 

13.                

TMR1H

0Fh

13.                

OSCCON

8Fh

13.                

EEADRH

10Fh

 

 

18Fh

 

14.                

T1CON

10h

14.                

OSCTUNE

90h

 

 

110h

 

 

190h

 

15.                

TMR2

11h

 

 

91h

 

 

111h

 

 

191h

 

16.                

T2CON

12h

15.                

PR2

92h

 

 

112h

 

 

192h

 

17.                

SSPBUF

13h

16.                

SSPADD(2)

93h

 

 

113h

 

 

193h

 

18.                

SSPCON

14h

17.                

SSPSTAT

94h

 

 

114h

 

 

194h

 

19.                

CCPR1L

15h

18.                

WPUA

95h

14.                

WPUB

115h

 

 

195h

 

20.                

CCPR1H

16h

19.                

IOCA

96h

15.                

IOCB

116h

 

 

196h

 

21.                

CCP1CON

17h

20.                

WDTCON

97h

 

 

117h

 

 

197h

 

22.                

RCSTA

18h

21.                

TXSTA

98h

16.                

VRCON

118h

 

 

198h

 

23.                

TXREG

19h

22.                

SPBRG

99h

17.                

CM1CONO

119h

 

 

199h

 

24.                

RCREG

1Ah

23.                

SPBRGH

9Ah

18.                

CM2CONO

11Ah

 

 

19Ah

 

 

 

1Bh

24.                

BAUDCTL

9Bh

19.                

CM2CON1

11Bh

 

 

19Bh

 

25.                

PWM1CON

1Ch

 

 

9Ch

 

 

11Ch

 

 

19Ch

 

26.                

ECCPAS

1Dh

 

 

9Dh

 

 

11Dh

12.                

PSTRCON

19Dh

 

27.                

ADRESH

1Eh

25.                

ADRESL

9Eh

20.                

AN8EL

11Eh

13.                

SRCON

19Eh

 

28.                

ADCONO

1Fh

26.                

ADCON1

9Fh

21.                

AN8ELH

11Fh

 

 

19Fh

 

 

 

GENERAL PURPOSE

REGISTER

 

96 BYTE

20h

 

 

GENERAL PURPOSE

REGISTER

 

80 BYTE

A0h

 

 

GENERAL PURPOSE

REGISTER

 

80 BYTE

120h

 

 

1A0h

 

 

 

 

 

EF0h

16Fh

 

Accesses

70h – 7Fh

 

F0h

Accesses

70h – 7Fh

 

170h

 

Accesses

70h – 7Fh

 

1F0h

 

7Fh

 

FFH

17Fh

 

1FFh

 

 

Bank 0 -28

 

 

Bank 1 -26

 

 

Bank 2- 21

 

 

Bank 3 -13

Totale registri

88? No

66

 

 

Registri SFR di controllo del PIC:

1.               OPTION_REG = registro opzioni : r/w  serve per configurare timer. WDog, interrupt, e abilitazione porte A?B

2.               STATUS = registro di stato

3.               FSR = file select register : registro per l’ indirizzamento  dei file( parola)

4.               PCL = Program counter Low:  parte bassa dell-indirizzo contenuto nel Program Counter

5.               PCLATH = Program counter High address

6.               INTCON = interrupt control register: contiene I flag per gestire le inerruzioni dal TM0 ma anche dalla porta A e dai piedini RA2/AN2/T0ck/C1out

7.               PIR1= Peripheral interrupt request register 1

8.               PIR2= Peripheral interrupt request register 1

9.               PIE1= Peripheral interrupt enable register 1

10.           PIE2= Peripheral interrupt enable register 2

11.           PCON = power control register: serve per abilitare o disabilitare  il set o il rest del micro controlore

 

Registri SFR per le porte di I/O:

12.           PORTA = PortA register: serve per settare  a 0 o a 1  i 6 piedini (con indirizzo da 0-5) della porta A

13.           TRISA= port A tri-state register: serve per definire quali piedini sono in Input (1) o in Output (0)

14.           PORTB= PortB register: serve per settare  a 0 o a 1  i 4 piedini (con indirizzo da 4-7) della porta B

15.           TRISB= port B tri-state register:  serve per definire quali piedini sono in Input (1) o in Output (0)

16.           PORTC=  PortC register: serve per settare  a 0 o a 1  gli 8 piedini (con indirizzo da 0-7) della porta C

17.           TRISC= port C tri-state register:  serve per definire quali piedini sono in Input (1) o in Output (0)

18.           ANSEL= Analog select register: serve per definire se i valori prelevati o forniti ai piedini ( 8 pin – 0-7)  delle porte sono di tipo anlogico (1) o digitale (0).Se non e usato e 0+ digitale.

19.           ANSELH= Analog select high register: idem cs ma per i piedini 8,9,10,11

20.           WPUA= weak pull up  register della porta A: attivazione di resistenze che facilitano il collegamento con interruttori esterni

21.           WPUB= weak pull up  register della porta B: attivazione di resistenze che facilitano il collegamento con interruttori esterni

22.           IOCA= interrupt on- change porta A register: registro che serve per abilitare o disabilitare gli interrupt dalla porta A

23.           IOCB= interrupt on- change porta B register: registro che serve per abilitare o disabilitare gli interrupt dalla porta B

 

Registri SFR per l'utilizzo della memoria EEPROM interna: la locazioni di memoria EEPROM  r/w non sono mappate nello spazio dei registri ma possono essere indirizzate utilizzando  i 6 SFR di seguito elencati.

24.           EEDAT

25.           EEADR

26.           EEDATH

27.           EEADRH

28.           EECON1

29.           EECON2

 

Registri SFR per l'utilizzo dei TIMER 0 –1 e 2 interni come contatori,temporizzatori e  abilita tori di interrupt e  e avvio delle attivita’ del comparatore (ECCP):   

30.           TMR1L

31.           TMR1H

32.           T1CON

33.           T2CON

34.           TMR2

35.           TMRO

 

Registri SFR per l'utilizzo dell’ oscillatore interno e per determinarne la frequenza, l’avvio e  il periodo di clock

36.           OSCCON

37.           OSCTUNE

 

Registri SFR per l'utilizzo della periferica EUSART ( enhanced= avanzato universal synchronous asunchronous receiver transmitter):

38.           SSPBUF

39.           SSPADD(2)

40.           SSPCON

41.           SSPSTAT

42.           TXSTA

43.           TXREG

44.           SPBRG

45.           RCSTA

46.           RCREG

47.           SPBRGH

48.           BAUDCTL

Registri SFR per l'utilizzo del PWM: tipologia di modulazione del segnale che permette di ottenere una tensione media variabile dipendente dal rapporto tra la durata dell' impulso positivo e di quello negativo

49.           CCPR1L

50.           CCPR1H

51.           CCP1CON

52.           RCSTA

53.           PWM1CON

54.           PR2

55.           ECCPAS

Registri SFR per l'utilizzo del comparatore interno che serve per interfacciare col PIC circuiti analogici.   Il funzionamento e’ basato sul confronto tra 2 tensioni di riferimento e l’utilizzo di amplificatore operazionale (AO)  ad anello aperto  ( AA)

56.               CM1CONO

57.               CM2CONO

58. CM2CON1

Registri SFR per l'utilizzo del Latch (flip flop) sia per settare le tensioni di riferimento della modulazione PWM sia per settare/ resettare il latch

59.               VRCON= voltage reference controll register

60.               SRCON = set/ reset  latch controll register

61.               PSTRCON=  pulse streering (gestione) control register

Registri SFR per l'utilizzo del ADC (analogic to digital converter)   e per definirne le modalità di conversione:  

62.               ADRESH

63.               ADRESL

64.               ADCONO

65.               ADCON1

 

Registro SFR per l'utilizzo del watchdog interno:

66.               WDTCON

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it