Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El microcontrolador PIC16F873
El microcontrolador PIC16F873
Configuracin de pines
El microcontrolador PIC16F873
RC0
RC1
RC2
RC3
Puerto A
Puerto C
RC4
RC5
RC6/Tx
RA0/AN0
RC7/Rx
RA1/AN1
RA2/AN2/VrefRA3/AN3/Vref+
RA4/TOCKI
RA5/AN4
RB0/INT
RB1
RB2
RB3
Puerto B
RB4
RB5
RB6
RB7
El microcontrolador PIC16F873
digital se comporta como colector abierto (open collector), por lo tanto, se debe poner una
resistencia de pull-up (resistencia externa conectada a un nivel de cinco voltios). Como
salida, la lgica es inversa: un "0" escrito al pin del puerto entrega en el pin un "1" lgico.
Adems, como salida no puede manejar cargas como fuente, slo en el modo sumidero.
La mxima capacidad de corriente de cada uno de los pines de los puertos en
modo sumidero (sink) o en modo fuente (source) es de 25 mA . La mxima capacidad
de corriente total de los puertos es:
Modo sumidero
Modo fuente
PUERTO A
200 mA
200 mA
PUERTO B
200 mA
200 mA
PUERTO C
200 mA
200mA
Imax=25mA
Imax=25mA
+5V
Imax=200mA
Imax=200mA
Modo sumidero
Modo fuente
El microcontrolador PIC16F873
Pin
2
3
4
5
6
Descripcin
E/S Digital o Entrada anloga 0.
E/S Digital o Entrada anloga 1.
E/S Digital o Entrada anloga 2.
E/S Digital o Entrada anloga 3.
Bit 4 del puerto A (E/S bidireccional ). Tambin se usa como entrada de reloj al
temporizador/contador TMR0. Salida de colector abierto.
RA5/SS/AN5
7 E/S Digital o Entrada anloga 4. Tambin lo usa el puerto serial sncrono.
RB0/INT
21 Bit 0 del puerto B (E/S bidireccional). Buffer E/S: TTL/ST. Tambin se usa como
entrada de interrupcin externa (INT).
RB1
22 Bit 1 del puerto B (E/S bidireccional). Buffer E/S: TTL
RB2
23 Bit 2 del puerto B (E/S bidireccional). Buffer E/S: TTL
RB3
24 Bit 3 del puerto B (E/S bidireccional). Buffer E/S: TTL
RB4
25 Bit 4 del puerto B (E/S bidireccional). Buffer E/S: TTL. Interrupcin por cambio
del pin.
RB5
26 Bit 5 del puerto B (E/S bidireccional). Buffer E/S: TTL. Interrupcin por cambio
del pin.
RB6
27 Bit 6 del puerto B (E/S bidireccional). Buffer E/S: TTL/ST. Interrupcin por
cambio del pin. Entrada de reloj para programacin serial.
RB7
28 Bit 7 del puerto B (E/S bidireccional). Buffer E/S: TTL/ST. Interrupcin por
cambio del pin. Entrada de datos para programacin serial.
RC0/T1OSO/T1CKI 11 E/S Digital. Salida del oscilador Timer 1 o entrada de reloj Timer 1.
RC1/T1OSI/CCP2
12 E/S Digital. Entrada del oscilador Timer 1. Entrada Captura 2; Salida Compara
2; Salida PWM 2
RC2/CCP1
13 E/S Digital. Entrada Captura 1; Salida Compara 1; Salida PWM 1
RC3/SCK/SCL
14 E/S Digital. Lnea de reloj serial asncrono en el modo SPI y el modo IC
RC4/SDI/SDA
15 E/S Digital. Lnea de datos en el modo SPI o en el modo IC
RC5/SDO
16 E/S Digital.
RC6/TX/CK
17 E/S Digital. Transmisin asncrona (USART) o reloj sncrono (SSP).
RC7/RX/DT
18 E/S Digital. Recepcin asncrona (USART) o lnea de datos (SSP).
VDD
20 Voltaje de alimentacin DC (+)
VSS
8,19 Referencia de voltaje (GND).
1 Entrada de RESET al microcontrolador. Voltaje de entrada durante la
programacin.
MCLR
OSC1/CLKIN
9 Entrada oscilador cristal oscilador / Entrada fuente de reloj externa.
OSC2/CLKOUT
10 Salida oscilador cristal. Oscilador RC: Salida con un frecuencia OSC1
El oscilador externo
Todo microcontrolador requiere un circuito externo que le indique la velocidad a
la que debe trabajar. Este circuito, que se conoce como oscilador o reloj, es muy
simple pero de vital importancia para el buen funcionamiento del sistema. El
PIC16F873 puede utilizar cuatro tipos de oscilador diferentes. Estos tipos son:
RC. Oscilador con resistencia y condensador.
XT. Cristal.
HS. Cristal de alta velocidad.
LP. Cristal para baja frecuencia y bajo consumo de potencia.
6
El microcontrolador PIC16F873
OSC1
Cristal
OSC2
+5VDC
R
OSC1
Fosc/4
C
Reset
El microcontrolador PIC16F873
El rebase del conteo del circuito de vigilancia (watchdog) durante operacin normal
El rebase del conteo del circuito de vigilancia (watchdog) durante el modo de bajo
consumo (sleep)
El reset al encendido se consigue gracias a dos temporizadores. El primero de ellos es el
OST (Oscillator Start-Up Timer: Temporizador de encendido del oscilador), orientado a
mantener el microcontrolador en reset hasta que el oscilador del cristal es estable. El
segundo es el PWRT (Power-Up Timer: Temporizador de encendido), que provee un
retardo fijo de 72 ms (nominal) en el encendido nicamente, diseado para mantener el
dispositivo en reset mientras la fuente se estabiliza. Para utilizar estos temporizadores,
slo basta con conectar el pin MCLR a la fuente de alimentacin, evitndose utilizar las
tradicionales redes RC externas en el pin de reset.
El reset por MCLR se consigue llevando momentneamente este pin a un estado lgico
bajo, mientras que el watchdog WDT produce el reset cuando su temporizador rebasa la
cuenta, o sea que pasa de 0FFh a 00h. Cuando se quiere tener control sobre el reset del
sistema se puede conectar un botn como se muestra en la figura 3.6.
+5VDC
10K
100
MCLR
Reset
El microcontrolador PIC16F873
EEPROM, adems de los dos bloques de memoria principales que son el de programa y
el de datos o registros.
Referencia
Memoria FLASH
Programa
Memoria RAM
Datos
Memoria
EEPROM
PIC16F873
4K
192 Bytes
128 Bytes
PIC16F876
8K
368 Bytes
256 Bytes
13
Bus de Datos 8
PORTA
Contad. Programa
Memoria
de
programa
RAM
Conjunto
de
Registros
Stack de 8 Niveles
(13-bit)
FLASH
Bus de
Programa 14
RA0/AN0
RA1/AN1
RA2/AN2
RA3/AN3/VREF
RA4/T0CKI
RA5/AN4/SS
PORTB
Direcc. de RAM 9
MUX Direcc
Reg. de Instrucc.
Direcc. Directo 7
Direcc.
Indirec.
FSR reg
STATUS reg
8
Decod. de
Instrucc. &
Control
Reset al
encendido
Generacin
de tiempo
Perro guardin
OSC1/CLKIN
OSC2/CLKOUT
EEPROM de
Datos
MUX
ALU
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
8
Registro W
MCLR
Timer0
Temporizador
de encendido
Temporizador
del oscilador
PORTC
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
VDD, VSS
Timer1
Timer2
10-bit A/D
CCP1,2
Puerto Serial
Sncrono
USART
El microcontrolador PIC16F873
Es una memoria de 4K de longitud con palabras de 14 bits. Como es del tipo FLASH
se puede programar y borrar elctricamente, lo que facilita el desarrollo de los
programas y la experimentacin. En ella se graba o almacena el programa o cdigos
que el microcontrolador debe ejecutar. Dado que el PIC16F873 tiene un contador de
programa de 13 bits, tiene una capacidad de direccionamiento de 8K x 14, pero
solamente tiene implementado los primeros 4K x 14 (0000h hasta 0FFFh). Si se
direccionan posiciones de memoria superiores a 0FFFh se causar un solapamiento con
el espacio de los primeros 4K. En la figura 3.8 se muestra el mapa de la memoria de
programa.
Contador de Programa
13 lneas
Instrucciones:
Call, retfie, retlw,
return
Pila o Stack Nivel 1
Pila o Stack Nivel 2
Vector de Reset
Vector de Interrupciones
0000h
0004h
0005h
Pgina 0
07FFh
0800h
Memoria
real
Pgina 1
0FFFh
1000h
1FFFh
El microcontrolador PIC16F873
El microcontrolador PIC16F873
INDF
TMR0
PCL
STATUS
FSR
PORTA
PORTB
PORTC
PORTD*
PORTE*
PCLATH
INTCON
PIR1
PIR2
TMR1L
TMR1H
T1CON
TMR2
T2CON
SSPBUF
SSPCON
CCPR1L
CCPR1H
CCP1CON
RCSTA
TXREG
RCREG
CCPR2L
CCPR2H
CCP2CON
ADRESH
ADCON0
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
10h
11h
12h
13h
14h
15h
16h
17h
18h
19h
1Ah
1Bh
1Ch
1Dh
1Eh
1Fh
20h
INDF
OPTION_REG
PCL
STATUS
FSR TRISA
TRISA
TRISB
TRISC
TRISD*
TRISE*
PCLATH
INTCON
PIE1
PIE2
PCON
SSPCON2
PR2
SSPADD
SSPSTAT
TXSTA
SPBRG
ADRESL
ADCON1
INDF
TMR0
PCL
STATUS
FSR
PORTB
PCLATH
INTCON
EEDATA
EEADR
EEDATH
EEADRH
100h
101h
102h
103h
104h
105h
106h
107h
108h
109h
10Ah
10Bh
10Ch
10Dh
10Eh
10Fh
110h
INDF
OPTION_REG
PCL
STATUS
FSR
TRISB
PCLATH
INTCON
EECON1
EECON2
Reservado
Reservado
Registros
de
Propsito
General
96 Bytes
96 Bytes
7Fh
1A0h
120h
accede
20h-7Fh
1EFh
1F0h
16Fh
170h
FFh
Banco 1
accede
A0h - FFh
17Fh
Banco 2
1FFh
Banco 3
12
180h
181h
182h
183h
184h
185h
186h
187h
188h
189h
18Ah
18Bh
18Ch
18Dh
18Eh
18Fh
190h
A0h
Registros
de
Propsito
General
Banco 0
80h
81h
82h
83h
84h
85h
86h
87h
88h
89h
8Ah
8Bh
8Ch
8Dh
8Eh
8Fh
90h
91h
92h
93h
94h
95h
96h
97h
98h
99h
9Ah
9Bh
9Ch
9Dh
9Eh
9Fh
El microcontrolador PIC16F873
BANCO 1:
- OPTION: Registro de control de frecuencia del TMR0.
- TRISA, TRISB, TRISC: Registro de configuracin de la operacin de los
pines de los puertos A y B respectivamente.
- ADRESL: Parte baja del resultado de la conversin A/D.
- ADCON1: Controla la configuracin de los pines de entrada anloga.
BANCO 2:
- TMR0: Registro del temporizador/contador de 8 bits.
- PCL: Byte menos significativo del contador de programa (PC).
- FSR: Registro de direccionamiento indirecto.
- EEDATA: Registro de datos de la memoria EEPROM.
- EEADR: Registro de direccin de la memoria EEPROM.
- PCLATH: Byte alto (ms significativo) del contador de programa (PC).
- INTCON: Registro de control de las interrupciones.
BANCO 3:
- OPTION: Registro de control de frecuencia del TMR0.
- EECON1: Control de lectura/escritura de la memoria EEPROM de datos.
- EECON2: No es un registro fsico.
Funcin de algunos registros especiales
00h o INDF: Registro para direccionamiento indirecto de datos. Este no es un
registro disponible fsicamente; utiliza el contenido del registro FSR y los bits RP0 y RP1
del registro STATUS para seleccionar indirectamente la memoria de datos, la instruccin
que lo acompae determinar que se debe realizar con el registro sealado.
01h o TMR0. Temporizador/contador de 8 bits. Este es un contador que se
puede incrementar con una seal externa aplicada al pin RA4/TOCKI o de acuerdo a
una seal interna proveniente del reloj de instrucciones del microcontrolador. La rata
de incremento del registro se puede determinar por medio de un preescalador o
divisor de frecuencia, localizado en el registro OPTION. Como una mejora con respecto a
sus antecesores, se le ha agregado la generacin de interrupcin cuando se rebasa la
cuenta (el paso de 0FFh a 00h).
13
El microcontrolador PIC16F873
02h o PCL: Contador de programa. Se utiliza para direccionar las palabras de 14 bits
del programa que se encuentra almacenado en la memoria ROM; este contador de
programas es de 13 bits de ancho, figura 3.10. Sobre el byte bajo, se puede escribir o leer
directamente, mientras que sobre el byte alto, no. El byte alto se maneja mediante el
registro PCLATH (0Ah). Ante una condicin de reset el microcontrolador inicia el contador de
programa con todos sus bits en cero. Durante la ejecucin normal del programa, y dado
que todas las instrucciones ocupan slo una posicin de memoria, el contador se
incrementa en uno con cada instruccin, a menos que se trate de alguna instruccin de
salto.
Registro PCL
Registro PCLATH
12
11
10
Bits Incluidos en la
instruccin, suficiente para
direccionar toda la
memoria del PIC16F873
14
El microcontrolador PIC16F873
Registro: STATUS
IRP RP1
RP0
T0
PD
bit 7
DC
C
bit 0
Direccin:
condicin de reset:
03h
000??XXX
20h
FSR
INDO
INCF
BTFSS
GOTO
contina
FSR,1
FSR,6
NEXT
......
15
El microcontrolador PIC16F873
16
El microcontrolador PIC16F873
El microcontrolador PIC16F873
ADRESL
ADRESH
ADCS0
CHS2
CHS1
CHS0
GO/DONE
ADON
bit 0
Bit 0 (ADON): Bit de activacin del mdulo. ADON = 1, Mdulo A/D operando.
ADON = 0, Mdulo A/D desactivado.
Bit 2 (GO/DONE): Estado de conversin: GO = 1, Empieza conversin. GO = 0,
conversin finalizada.
Si ADON = 0, Este bit es cero.
Bits 3, 4 y 5 (CHS0, CHS1, CHS2): Seleccin del canal a convertir (canal 0 - 7).
Bits 6 y 7(ADCS0, ADCS1): Seleccin del reloj de conversin.
ADCS1
0
0
1
1
ADCS0
FRECUENCIA DE CONVERSIN
0
Fosc / 2
1
Fosc / 8
0
Fosc / 32
1
FRC
Figura 3.13. Frecuencias de conversin para el mdulo A/D
Registro ADCON1.
Este es un registro que permite seleccionar como se ubican los diez bits resultado de
la conversin A/D y permite seleccionar cuales de los pines del puerto A trabajarn
como entradas anlogas y cuales como entradas digitales. Adicionalmente, permite
seleccionar los voltajes de referenia del convertidor.
ADFM
bit7
PCFG2
PCFG1
PCFG0
bit 0
18
El microcontrolador PIC16F873
A
A
D
D
D
D
D
A
D
D
D
D
D
D
D
A
A
D
D
D
D
D
A
D
D
D
D
D
D
D
A
A
D
D
D
D
D
A
A
A
A
D
D
D
D
AN4
RA5
A
A
A
A
D
D
D
A
A
A
A
A
D
D
D
AN3
RA3
AN2
RA2
A
VREF+
A
VREF+
A
VREF+
D
VREF+
A
VREF+
VREF+
VREF+
VREF+
D
VREF+
A
A
A
A
D
D
D
VREFA
A
VREFVREFVREFD
VREF-
AN1
RA1
A
A
A
A
A
A
D
A
A
A
A
A
A
D
D
AN0
RA0
A
A
A
A
A
A
D
A
A
A
A
A
A
A
A
VREF+
VDD
RA3
VDD
RA3
VDD
RA3
VDD
RA3
VDD
RA3
RA3
RA3
RA3
VDD
RA3
VREFVSS
VSS
VSS
VSS
VSS
VSS
VSS
RA2
VSS
VSS
RA2
RA2
RA2
VSS
RA2
CHAN /
REFS
8/0
7/1
5/0
4/1
3/0
2/1
0/0
6/2
6/0
5/1
4/2
3/2
2/2
1/0
1/2
A = Entrada Anloga
D = Entrada/Salida Digital
Nota 1: Estos canales no estn disponibles en los dispositivos de 28 pines
19
El microcontrolador PIC16F873
2 Tosc
8 Tosc
32 Tosc
Oscilador interno RC
Para conversiones correctas, el reloj de conversin (Tad) debe ser seleccionado para
tener un tiempo mnimo Tad de 1.6 useg.
FORMA DE REALIZAR LA CONVERSIN A/D :
Configurar el mdulo A/D:
- Configurar los pines anlogos, referencia de voltaje y E/S digitales (ADCON1).
- Seleccionar canal de entrada A/D.
- Seleccionar reloj de conversin A/D.
- Activar el mdulo A/D.
Configurar la interrupcin A/D(si se requiere): ADIF =0 (PIR1<6>); ADIE = 1
(PIE1<6>) y GIE = 1 (INTCON<7>).
20
El microcontrolador PIC16F873
21
El microcontrolador PIC16F873
22