Está en la página 1de 31

MICROCONTROLADORES

PIC 16F877A
ORGANIZACIÓN DE LA MEMORIA
DE DATOS RAM

BANCO RP1 RP0


0 0 0
1 0 1
2 1 0
3 1 1
DIAGRAMA DE CONEXIÓN Y
EMPAQUETADO
DIAGRAMA DE CONEXIÓN Y
EMPAQUETADO
PINES DE PROPOSITO GENERAL

• OSC1/CLKIN(13): Entrada del cristal de


cuarzo o del oscilador externo.
• OSC2/CLKOUT(14): Salida del cristal de
cuarzo.
• VSS(12,31): Conexión a tierra.
• VDD(11,32): Entrada de alimentación
positiva.
PUERTO A

• RA0/AN0(2): Línea de E/S o como entrada


analógica al conversor AD
• RA1/AN1(3): Igual que RA0/AN0.
• RA2/AN2/VREF-(4): Línea de E/S, entrada
analógica o entrada del voltaje negativo de
referencia.
PUERTO A

• RA3/AN3/VREF+(5): Línea E/S, o entrada


de voltaje de referencia positivo
• RA4/TOCKI(6): Línea de E/S, entrada del
reloj del Timer 0.
• RA5/SS#/an4(7): Línea de E/S, entrada
analógica o selección como esclavo de la
puerta serie síncrona.
PUERTO B

• RB0/INT(33): Línea de E/S o de petición de


interrupción externa.
• RB1(34): Línea de E/S digital.
• RB2(35): Línea de E/S digital.
• RB3/PGM (36): Línea de E/S o de entrada
del voltaje bajo de programación.
PUERTO B

• RB4(37): Línea de E/S digital.


• RB5(38): Línea de E/S digital.
• RB6/PGC(39): Línea de E/S digital, en la
programación serie recibe las señales de reloj.
• RB7/PGD(40): Línea de E/S; en la
programación serie actúa como entrada de
datos.
PUERTO C

• RC0/T1OSO/T1CKI(15): Línea de E/S o


salida del oscilador Timer1 o como entrada
del reloj del Timer 1.
• RC1/T1OSI/CCP2(16): Línea de E/S o
entrada al oscilador Timer1 o entrada al
módulo Captura2, Comparación2 de PWM2.
PUERTO C

• RC2/CCP1(17): Línea de E/S; entrada al


módulo Captura1, Comparación1 de PWM1.
• RC3/SCK/SCL(18): Línea de E/S, entrada de
reloj serie síncrona/salida de los modos SPI e
I2C.
• RC4/SDI/SDA(23): Línea de E/S; o entrada
de datos en modo SPI o I/O datos en modo
I2C.
PUERTO C
• RC5/SDO(24): Línea de E/S o salida de datos
en modo SPI.
• RC6/TX/CK(25): Línea de E/S, o pin del
transmisor del USART asíncrono o como
reloj del síncrono.
• RC7/RX/DT(26): Línea de E/S, o pin del
receptor del USART asíncrono o como datos
en el síncrono.
PUERTO D

• RD0/PSP0-RD7/PSP7: Los 8 pines de este


puerto pueden actuar como líneas de E/S
digitales; o como líneas para la transferencia
de información en la comunicación de la
puerta paralela esclava. (PIC16F874/7).
PUERTO E

Sólo tiene 3 pines.


• RE0/RD#AN5 (8): Líneas de E/S o señal de
lectura para la puerta paralela esclava o
entrada analógica (Canal 5).
• RE1/WR#AN6 (9): Líneas de E/S o señal de
escritura en la puerta paralela esclava o
entrada analógica A/D (canal6).
PUERTO E

• RE2/CS#AN7(10): Línea de E/S; o


activación/desactivación de la pueta paralela
esclaa o entrada anlógica (Canal 7).
REGISTRO OPTION
LOS TEMPORIZADORES

• Dichos temporizadores son tres y se


denominan técnicamente:

• TMR0, TMR1 y TMR2


LOS TEMPORIZADORES
TMR0:
• Contador/ Temporizador de 8 bits
• Leible y escribible
• Reloj interno o externo
• Selección del flanco en el reloj externo
• Predivisor de la frecuencia de reloj
• Generación de interrupción opcional por
desbordamiento
REGISTRO INTCON
REGISTRO PIE1

• Contienen los bits que permiten o prohíben


las interrupciones provocadas por los
periféricos internos del microcontrolador y
que no estaban contempladas en INTCON.
• PSPIE Sólo válido en los modelos de 40
pines.
REGISTRO PIE1
REGISTRO PIE2

• Contiene los bits de permiso de interrupción


de las tres causas que no figuraban en PIE1
REGISTRO PIE2
REGISTROS PIR1 PIR2

• Cuyos bits actúan de señalizadores del


momento en el que se origina la causa que
provoca la interrupción, independientemente
de si está permitida o prohibida.
REGISTROS PIR1 PIR2
RETARDOS POR SOFTWARE
El Pic 16F877A tiene un oscilador externo de 20MHz, si utilizamos ese oscilador
tenemos que todas las instrucciones se ejecutan en 0.2 uS, exceptuando los saltos
que tardan 2 ciclos, es decir 0.4 uS. Tomando en cuenta eso vamos a generar
nuestros retardos, pero siempre partiendo de la suposición de que se esta
trabajando a una frecuencia de 20 MHz, si es así, crear rutinas de retardo para
nuestro pic es muy sencillo.

De esta forma tenemos que el número de ciclos, y por lo tanto el tiempo que
tendremos de retardo está dado por la siguiente expresión: 1+1+(1)(N-1)+2+(2)(N-1) ,
ó 4+N-1+2N-2, o lo que es lo mismo 3N+1. Si queremos un retardo de 100uS entonces
tenemos que 3N+1*(0.2uS)=100uS, despejando tenemos
N=(100uS-0.2uS)/3*0.2uS=166, así que para tener un retardo de 100uS el valor de la
variable N debe ser 166.
RETARDOS POR SOFTWARE
Podemos darnos cuenta que ahora nuestra rutina original (desde CICLO2 hasta goto
CICLO) está afectada por la variable M, así que es como si M multiplicara a nuestro
retardo. Para saber el nuevo valor del retardo de nuevo sumamos todos los ciclos,
tomando en cuenta que M multiplica al retardo original de modo que la expresión ahora
queda de la siguiente manera: [3N+1]M+1+1+(1)(M-1)+2+(2)(M-1), o lo que es lo
mismo [3N+1]M+3M+1, de manera que tenemos dos retardos anidados. Para saber
cuanto sería el retardo total primero calculamos el retardo básico, si queremos que ese
retardo sea de 100uS entonces N=166, si ahora queremos que el retardo total sea
de 10mS entonces ocupamos completar 10000 uS, así que igualamos nuestra expresión
a ese número: [(3(0.2uS)*166)+1(0.2uS)]M+3(0.2uS)M+1(0.2uS)=10000 uS,
despejando tenemos M=(10000uS-0.2uS)/100.4uS, esto es aproximadamente igual
a 99, así que para un retardo de 10mS nuestra variable N =166 y M=99.
RETARDOS POR SOFTWARE
• Así podemos seguir anidando retardos. Para obtener un retardo de 1
segundo utilizaremos la siguiente rutina:
FIN

También podría gustarte