Programació en C del PIC 16F690

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Registres de la memòria de dades

En les taules següents podeu veure els registres que hi ha a cada posició de la memòria de dades. Els que tenen el nom en majúscules són els registres interns de funcionament i configuració i els que estan al final de cada taula són els que contindran les nostres Variables. Cada taula correspon a un dels quatre bancs del microcontrolador. Per accedir als registres dels bancs 1, 2 i 3 es necessiten més instruccions de programa que per accedir als del banc 0.

Els registres marcats amb fons verd són accessibles des de qualsevol banc i els marcats amb fons groc ho són des de més d'un banc. Les posicions marcades en blau fosc no estan implementades.

Banc 0

Adreça Funció Registre Contingut
Hex. Dec. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
00h 0 INDF Adreçament indirecte
01h 1 TMR0 Comptador del timer 0
02h 2 PCL LSB del comptador de programa
03h 3 STATUS IRP RP1 RP0 TO PD Z DC C
04h 4 FSR Punter d'adreçament indirecte
05h 5 PORTA RA5 RA4 RA3 RA2 RA1 RA0
06h 6 PORTB RB7 RB6 RB5 RB4
07h 7 PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
08h 8
09h 9
0Ah 10 PCLATH Buffer MSB del comptador de programa
0Bh 11 INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF
0Ch 12 PIR1 ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF
0Dh 13 PIR2 OSFIF C2IF C1IF EEIF
0Eh 14 TMR1L LSB del comptador del timer 1
0Fh 15 TMR1H MSB del comptador del timer 1
10h 16 T1CON T1GINV TMR1GE T1CKKPS1 T1CKKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
11h 17 TMR2 Comptador del timer 2
12h 18 T2CON TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
13h 19 SSPBUF Registre de transmissió sèrie síncrona
14h 20 SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0
15h 21 CCPR1L LSB del capturador, comparador i PWM
16h 22 CCPR1H MSB del capturador, comparador i PWM
17h 23 CCP1CON PIM1 PIM0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0
18h 24 RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
19h 25 TXREG Registre de transmissió sèrie assíncrona
1Ah 26 RCREG Registre de recepció sèrie assíncrona
1Bh 27
1Ch 28 PWM1CON PRSEN PDC6 PDC5 PDC4 PDC3 PDC2 PDC1 PDC0
1Dh 29 ECCPAS ECCPASE ECCPAS2 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0
1Eh 30 ADRESH MSB del conversor A/D
1Fh 31 ADCON0 ADFM VCFG CHS3 CHS2 CHS1 CHS0 GO/DONE ADON
20h
a
6Fh
32
a
111
Lliure Lliure (variables) [80 bytes]
70h
a
7Fh
112
a
127
Lliure Lliure (variables) [16 bytes]

Banc 1

Adreça Funció Registre Contingut
Hex. Dec. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
80h 128 INDF Adreçament indirecte
81h 129 OPTION_REG RABPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
82h 130 PCL LSB del comptador de programa
83h 131 STATUS IRP RP1 RP0 TO PD Z DC C
84h 132 FSR Punter d'adreçament indirecte
85h 133 TRISA TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
86h 134 TRISB TRISB7 TRISB6 TRISB5 TRISB4
87h 135 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0
88h 136
89h 137
8Ah 138 PCLATH Buffer MSB del comptador de programa
8Bh 139 INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF
8Ch 140 PIE1 ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE
8Dh 141 PIE2 OSFIE C2IE C1IE EEIE
8Eh 142 PCON ULPWUE SBOREN POR BOR
8Fh 143 OSCCON IRCF2 IRCF1 IRCF0 OSTS HTS LTS SCS
90h 144 OSCTUNE TUN4 TUN3 TUN2 TUN1 TUN0
91h 145
92h 146 PR2 Registre de comparació del timer 2
93h 147 SSPADD Registre d'adreça de la transmissió sèrie síncrona
SSPMSK MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0
94h 148 SSPSTAT SMP CKE D/A P S R/W UA BF
95h 149 WPUA WPUA5 WPUA4 WPUA2 WPUA1 WPUA0
96h 150 IOCA IOCA5 IOCA4 IOCA3 IOCA2 IOCA1 IOCA0
97h 151 WDTCON WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN
98h 152 TXSTA CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D
99h 153 SPBRG BRG7 BRG6 BRG5 BRG4 BRG3 BRG2 BRG1 BRG0
9Ah 154 SPBRGH BRG15 BRG14 BRG13 BRG12 BRG11 BRG10 BRG9 BRG8
9Bh 155 BAUDCTL ABDOVF RCIDL SCKP BRG16 WUE ABDEN
9Ch 156
9Dh 157
9Eh 158 ADRESL LSB del conversor A/D
9Fh 159 ADCON1 ADCS2 ADCS1 ADCS0
A0h
a
EFh
160
a
239
Lliure Lliure (variables) [80 bytes]
F0h
a
FFh
240
a
255
Lliure Coincideix amb 70h a 7Fh (112 a 127)

Banc 2

