Sistemi integrati - Registri SFR
Uno Special Function Register (o Special Purpose Register, o semplicemente Special Register) è un registro all'interno di un microprocessore che controlla o monitora le varie funzioni di un microprocessore. Poiché i registri speciali sono strettamente legati a qualche funzione o stato speciale del processore, potrebbero non essere direttamente scrivibili dalle normali istruzioni (come aggiungi, sposta, ecc.). Invece, alcuni registri speciali in alcune architetture di processori richiedono istruzioni speciali per modificarli.
Nell'8051, i registri A, B, DPTR e PSW fanno parte del gruppo di registri comunemente indicato come SFR (registri di funzioni speciali). È possibile accedere a un SFR tramite il suo nome o il suo indirizzo.
La tabella seguente mostra un elenco di SFR e i loro indirizzi.
Indirizzo byte | Indirizzo bit | ||||||||
---|---|---|---|---|---|---|---|---|---|
FF | |||||||||
F0 | F7 | F6 | F5 | F4 | F3 | F2 | F1 | F0 | B |
E0 | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 | ACC |
D0 | D7 | D6 | D5 | D4 | D3 | D2 | - | D0 | PSW |
B8 | - | - | - | AVANTI CRISTO | BB | BA | B9 | B8 | IP |
B0 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | P3 |
A2 | AF | - | - | corrente alternata | AB | aa | A9 | A8 | IE |
A0 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | P2 |
99 | Non bit indirizzabile | SBUF | |||||||
98 | 9F | 9E | 9D | 9C | 9B | 9A | 99 | 98 | SCON |
90 | 97 | 96 | 95 | 94 | 93 | 92 | 91 | 90 | P1 |
8D | Non bit indirizzabile | TH1 | |||||||
8C | Non bit indirizzabile | TH0 | |||||||
8B | Non bit indirizzabile | TL1 | |||||||
8A | Non bit indirizzabile | TL0 | |||||||
89 | Non bit indirizzabile | TMOD | |||||||
88 | 8F | 8E | 8D | 8C | 8B | 8A | 89 | 88 | TCON |
87 | Non bit indirizzabile | PCON | |||||||
83 | Non bit indirizzabile | DPH | |||||||
82 | Non bit indirizzabile | DPL | |||||||
81 | Non bit indirizzabile | SP | |||||||
80 | 87 | 87 | 85 | 84 | 83 | 82 | 81 | 80 | P0 |
Considera i seguenti due punti sugli indirizzi SFR.
Un registro di funzione speciale può avere un indirizzo compreso tra 80H e FFH. Questi indirizzi sono superiori a 80H, poiché gli indirizzi da 00 a 7FH sono gli indirizzi della memoria RAM all'interno dell'8051.
Non tutto lo spazio indirizzi da 80 a FF viene utilizzato dall'SFR. Le posizioni inutilizzate, da 80H a FFH, sono riservate e non devono essere utilizzate dal programmatore 8051.
CY | PSW.7 | Porta bandiera |
corrente alternata | PSW.6 | Flag di trasporto ausiliario |
F0 | PSW.5 | Flag 0 disponibile per l'utente per scopi generali. |
RS1 | PSW.4 | Registra il selettore del banco bit 1 |
RS0 | PSW.3 | Registra il selettore del banco bit 0 |
OV | PSW.2 | Bandiera di overflow |
- | PSW.1 | BANDIERA definibile dall'utente |
P | PSW.0 | BANDIERE DI PARITÀ. Impostato / cancellato dall'hardware durante il ciclo di istruzione per indicare il numero pari / dispari di 1 bit nell'accumulatore. |
Nell'esempio seguente, i nomi dei registri SFR vengono sostituiti con i relativi indirizzi.
CY | corrente alternata | F0 | RS1 | RS0 | OV | - | P |
---|
È possibile selezionare il bit del banco di registro corrispondente utilizzando i bit RS0 e RS1.
RS1 | RS2 | Register Bank | Indirizzo |
---|---|---|---|
0 | 0 | 0 | 00H-07H |
0 | 1 | 1 | 08H-0FH |
1 | 0 | 2 | 10H-17H |
1 | 1 | 3 | 18H-1FH |
La Program Status Word (PSW) contiene bit di stato che riflettono lo stato corrente della CPU. Le varianti 8051 forniscono un registro di funzioni speciali, PSW, con queste informazioni di stato. L'8251 fornisce due flag di stato aggiuntivi, Z e N, che sono disponibili in un secondo registro di funzioni speciali chiamato PSW1.