Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes Intro PIC PDF
Apuntes Intro PIC PDF
Arquitectura Harvard
Tecnologa RISC
Tecnologa CMOS
instrucciones
33 instrucciones de12 bits
35 instrucciones de 14 bits
58 instrucciones de 16 bits
nomenclatura
PIC12XXX y PIC14XXX
PIC16XXX
PIC17XXX y PIC18XXX
Variantes principales
Los microcontroladores que produce Microchip cubren una amplio rango de
dispositivos cuyas caractersticas pueden variar como sigue:
-
Empaquetados
Aunque cada empaquetado tiene variantes, especialmente en lo relativo a las
dimensiones del espesor del paquete, en general se pueden encontrar paquetes
tipo PDIP (Plastic Dual In Line Package), PLCC (Plastic Leaded Chip Carrier),
PDIP
SOIC
DIL package
PLCC package
QFP package
PGA package
Nomenclatura
Adems de lo mostrado en la tabla anterior, en el nombre especfico del
microcontrolador pueden aparecer algunas siglas que dependen del rango de
voltaje manejado y del tipo de memoria ROM incluida, como se muestra en la
siguiente tabla:
Tipo de memoria
EPROM, OTP
ROM
Flash
Rango de voltaje
Estndar (4.5 a 6 volts)
Extendido (2.5 a 6 volts)
PIC16CXXX
PIC16LCXXX
PIC16CRXXX
PIC16LCRXXX
PIC16FXXX
PIC16LFXXX
12
11
10
_________
CP1 CP0 DEBUG - WRT CPD LVP BODEN CP1 CP0 PWRTE WDTE FOSC1 FOSC0
FOSC0
0
1
0
1
LP
XT
HS
RC
Obs: Algunos PICs poseen un modo de oscilacin que les permite usar una
resistencia y un capacitor interno calibrados para 4 Mhz.
Los tres modos LP, XT y HS usan un cristal o resonador externo, la diferencia sin
embargo es la ganancia de los drivers internos, lo cual se ve reflejado en el rango
de frecuencia admitido y la potencia consumida. En la siguiente tabla se muestran
los rangos de frecuencia as como los capacitores recomendados para un
oscilador en base a cristal.
Modo
Frecuencia tpica
LP
32 khz
200 khz
100 khz
2 Mhz
4 Mhz
8 Mhz
10 Mhz
20 Mhz
XT
HS
Capacitores recomendados
C1
C2
68 a 100 pf
15 a 30 pf
68 a 150 pf
15 a 30 pf
15 a 30 pf
15 a 30 pf
15 a 30 pf
15 a 30 pf
68 a 100 pf
15 a 30 pf
150 a 200 pf
15 a 30 pf
15 a 30 pf
15 a 30 pf
15 a 30 pf
15 a 30 pf
A la lgica interna
SLEEP
XTAL
Rf
C2
A la lgica interna
OSC2
Vdd
Rext
Fosc
OSC1
Reloj interno
Cext
Fosc/4
OSC2
Seal externa
OSC1
OSC2
Resistencia a tierra
para reducir ruido
Oscilador interno de 4Mhz.- En los PICs que poseen este modo de oscilacin,
(modo INTRC) el PIC usa un arreglo RC interno que genera una frecuencia de 4
Mhz con un rango de error calibrable de 1.5%. Para calibrar el error de
oscilacin se usan los bits CAL3, CAL2 , CAL1 Y CAL0 del registro OSCCAL.
Calibracin del oscilador interno.- El fabricante ha colocado un valor de
calibracin para estos bits en la ltima direccin de la memoria de programa. Este
dato ha sido guardado en la forma de una instruccin RETLW XX. Si no se quiere
perder este valor al borrar el PIC (en versiones EPROM con ventana) primero se
deber leer y copiar. Es una buena idea escribirlo en el empaquetado antes de
borrar la memoria).
2.2.- Caractersticas generales del PIC16F877
La siguiente es una lista de las caractersticas que comparte el PIC16F877 con los
dispositivos ms cercanos de su familia:
PIC16F873
PIC16F874
PIC16F876
PIC16F877
CPU:
- Tecnologa RISC
- Slo 35 instrucciones que aprender
- Todas las instrucciones se ejecutan en un ciclo de reloj, excepto los saltos que
requieren dos
- Frecuencia de operacin de 0 a 20 MHz (200 nseg de ciclo de instruccin)
- Opciones de seleccin del oscilador
Memoria:
- Hasta 8k x 14 bits de memoria Flash de programa
- Hasta 368 bytes de memoria de datos (RAM)
- Hasta 256 bytes de memoria de datos EEPROM
PIC16F873
PIC16F876
Timer0
Timer1
PIC16F874
PIC16F877
PortA,
B,C,D,E
Timer0
Timer1
Timer2
Timer2
PortA,B,C
Captura
Comparacin
PWM
1 Convertidor A/D AN0,...,AN4
SSP
Puertos Serie
USART/SCI
ICSP
Puerto Paralelo
PSP
Esclavo
2 mdulos CCP
Caractersticas
con lneas digitales programables individualmente
Captura
Comparacin
PWM
AN0,...,AN7
SSP
USART/SCI
ICSP
PSP
13
Memoria de
Programa en
FLASH
Program Counter
14
Bus de programa
Bus de datos
Archivo de
registros en
RAM
Stack de 3 niveles
(13 bits)
PORTA
Registro de
Instrucciones
Mux
Direc.
8 indirecto
Reg FSR
7
Direc. directo
PORTB
Reg STATUS
Decodificacin
de instrucciones
y control
Generacin de
tiempo
Timer de encendido
(PWRT)
Timer de aranque del
oscilador (OST)
Reset de encendido
(POR)
Timer del watchdog
3
Mux
PORTC
Timer0
ALU
Brown-out Reset
Programacin en
bajo voltaje
MCLR
VDD,VSS
Timer1
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
Reg W
Depurador In-circuit
OSC1/CLKIN
OSC2/CLKOUT
RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
Memoria de
datos
EEPROM
Timer0
PORTD
Timer0
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5PSP5
RD6/PSP6
RD7/PSP7
RE0/AN5/RD
PORTE
Memoria de
datos
EEPROM
CCP1,2
RE1/AN6/WR
RE2/AN7/CS
Puerto Serie
Sncrono
USART
Q1
Q2
Tcy1
Q3
Q4
Q1
Q2
Tcy2
Q3
Q4
OSC1
OSC2 / Tosc
CLKOUT
PC
Lee instruccin PC
Ejecuta instruccin PC-1
PC+1
Lee instruccin PC+1
Ejecuta instruccin PC
Como puede verse, cada ciclo de instruccin (Tcy = 4Tosc) se compone a su vez de
cuatro ciclos del oscilador (Tosc= 1/Fosc)). Cada ciclo Q provee la sincronizacin
para los siguientes eventos:
Q1: Decodificacin de la instruccin
Q2: Lectura del dato (si lo hay)
Q3: Procesa el dato
Q4: Escribe el dato
Debido a esto cada ciclo de instruccin consume 4 ciclos de reloj, de manera que
si la frecuencia de oscilacin es Fosc, Tcy ser 4/Fosc.
Registros de la CPU.
Registro PC.- Registro de 13 bits que siempre apunta a la siguiente instruccin a
ejecutarse. En la siguiente seccin se dan mayores detalles en el manejo de este
registro.
R/W-0
R/W-0
R-1
R-1
R/W-x
R/W-x
R/W-x
____
PD
DC
Bit 0
IRP
RP1
RP0
____
Bit 7
TO
* Notacin:
R= Bit leble W= Bit Escribible U= No implementado (se lee como 0)
-n= Valor despus del Reset de encendido
Z.- Este bit se pone (=1) para indicar que el resultado de la ltima operacin fue
cero, de lo contrario se limpia (=0)
C.- Bit de acarreo/prstamo de la ltima operacin aritmtica (en el caso de
prstamo (resta), el bit se invierte antes de guardarse)
__________ _
DC.- Acarreo/ prestamo proveniente del cuarto bit menos significativo. Funciona
igual que el bit C, pero para operaciones de 4 bits.
Las restas se realizan sumando el complemento a dos del segundo operando, por
ejemplo, para los datos 4FH y 25H:
Suma:
4FH
+25H
Resultado: 74 H
Bits C,DC:
0100 1111
+ 0100 0101
0 0111 0100
C=0, DC=1
Resta:
4FH
-25H
2AH
0100 1111
- 0100 0101
0100 1111
+ 1101 1011
1 0010 1010
C=0, DC=0
10
Descripcin
Ciclos
Cdigo de Mquina
Suma f + W
W AND f
Limpia f
Limpia W
Complementa los bits de f
Decrementa f en 1
Decrementa f, escapa si 0
Incrementa f en 1
Incrementa f, escapa si 0
W OR f
Copia el contenido de f
Copia contenido de W en f
No operacin
Rota f a la izquierda
Rota f a la derecha
Resta f W
Intercambia nibbles de f
W EXOR f
1
1
1
1
1
1(2)
1
1(2)
1
1
1
1
1
1
1
1
1
Banderas
afectadas
C,DC,Z
Z
Z
Z
Z
Z
Z
Z
C
C
C,DC,Z
Pone bit b en f
Prueba bit b en f, escapa si 0
Prueba bit b en f, escapa si 1
1
1(2)
1(2)
Suma literal k + W W
k AND W W
Llamado a subrutina
Limpia timer del watchdog
Salto a la direccin k
k OR W W
Copia literal a W
Retorna de interrupcin
Retorna con literal k en W
Retorna de subrutina
Activa Modo standby
Resta k W W
k EXOR W W
1
2
1
2
1
1
2
2
2
1
1
1
C,DC,Z
Z
____
____
TO , PD
____
____
TO , PD
C,CD,Z
Z
d = 0 destino W
Notacin: d= destino del resultado
d = 1 destino registro
f =direccin del registro (memoria RAM), b= nmero de bit (0 a 7), k= dato de 8 bits
11
MOVLW 0x4F
ADDLW 0x25
MOVLW 0x25
SUBLW 0x4F
;carga el sustraendo en W
;Resta 4Fh-W y guarda el resultado en W
MOVLW 0xF4
;W=F4h, 0x20= ??, C=?, DC=?, Z=?
ADDLW 0x0B
;W=FFh, 0x20= ??, C=0, DC=0, Z=0
MOVWF 0X20
;W=FFh, 0x20=FFh, C=0, DC=0, Z=0
INCF 0x20,1
;W=FFh, 0X20=00h, C=0, DC=0, Z=1
INCF 0X20,0
;W=01h, 0x20=00h, C=0, DC=0, Z=0
COMF 0X20,1
;W=01h, 0x20=FFh, C=0, DC=0, Z=0
XORWF 0x20,1
;W=01h, 0x20=FEh, C=0, DC=0, Z=0
MOVF 0x20,0
;W=FEh, 0x20=FEh, C=0, DC=0, Z=0
;(El ensamblador permite escribir esta ltima como MOVFW 0x20)
DECF 0x20,1
;W=FEh, 0x20=FDh, C=0, DC=0, Z=0
ANDWF 0x20,1
;W=FEh, 0x20=FCh, C=0, DC=0, Z=0
RLF 0x20,1
;W=FEh, 0x20=F8h, C=1, DC=0, Z=0
SWAPF 0x20,1
;W=FEh, 0x20=8Fh, C=1, DC=0, Z=0
BCF 0x20,3
;W=FEh, 0x20=87h, C=1, DC=0, Z=0
BSF 0x20,5
;W=FEh, 0x20=A7h, C=1, DC=0, Z=0
Opcode
10
Opcode
7 6
b (bit #)
8 7
Opcode
k (Literal)
11 10
Opcode
k (Literal)
13
0000h
...
0004h
0005h
...
07FFh
Vector de Reset
...
Vector de interrupcin
Pgina 0
0800h
...
0FFFh
Pgina 1
1000h
...
17FFh
Pgina 2
1800h
...
1FFFh
Pgina 3
14
PCL
8
PC
El byte de orden bajo es llamado el registro PCL, mientras que el byte de orden
alto es llamado registro PCH. Este ltimo contiene los bits PC<12:8> y no se
puede leer o escribir directamente Todas las actualizaciones al registro PCH
deben ser hechas a travs del registro PCLATH.
En la siguiente figura se ilustran las cuatro situaciones y las maneras
correspondientes en que el PC puede ser actualizado.
15
16
RP1:RP0
00
01
10
11
0
1
Banco
0
1
2
3
Cada banco consta de 128 bytes (de 00h a 7Fh). En las posiciones ms bajas de
cada banco se encuentran los SFR, y arriba de stos se encuentran los GPR.
Toda la memoria de datos est implementada en Ram esttica.
Direccionamiento Directo
Para acceder una posicin de memoria mediante direccionamiento directo, la CPU
simplemente usa la direccin indicada en los 7 bits menos significativos del cdigo
de operacin y la seleccin de banco de los bits RP1:RP0 como se ilustra en la
siguiente figura.
17
BSF STATUS,5
BSF STATUS,6
BCF STATUS,5
El Archivo de Registros
Aunque el archivo de registros en RAM puede variar de un PIC a otro, la familia
del PIC16F87x coincide casi en su totalidad. En la siguiente figura se muestra a
18
registro
INDF(*)
TMR0
PCL
STATUS
FSR
PORTA
PORTB
PORTC
PORTD(1)
PORTE(1)
PCLATH
INTCON
PIR1
PIR2
TMR1L
TMR1H
T1CON
TMR2
T2CON
SSPBUF
SSPCON
CCPR1L
CCPR1H
CCP1CON
RCSTA
TXREG
RCREG
CCPR2L
CCPR2H
CCP2CON
ADRESH
ADCON0
Direccin
registro
Direccin
registro
Direccin
registro
80h
INDF(*)
100h
INDF(*)
180h
INDF(*)
81h OPTION_REG
101h
TMR0
181h OPTION_REG
82h
PCL
102h
PCL
182h
PCL
83h
STATUS
103h STATUS
183h
STATUS
84h
FSR
104h
FSR
184h
FSR
85h
TRISA
105h
185h
86h
TRISB
106h
PORTB
186h
TRISB
87h
TRISC
107h
187h
88h
TRISD(1)
108h
188h
89h
TRISE(1)
109h
189h
8Ah
PCLATH
10Ah PCLATH
18Ah
PCLATH
8Bh
INTCON
10Bh
INTCON
18Bh
INTCON
8Ch
PIE1
10Ch EEDATA
18Ch
EECON1
8Dh
PIE2
10Dh
EEADR
18Dh
EECON2
8Eh
PCON
10Eh EEDATH
18Eh RESERVADO(2)
8Fh
10Fh EEADRH
18Fh RESERVADO(2)
90h
110h
190h
91h
SSPCON2
111h
191h
92h
PR2
112h
192h
93h
SSPADD
113h
193h
94h
SSPSTAT
114h
194h
95h
115h
195h
Registros
96h
116h
196h
Registros de
de
97h
117h
197h
propsito
propsito
general (16
98h
TXSTA
118h
198h
general (16
bytes)
99h
SPBRG
119h
199h
bytes)
9Ah
11Ah
19Ah
9Bh
11Bh
19Bh
9Ch
11Ch
19Ch
9Dh
11Dh
19Dh
9Eh
ADRESL
11Eh
19Eh
9Fh
ADCON1
11Fh
19Fh
A0h
120h
1A0h
Registros
Registros de
Registros de
de
Registros de
propsito
propsito
propsito
propsito
General
General
General
General
(80 bytes)
(80 bytes)
(80 bytes)
(96 bytes)
EFh
16Fh
1EFh
Acceso a
Acceso a regs
Acceso a regs
F0h
170h regs 70h
1F0h
70h7Fh
70h7Fh
7Fh
7Fh
FFh
17Fh
1FFh
Banco 0
Banco 1
Banco 2
Banco 3
19