Una nueva familia de PICs
Una arquitectura que manteniendo las excelentes cualidades de los PICs, minimiza sus limitaciones.
Memoria de programa: hasta 1 MWord y sin paginación.
Memoria de datos: hasta 16 x 256 = 4 KBytes.
Pila con 31 niveles de profundidad.
Tres flexibles punteros "FSRs" que direccionan la memoria de datos de forma indirecta y sin bancos.
Juego de instrucciones enriquecido 72 + 4 dobles.
10 MIPS con oscilador de 10 MHz. y un PLL x4.
Amplia gama de periféricos integrados.
Altamente compatible con los PIC16CXX y PIC17CXX.
Diseñada para optimizar el rendimiento del compilador "C" .
Memoria de datos. Organización
Un total de 4 KBytes agrupados en 16 bancos con 256 Bytes cada uno.
Contienen los registros de propósito general "GPRs" y los registros especiales "SFRs".
Los SFRs, también llamados registros periféricos, están situados en la zona más alta. Desde F00h hasta FFFh.
GPRs
Banco 0
Banco 1
Banco 2
.
.
.
Banco F
000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF
GPRs
GPRs
SFRs
Registros especiales SFRs
FFFh
FFEh
FFDh
FFCh
FFBh
FFAh
FF9h
FF8h
FF7h
FF6h
FF5h
FF4h
FF3h
FF2h
FF1h
FF0h
FEFh
FEEh
FEDh
FECh
FEBh
FEAh
FE9h
FE8h
FE7h
FE6h
FE5h
FE4h
FE3h
FE2h
FE1h
FE0h
TOSU
TOSH
TOSL
STKPTR
PCLATU
PCLATH
PCL
TBLPTRU
TBLPTRH
TBLPTRL
TABLAT
PRODH
PRODL
INTCON
INTCON2
INTCON3
INDF0
POSTINC0
POSTDEC0
PREINC0
PLUSW0
FSR0H
FSR0L
W R E G
INDF1
POSTINC1
POSTDEC1
PREINC1
PLUSW1
FSR1H
FSR1L
BSR
FDFh
FDEh
FDDh
FDCh
FDBh
FDAh
FD9h
FD8h
FD7h
FD6h
FD5h
FD4h
FD3h
FD2h
FD1h
FD0h
FCFh
FCEh
FCDh
FCCh
FCBh
FCAh
FC9h
FC8h
FC7h
FC6h
FC5h
FC4h
FC3h
FC2h
FC1h
FC0h
INDF2
POSTINC2
POSTDEC2
PREINC2
PLUSW2
FSR2H
FSR2L
STATUS
TMR0H
TMR0L
T0CON
—
OSCCON
LVDCON
WDTCON
RCON
TMR1H
TMR1L
T1CON
TMR2
PR2
T2CON
SSPBUF
SSPADD
SSPSTAT
SSPCON1
SSPCON2
ADRESH
ADRESL
ADCON0
ADCON1
ADCON2
FBFh
FBEh
FBDh
FBCh
FBBh
FBAh
FB9h
FB8h
FB7h
FB6h
FB5h
FB4h
FB3h
FB2h
FB1h
FB0h
FAFh
FAEh
FADh
FACh
FABh
FAAh
FA9h
FA8h
FA7h
FA6h
FA5h
FA4h
FA3h
FA2h
FA1h
FA0h
CCPR1H
CCPR1L
CCP1CON
CCPR2H
CCPR2L
CCP2CON
CCPR3H
CCPR3L
CCP3CON
CCPR4H
CCPR4L
CCP4CON
TMR3H
TMR3L
T3CON
—
SPBRG
RCREG
TXREG
TXSTA
RCSTA
COM2BRG
COM2RX
COM2TX
COM2STA
COM2CON
IPR3
PIR3
PIE3
IPR2
PIR2
PIE2
F9Fh
F9Eh
F9Dh
F9Ch
F9Bh
F9Ah
F99h
F98h
F97h
F96h
F95h
F94h
F93h
F92h
F91h
F90h
F8Fh
F8Eh
F8Dh
F8Ch
F8Bh
F8Ah
F89h
F88h
F87h
F86h
F85h
F84h
F83h
F82h
F81h
F80h
IPR1
PIR1
PIE1
EXTMEM
EXTBUS
TRISJ
TRISH
TRISG
TRISF
TRISE
TRISD
TRISC
TRISB
TRISA
LATJ
LATH
LATG
LATF
LATE
LATD
LATC
LATB
LATA
PORTJ
PORTH
PORTG
PORTF
PORTE
PORTD
PORTC
PORTB
PORTA
El acumulador WREG
El registro WREG, además de intervenir de forma implícita en múltiples instrucciones, es un registro direccionable (0xFE8), por lo que se le puede utilizar de forma explícita y así ser el parámetro FILE de cualquier instrucción, por ejemplo:
COMF WREG NEGF WREG
DECFSZ WREG INCFSZ WREG
DCFSNZ WREG INFSNZ WREG
RLCF WREG RRCF WREG
RLNCF WREG RRNCF WREG
BTFSC WREG, b BTFSS WREG, b
BTG WREG, b SWAPF WREG . . .
El registro de estados
STATUS, N: bit de negativo.
STATUS, OV: bit de rebase.
STATUS, Z: bit de cero.
STATUS, DC: bit de acarreo decimal.
STATUS, C: bit de acarreo.
– – – N OV Z DC C
STATUS Register
Registro Selector de Banco. BSR
El BSR es similar al de la familia PIC17CXX.
Los 4 bits bajos del BSR seleccionan un banco entre los 16 posibles.
– – – – 3 2 1 0
Bank Select Register
GPRs
Banco 0
Banco 1
Banco 2
.
.
.
Banco F
000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF
GPRs
GPRs
SFRs
Direccionamiento de datos
Las instrucciones aritmético-lógicas tienen un nuevo formato:
El parámetro " f " (8 bits) contiene la dirección del registro.
El parámetro " d " indica el destino de la operación:
Cuando " d = 1 ", el resultado se coloca en el registro f.
Cuando " d = 0 ", el resultado se coloca en el registro w.
El parámetro " a " se llama " Access bit ".
opcode d a f f f f f f f f
Por ejemplo:
ADDWF f, d, a
Access bit = 1
Cuando " a = 1 ", el contenido del BSR determina el banco.
Uniendo a los 4 bits del BSR los 8 bits " f ", se obtiene un direccionamiento de 4 K.
ADDWF f, d, a 0010 01d1 f f f f f f f f
Suponiendo BSR = 0001
GPRs
Banco 0
Banco 1
Banco 2
.
.
.
Banco F
000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF
GPRs
GPRs
SFRs
Access bit = 0
Cuando " a " = 0, en lugar de determinar el banco por el contenido del registro BSR, se utiliza el Access Bank y se selecciona un registro de los 256 entre A.RAM & A.SFRs.
ADDWF f, d, a 0010 01d0 f f f f f f f f
A.RAM
A.SFRs
GPRs
=00
=7F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
=80
=FF
GPRs
GPRs
SFRs
El "Access Bank"
El " Access Bank " es un banco virtual de 256 registros formado por:
Los registros A.RAM de la parte baja del Banco 0.
Los registros A.SFRs de la parte alta del Banco F.
Los A.RAM son GPRs que tienen la cualidad de pertenecer al " Access Bank ".
Los A.SFRs y los A.RAM están siempre accesibles, independientemente del contenido del BSR.
La conmutación de bancos se minimiza gracias a la posibilidad de operar con los A.SFRs y los A.RAM sin necesidad de modificar el contenido del BSR.
De Memoria a Memoria
MOVFF mueve un dato desde cualquier registro hasta cualquier registro.
MOVFF fs, fd 1100 ssss ssss ssss
1111 dddd dddd dddd
Esta es una de las cuatro instrucciones de
DOBLE PALABRA
A.RAM
GPRs
SFRs
000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF
GPRs
GPRs
4 KB
SIN USAR
BANCOS
A.SFRs
Instrucciones de doble palabra
El código objeto de la segunda palabra de las instrucciones MOVFF, GOTO, CALL y LFSR tiene la forma: 1111 XXXX XXXX XXXX.
Si esta segunda palabra fuera interpretada como instrucción, se decodificaría como un NOP especial. Por ejemplo:
. . .
DECFSZ CONTADOR,d,a 0010 11da ffff ffff
GOTO PROGRAMA 1110 1111 XXXX XXXX
NOP especial 1111 XXXX XXXX XXXX
NOP 0000 0000 0000 0000
. . .
Página siguiente |