Adreça Funció Registre Contingut
Hex. Dec. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
100h 256 INDF Adreçament indirecte
101h 257 TMR0 Comptador del timer 0
102h 258 PCL LSB del comptador de programa
103h 259 STATUS IRP RP1 RP0 TO PD Z DC C
104h 260 FSR Punter d'adreçament indirecte
105h 261 PORTA RA5 RA4 RA3 RA2 RA1 RA0
106h 262 PORTB RB7 RB6 RB5 RB4
107h 263 PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0
108h 264
109h 265
10Ah 266 PCLATH Buffer MSB del comptador de programa
10Bh 267 INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF
10Ch 268 EEDAT EEDAT7 EEDAT6 EEDAT5 EEDAT4 EEDAT3 EEDAT2 EEDAT1 EEDAT0
10Dh 269 EEADR EEADR7 EEADR6 EEADR5 EEADR4 EEADR3 EEADR2 EEADR1 EEADR0
10Eh 270 EEDATH EEDATH5 EEDATH4 EEDATH3 EEDATH2 EEDATH1 EEDATH0
10Fh 271 EEADRH EEADRH3 EEADRH2 EEADRH1 EEADRH0
110h 272
111h 273
112h 274
113h 275
114h 276
115h 277 WPUB WPUB7 WPUB6 WPUB5 WPUB4
116h 278 IOCB IOCB7 IOCB6 IOCB5 IOCB4
117h 279
118h 280 VRCON C1VREN C2VREN VRR VP6EN VR3 VR2 VR1 VR0
119h 281 CM1CON0 C1ON C1OUT C1OE C1POL C1R C1CH1 C1CH0
11Ah 282 CM2CON0 C2ON C2OUT C2OE C2POL C2R C2CH1 C2CH0
11Bh 283 CM2CON1 MC1OUT MC2OUT T1GSS C2SYNC
11Ch 284
11Dh 285
11Eh 286 ANSEL ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0
11Fh 287 ANSELH ANS11 ANS10 ANS9 ANS8
120h
a
16Fh
288
a
367
Lliure Lliure (variables) [80 bytes]
170h
a
17Fh
368
a
383
Lliure Coincideix amb 70h a 7Fh (112 a 127)

Banc 3

Adreça Funció Registre Contingut
Hex. Dec. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
180h 384 INDF Adreçament indirecte
181h 385 OPTION_REG RABPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
182h 386 PCL LSB del comptador de programa
183h 387 STATUS IRP RP1 RP0 TO PD Z DC C
184h 388 FSR Punter d'adreçament indirecte
185h 389 TRISA TRISA5 TRISA4 TRISA3 TRISA2 TRISA1 TRISA0
186h 390 TRISB TRISB7 TRISB6 TRISB5 TRISB4
187h 391 TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0
188h 392
189h 393
18Ah 394 PCLATH Buffer MSB del comptador de programa
18Bh 395 INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF
18Ch 396 EECON1 EEPGD WRERR WREN WR RD
18Dh 397 EECON2 Registre de control de l'EEPROM
18Eh 398
18Fh 399
190h 400
191h 401
192h 402
193h 403
194h 404
195h 405
196h 406
197h 407
198h 408
199h 409
19Ah 410
19Bh 411
19Ch 412
19Dh 413 PSTRCON STRSYNC STRD STRC STRB STRA
19Eh 414 SRCON SR1 SR0 C1SEN C2REN PULSS PULSR
19Fh 415
1A0h
a
1EFh
416
a
495
1F0h
a
1FFh
496
a
511
Lliure Coincideix amb 70h a 7Fh (112 a 127)

En principi, podem adreçar directament els bits dels registres emprant només el seu nom; sense indicar a quin registre es troben. En alguns casos, però, cal fer servir un nom diferent, són els que s'indiquen a la taula següent.

Nom del bit Banc Adreça Nom que cal posar en el programa
C 0, 1, 2, 3 STATUS,0 CARRY
Z 0, 1, 2, 3 STATUS,2 ZERO
PD 0, 1, 2, 3 STATUS,3 nPD
TO 0, 1, 2, 3 STATUS,4 nTO
GO/DONE 0 ADCON0,1 GO_DONE
nDONE
GO_nDONE
T1SYNC 0 T1CON,2 nT1SYNC
RABPU 1, 3 OPTION_REG,7 nRABPU
R/W 1 SSPSTAT,2 nW
nWRITE
I2C_READ
READ_WRITE
R_W
R_nW
S 1 SSPSTAT,3 I2C_START
P 1 SSPSTAT,4 I2C_STOP
D/A 1 SSPSTAT,5 nA
nADDRESS
DATA_ADDRESS
D_A
D_nA
I2C_DATA
BOR 1 PCON,0 nBOR
POR 1 PCON,1 nPOR
IRP 0, 1, 2, 3 STATUS,7 STATUS,7

Aquest bit no té un nom definit que es pugui emprar en el programa i, per tant, cal emprar-lo indicant la posició en el registre.

La taula anterior no és completa, el fitxer pic16f690.inc, que es troba amb els fitxers de l'MPLAB X IDE, ens pot ajudar a trobar el nom exacte dels que ens donin error.

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.