Tutorial-pic16 f877a- algunas-mejoras

Aldo Corp
Aldo CorpUploader en Aldo Corp

Tutorial-pic16 f877a- algunas-mejoras

¿Qué es un microcontrolador?
Es un circuito integrado programable que acepta un listado de
instrucciones y contiene todos los componentes de un computador. Se
utilizan para realizar determinadas tareas o para gobernar dispositivos,
debido a su reducido tamaño, suele ir incorporado en el propio dispositivo
que gobierna.
El microcontrolador es un dispositivo dedicado. En su memoria solo reside
un programa destinado a gobernar una aplicación determinada, sus líneas
de entradas y salidas (I/O) permiten la conexión de sensores, relay,
motores, etc. Una vez programado y configurado el microcontrolador
solamente sirve para gobernar la tarea asignada.
Un microcontrolador dispone normalmente de los siguientes componentes:
• Procesador o CPU (Unidad Central de Proceso).
• Memoria RAM para Contener los datos.
• Memoria para el programa tipo ROM/PROM/EPROM/EEPROM & FLASH.
• Líneas de (entrada / salida) para comunicarse con el exterior.
• Diversos módulos para el control de periféricos (temporizadores,
Puertos Serie y Paralelo, A/D y D/A, etc.).
• Generador de impulsos de reloj que sincronizan el funcionamiento de
todo el sistema.
*********************************************************
El siguiente trabajo va dedicado a todos aquellos que se inician en el
mundo de los microcontroladores así como aquellos que les gustaría dar
un repaso a lo aprendido. La primera parte del tutorial notaran que tiene
el enfoque hacia un PIC en especial, el 16F877, ya que es uno de los que
esta en boga y además esta tomando aceptación entre las escuelas, y
pienso que el 16F84 ya esta muy conocido pero no deja de ser poderoso,
Pero recuerden las bases son las mismas.
Espero les agrade y sea motivo de mejoras.
Empezaré por El diagrama de un sistema microcontrolado que sería algo
así:
Los dispositivos de entrada pueden ser un teclado, un interruptor, un
sensor, etc. Los dispositivos de salida pueden ser LED's, pequeños
parlantes, zumbadores, interruptores de potencia (tiristores,
optoacopladores), u otros dispositivos como relés, luces, un secador de
pelo, en fin... lo que se desee. Aquí tienes una representación en bloques
del microcontrolador, se puede ver que lo adaptamos tal y cual es un
ordenador, con su fuente de alimentación, un circuito de reloj y el chip
Microcontrolador, el cual dispone de su CPU, sus memorias, y por
supuesto, sus puertos de comunicación listos para conectarse al mundo
exterior
Enseguida describiré algunos aspectos básicos que tienen que ver con
todos lo microcontroladores PIC de Microchip para su utilización.
En su interior posee un microprocesador, una memoria RAM (volátil)
donde guardaremos las variables, una memoria EEPROM (no volátil)
donde guardaremos nuestro Programa, un Timer o contador que nos
facilitará algunas tareas, y algunas otras cosas más que irán variando
dependiendo de que PIC utilicemos.
Eso no es todo, algunos traen funciones especiales, ya hablaremos de
ellas.
Microcontroladores PIC16CXX/FXX de Microchip Estos micros pertenecen a
la gama media y disponen de un set de 35 instrucciones, por eso lo llaman
de tipo RISC (Reduced Instruction Set Computer) en español sería
"Computador con Set de Instrucciones Reducido" pocas instrucciones pero
muy poderosas, otras son de tipo CISC (Complex Instruction Set
Computer - Computador con Set de Instrucciones Complejo), demasiadas
instrucciones, y lo peor, difíciles de recordar.
Esta familia de microcontroladores se divide en tres rangos según la
capacidad de los microcontroladores. El más bajo lo compone la familia
16C5X. El rango medio lo componen las familias 16C6X/ 7X/ 8X, algunos
con conversores A/D, comparadores, interrupciones, etc. La familia de
rango superior lo componen los 17CXX.
Estas son las funciones especiales de las cuales disponen algunos
micros...
 Conversores análogo a digital (A/D) en caso de que se requiera
medir señales analógicas, por ejemplo temperatura, voltaje,
luminosidad, etc.
 Temporizadores programables (Timer's) Si se requiere medir
períodos de tiempo entre eventos, generar temporizaciones o
salidas con frecuencia específica, etc.
 Interfaz serial RS-232. Cuando se necesita establecer comunicación
con otro microcontrolador o con un computador.
 Memoria EEPROM Para desarrollar una aplicación donde los datos no
se alteren a pesar de quitar la alimentación, que es un tipo de
memoria ROM que se puede programar o borrar eléctricamente sin
necesidad de circuitos especiales.
 salidas PWM (modulación por ancho de pulso) Para quienes
requieren el control de motores DC o cargas resistivas, existen
microcontroladores que pueden ofrecer varias de ellas.
 Técnica llamada de "Interrupciones", (ésta me gustó) Cuando una
señal externa activa una línea de interrupción, el microcontrolador
deja de lado la tarea que está ejecutando, atiende dicha
interrupción, y luego continúa con lo que estaba haciendo.
Los microcontroladores se programan en Lenguaje ensamblador
básicamente, aunque también existen compiladores para hacerlo con otros
lenguajes y cada microcontrolador varía su conjunto de instrucciones de
acuerdo a su fabricante y modelo. De acuerdo al número de instrucciones
que el microcontrolador maneja se le denomina de arquitectura RISC
(reducido) o CISC (complejo).
EL Pic16F877 pertenece a la gama media de Microcontroladores donde
encontraremos modelos desde 18 hasta 68 Pines, su repertorio de
instrucciones es de 35, de 14 bits cada una (Todas las instrucciones son
de un solo ciclo con excepción de las ramificaciones del programa que son
de dos ciclos). Disponen de interrupciones y una pila de 8 niveles que
permite el anidamiento de subrutinas. Se le puede encontrar en un tipo de
encapsulado de 40 pines (ò patas) PDIP el cual es el mas utilizado para su
utilización didáctica en proyectos escolares.
Cuenta con una arquitectura Harvard en la que son independientes la
memoria de instrucciones y la memoria de datos y cada una dispone de su
propio sistema de buses para el acceso.
Posee Rango amplio de tensiones de funcionamiento:
• Comercial: 2.0 a 5.5 volts
• Industrial: 2.0 a 5.5 volts
Consumo muy bajo:
• < 2 mA típico a 5 volt, 4MHz.
• 15 µA típico a 2 volt, 32KHz.
• >0.5 µA típico de corriente en reposo a 2 volts.
Características que lo hacen destacarse por su popularidad en el
mundo de la electrónica:
 Soporta modo de comunicación serial, posee dos pines para ello.
 Amplia memoria para datos y programa.
 Memoria reprogramable: La memoria en este PIC es la que se
denomina FLASH de 8K; este tipo de memoria se puede borrar
electrónicamente (esto corresponde a la “F” en el modelo).
 Set de instrucciones reducidas (tipo RISC), pero con las instrucciones
necesarias para facilitar su manejo.
 En su arquitectura además incorporan:
 3 temporizadores
 4 puertos I/O.
 Comunicación serie y paralela: USART, PSP.
 Bus I2C
 Modulo Convertidor analógico a digital A/D.
 Modulo Comparador con un voltaje de referencia.
Sus características más importantes son:
CARACTERÍSTICAS 16F877A
Frecuencia máxima DX-20MHz
Memoria de programa flash palabra de 14
bits
8KB
Posiciones RAM de datos 368
Posiciones EEPROM de datos 256
Puertos E/S A,B,C,D,E
Número de pines 40
Interrupciones 15
Timers 3
Módulos CCP 2
Comunicaciones Serie MSSP, USART
Comunicaciones paralelo PSP
Modulo Analógico a Digital de 10 bit 8 canales de
entrada
Juego de instrucciones 35 Instrucciones
Longitud de la instrucción 14 bits
Arquitectura Harvard
CPU Risc
Módulos Comparador/comparador/Pwm 2
EL ENCAPSULADO.
DIAGRAMA DE BLOQUES DE SU ARQUITECTURA INTERNA.
Aquí muestro una tabla en la cual describo cada Pin o patilla del
Microcontrolador.
NOMBRE DEL
PIN
PI
N
TIPO
TIPO
DE
BUFFER
DESCRIPCIÓN
OSC1/CLKIN 13 I ST/MOS Oscilador de cristal entrada /
Entrada de señal de reloj externa
OSC2/CLKOUT 14 O - Oscilador de cristal salida / Salida
de señal de reloj externo.
MCLR/Vpp. 1 I/P ST Master Clear (entrada) ó Voltaje
de programación (salida).
Master Clear (reset) entrada.
Este pin activa el reset vuando
esta en bajo (0v.)
Entrada del voltaje de
programación.
RA0/AN0
RA0
AN0
RA1/AN1
RA1
AN1
RA2/AN2/Vref-
RA2
AN2
Vref-
Cvref
RA3/AN3/Vref+
RA3
AN3
Vref+
RA4/T0CKI
RA4
T0CKI
C1OUT
RA5/
/AN4/C2OUT
RA5
AN4
C2OUT
2
3
4
5
6
7
I/O
I
I/O
I
I/O
I
I
O
I/O
I/O
I
0
I/O
I
I
O
TTL
TTL
TTL
TTL
ST
TTL
PORTA es un puerto I/O
bidireccional
RAO: Digital I/O
Entrada Analógica 0
RA1: Digital I/O
Entrada Analógica 1
RA2: Digital I/O
Entrada Analógica 2
A/D Entrada voltaje (bajo)
de referencia.
Comparador VREF. Salida
RA3: Digital I/O
Entrada Analógica 3
A/D Entrada de voltaje
(alto) referencia.
RA4: Digital I/O
Timer0 entrada de reloj
externo.
Comparador1 salida
RA5: Digital I/O
SPI esclavo selección entrada
Entrada Analógica 4
Comparador2 salida
RBO/INT
RBO
INT
RB1
RB2
RB3/PGM
RB3
PGM
RB4
RB5
RB6/PGC
RB6
PGC
RB7/PGD
RB7
PGD
33
34
35
36
37
38
39
40
I/O
I
I/O
I/O
I/O
I/O
I
I/O
I/O
I
I/O
I/O
TTL/ST
TTL
TTL
TTL
TTL
TTL
TTL
TTL/ST
PORTB es un puerto I/O
bidireccional. Puede ser
programado en todas las
entradas con pull up.
RB0: Digital I/O
Interrupción externa.
RB1: Digital I/O
RB2: Digital I/O
RB3: Digital I/O
Entrada de programación de bajo
voltaje ICSP
RB4: Digital I/O
RB5: Digital I/O
RB6: Digital I/O
In circuit debugger y Reloj de
programación serial ICSP
RB7: Digital I/O
In circuit debugger y Dato de
programación serial ICSP
RCO/T1OSO/T1
CKI
RCO
T1OSO
T1CKI
RC1/T1OS1/CCP
2
RC1
T1OS1
CCP2
RC2/CCP1
RC2
CCP1
15
16
17
I/O
O
I
I/O
I
I/O
I/O
I/O
ST
ST
PORTC es un puerto I/O
bidireccional
RCO: Digital I/O
salida del oscilador timer1
entrada de reloj del timer1
RC1: Digital I/O
Entrada del oscilador timer1
Salida PWM 2, Captura2 entrada,
Comparador2 salida
RC2: Digital I/O
Captura1 entrada, Comparador1
salida, PWM1 salida
RC3/SCK/SCL
RC3
SCK
SCL
RC4/SD1/SDA
RC4
SD1
SDA
RC5/SD0
RC5
SD0
RC6/Tx/CK
RC6
Tx
CK
RC7/RX/DT
RC7
RX
DT
18
23
24
25
26
I/O
I/O
I/O
I/O
I
I/O
I/O
O
I/O
O
I/O
I/O
I
I/O
ST
ST
ST
ST
ST
ST
RC3: Digital I/O
Entrada o salida serial de reloj
síncrono para modo SPI.
Entrada o salida serial de reloj
síncrono para modo SPI e IC
RC4: Digital I/O
entrada de datos SPI
IC I/O datos
RC5: Digital I/O
salida de datos SPI
RC6: Digital I/O
Transmisor asíncrono USART
Reloj síncrono USART1.
RC7: Digital I/O
Receptor asíncrono USART
Datos USART síncronos
RD0/PSP0
RD0
PSP0
RD1/PSP1
RD1
PSP1
RD2/PSP2
RD2
PSP2
RD3/PSP3
RD3
PSP3
RD4/PSP4
RD4
PSP4
19
20
21
22
27
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
ST/TTL
ST/TTL
ST/TTL
ST/TTL
ST/TTL
PORTD es un puerto bidireccional
paralelo
RD0: Digital I/O
Dato de Puerto paralelo esclavo
RD1: Digital I/O
Dato de Puerto paralelo esclavo
RD2: Digital I/O
Dato de Puerto paralelo esclavo
RD3: Digital I/O
Dato de Puerto paralelo esclavo
RD4: Digital I/O
Dato de Puerto paralelo esclavo.
RD5/PSP5
RD5
PSP5
RD6/PSP6
RD6
PSP6
RD7/PSP7
RD7
PSP7
28
29
30
I/O
I/O
I/O
I/O
I/O
I/O
ST/TTL
ST/TTL
ST/TTL
RD5: Digital I/O
Dato de Puerto paralelo esclavo.
RD6: Digital I/O
Dato de Puerto paralelo esclavo.
RD7: Digital I/O
Dato de Puerto paralelo esclavo.
REO/ /AN5
REO
AN5
RE1/ /AN6
RE1
AN6
RE2/ /AN7
AN7
8
9
10
I/O
I
I
I
I/O
I
I
I/O
I
I
ST/TTL
ST/TTL
ST/TTL
PORTE es un puerto I/O
bidireccional
REO: Digital I/O
Control de lectura para el puerto
esclavo paralelo.
Entrada analógica 5.
RE1: Digital I/O
Escritura de control para el
puerto paralelo esclavo.
Entrada analógica 6
RE2:Digital I/O
Selector de control para el puerto
paralelo esclavo.
Entrada analógica 7.
Vss 12
31
P - Referencia de tierra para los
pines lógicos y de I/O
Vdd 11
32
P - Fuente positiva para los pines
lógicos y de I/O
Descripción de los puertos:
Puerto A:
• Puerto de e/s de 6 pines
• RA0 è RA0 y AN0
• RA1 è RA1 y AN1
• RA2 è RA2, AN2 y Vref-
• RA3 è RA3, AN3 y Vref+
• RA4 è RA4 (Salida en colector abierto) y T0CKI(Entrada de reloj del
modulo Timer0)
• RA5 è RA5, AN4 y SS (Selección esclavo para el puerto serie síncrono)
Puerto B:
• Puerto e/s 8 pines
• Resistencias pull-up programables
• RB0 è Interrupción externa
• RB4-7 è Interrupción por cambio de flanco
• RB5-RB7 y RB3 è programación y debugger in circuit
Puerto C:
• Puerto e/s de 8 pines
• RC0 è RC0, T1OSO (Timer1 salida oscilador) y T1CKI (Entrada de reloj
del modulo Timer1).
• RC1-RC2 è PWM/COMP/CAPT
• RC1 è T1OSI (entrada osc timer1)
• RC3-4 è IIC
• RC3-5 è SPI
• RC6-7 è USART
Puerto D:
• Puerto e/s de 8 pines
• Bus de datos en PPS (Puerto paralelo esclavo)
• Puerto E:
• Puerto de e/s de 3 pines
• RE0 è RE0 y AN5 y Read de PPS
• RE1 è RE1 y AN6 y Write de PPS
• RE2 è RE2 y AN7 y CS de PPS
Dispositivos periféricos:
 Timer0: Temporizador-contador de 8 bits con preescaler de 8 bits
 Timer1: Temporizador-contador de 16 bits con preescaler que puede
incrementarse en modo sleep de forma externa por un cristal/clock.
 Timer2: Temporizador-contador de 8 bits con preescaler y
postescaler.
 Dos módulos de Captura, Comparación, PWM (Modulación de
Anchura de pulsos).
 Conversor A/D de 10 bits.
 Puerto Serie Síncrono Master (MSSP) con SPI e I2
C (Master/Slave).
 USART/SCI (Universal Synchronous Asynchronous Receiver
Transmitter) con 9 bit.
 Puerta Paralela Esclava (PSP) solo en encapsulados con 40 pines.
(MCLR / Vpp): Es una pata de múltiples aplicaciones, es la entrada de
Reset (master clear) si está a nivel bajo y también es la habilitación de la
tensión de programación cuando se está programando el dispositivo.
Cuando su tensión es la de VDD el PIC funciona normalmente.
EL RESET: EL PIC16F877 posee internamente un circuito temporizador
conectado al pin de reset que funciona cuando se da alimentación al
micro, se puede entonces conectar el pin de MCLR a la fuente de
alimentación. Esto hace que al encender el sistema el microcontrolador
quede en estado de reset por un tiempo mientras se estabilizan todas las
señales del circuito (lo cual es bastante bueno, por eso siempre la
usaremos...), Además de que nos puede servir por si el micro en algún
momento no nos responde nunca esta demás aquí muestro el
conexionado del botón que hará dicha función.
(VSS y VDD): Son respectivamente las patas de masa y alimentación. La
tensión de alimentación de un PIC está comprendida entre 2V y 6V
aunque se recomienda no sobrepasar los 5.5V
(OSC1/CLKIN y OSC2/CLKOUT): Corresponden a los pines de la
entrada externa de reloj y salida de oscilador a cristal respectivamente.
El oscilador externo: Es un circuito externo que le indica al micro 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 P1C16F877 puede utilizar cuatro tipos de
reloj 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.
En el momento de programar o "quemar" el microcontrolador se debe
Especificar que tipo de oscilador se usa. Esto se hace a través de unos
Fusibles llamados "fusibles de configuración" o fuses.
En el PIC16F877 se puede admitir un oscilador de cristal desde 4 a 20
MHz. Por el momento utilizamos uno de 4MHz, porque garantiza mayor
precisión y un buen arranque del microcontrolador. Internamente esta
frecuencia es dividida por cuatro, lo que hace que la frecuencia efectiva de
trabajo sea de 1 MHz, por lo que cada instrucción se ejecuta en un
microsegundo. El cristal debe ir acompañado de dos condensadores y el
modo de conexión es el
Siguiente:
Si se requiere de mucha precisión en el oscilador, podemos utilizar una
Resistencia y un condensador, como se muestra en la figura. Donde OSC2
Queda libre entregando una señal cuya frecuencia es la del OSC/4.
Según las recomendaciones de Microchip (R) puede tomar valores entre
5k y 100k, y C superior a 20pf.
Organización de la memoria.
En primer lugar tenemos que distinguir claramente entre tres tipos de
Memoria:
 Una: la memoria EEPROM donde almacenaremos el programa que
Haremos, esta memoria solo podrá ser leída por el pic (el pic va
Leyendo las instrucciones del programa almacenado en esta memoria
Y las va ejecutando). Al apagar el pic esta memoria no se borra.
 Dos: la memoria RAM en cuyos registros se irán almacenando los
Valores de las variables que nosotros queramos y cuando nosotros
Queramos (por programa), al apagar el pic esta memoria se borra.
 Tres: la memoria EEPROM para datos, es un espacio de memoria
EEPROM en la que se pueden guardar variables que queremos
Conservar aunque se apague el pic. No se tratará aquí por ser una
Memoria más difícil de emplear.
La memoria EEPROM ò memoria de Programa.
El espacio marcado como “User memory Space” es el espacio de memoria
donde ira nuestro programa, desde 0000h hasta la 1FFFh.
"Reset Vector" es la primera dirección a la que se dirige el pic al
encenderlo o al
Resetearlo.
"PC" y los "Stack Level" son empleado por el pic y nosotros no tenemos
acceso
a ellos.
LA MEMORIA RAM La memoria RAM no solo se usa para almacenar
nuestras variables, también se almacenan una serie de registros que
configuran y controlan el PIC. Podemos observar en la imagen que esta
memoria esta dividida en 4 Bancos (banco 0,1, 2, 3). Antes de acceder a
un registro de esta memoria tenemos que preguntarnos en que banco
estamos, generalmente se trabaja en el banco 0 cada banco contiene sus
registros que sirven para la configuración y control de la memoria RAM.
Estos registros se usan para controlar los pines del PIC, consultar los
resultados de las operaciones de la ALU (unidad aritmética lógica),
cambiar del banco de memoria entre otras cosas.
La selección del banco de memoria se hace por medio de los bits RP1 y
RP0 del registro STATUS (6,5).
Tabla de selección de bancos.
CONFIGURACIÓN DE LOS PUERTOS DEL PIC
Llegó el momento de ver como configurar los puertos del PIC. Para poder
Hacerlo es necesario conocer la tabla de registros de la memoria de datos,
la cual como dijimos, está dividida en el BANCO 0, BANCO 1, BANCO 2,
BANCO 3.
Los registros importantes en la configuración de los puertos son:
STATUS dirección 03h
PORTA dirección 05h
PORTB dirección 06h
PORTC dirección 07h
PORTD dirección 08h
PORTE dirección 09h
TRISA dirección 85h
TRISB dirección 86h
TRISC dirección 87h
TRISD dirección 88h
TRISE dirección 89h
NOTA: solo incluyo los registros de los bancos 0 y 1 ya que para los dos
restantes es similar su configuración. Por defecto el PIC tendrá todos los
I/O Port's (es decir los puertos RA, RB, RC, RD, RE), colocados como
entrada de datos, y si queremos cambiarlos habrá que configurarlos.
Al configurar los puertos se deberá tener en cuenta que:
Si asignas un CERO (0) a un pin, éste quedará como salida y...
Si le asignas un UNO (1), quedará como entrada.
Esta asignación se hace en:
TRISA para los pines del PUERTO A.
TRISB para los pines del PUERTO B.
TRISC para los pines del PUERTO C.
TRISD para los pines del PUERTO D.
TRISE para los pines del PUERTO E.
Por ejemplo si TRISE es igual a 110 todos sus pines serán entradas salvo
RE0 que esta como salida.
SI TRISB es igual a 00000001 todos sus pines serán salidas salvo RB0
que esta como entrada.
Cuando el PIC arranca se encuentra en el BANCO 0, como TRISA y TRISB
Están en el BANCO 1 no queda de otra, deberemos cambiar de banco.
Esto se logra a través del Registro STATUS.
STATUS es un Registro de 8 bits u 8 casillas, en el cual la Nº 5 (RP0) y la
Nº 6 (RP1) definen la posición del banco en donde nos encontramos.
Como se muestra con la figura que se vio en la sección de la LA
MEMORIA RAM (Tabla de selección de bancos).
DESCRIPCION DE ALGUNOS DE LOS REGISTROS INTERNOS DEL
BANCO 0.
INDF (direccionamiento indirecto): Dirección 00h, sirve para ver el
dato de la dirección a la que apunta el registro FSR (dir. 04h).
TMR0 (Timer/contador): Dirección 01h, Aquí se puede ver el valor en
Tiempo real del Timer/contador. También se puede introducir un valor
y alterar así el conteo. Este conteo puede ser interno (cuenta ciclos de
Reloj) o externo (cuenta impulsos introducidos por RA4).
PCL (Parte baja del contador de programa): Dirección 02h,
Modificando este registro se modifica el contador de programa, este
contador de programa es el que señala al pic en que dirección (de
EEPROM) tiene que leer la siguiente instrucción. Esto se utiliza mucho
para consultar tablas.
STATUS: Dirección 03h, este es uno de los registros mas importantes
Y el que más vas a utilizar. Hay que analizar el funcionamiento de
Este registro bit a bit:
• CARRY, Dirección STATUS, 0 (bit 0): bit de desbordamiento. Este bit
se pone a "1" cuando la operación anterior ha rebasado la capacidad de un
byte. Por ejemplo, si sumo dos números y el resultado no cabe en 8 bit el
CARRY se pone a "1", Pasa lo mismo cuando resto dos números y el
resultado es un número negativo. Se puede usar para saber si un número
es mayor que otro (restándolos, si hay acarreo es que el segundo era
mayor que el primero). Una vez que este bit se pone a "1" no se baja solo
(a"0"), hay que hacerlo por programa si queremos volverlo a utilizar.
• DC (digit carry), Dirección STATUS, 1 (bit 1): lo mismo que el
anterior pero esta vez nos avisa si el número no cabe en cuatro bits.
• Z (zero), Dirección STATUS, 2 (bit 2): Se pone a "1" si la operación
anterior ha sido cero. Y pasa a "0" si la operación anterior no ha sido cero.
Se usa para comprobar la igualdad entre dos números (restándolos, si el
resultado es cero ambos números son iguales)
• PD (Power - Down bit), Dirección STATUS, 3 (bit3): se pone a "0"
después de ejecutar la instrucción SLEEP, se pone a "1" después de
ejecutar la instrucción CLRWDT o después de un power-up.
• TO (Timer Up), Dirección STATUS, 4 (bit4): se pone a "0" cuando se
acaba el tiempo del WATCHDOG, Se pone a "1" después de ejecutar las
instrucciones, CLRWDT o SLEEP o después de un power-up.
• RP0 y RP1 (selección directa de banco), Dirección STATUS, 5 y
STATUS, 6: 11 = Bank 3 (180h-1FFh)
10 = Banco 2 (100h-17Fh)
01 = Banco 1 (80h-FFh)
00 = Banco 0 (00h-7Fh)
Cada banco es de 128 bytes.
• IRP,(selección indirecta de banco) Dirección STATUS,7:
1 = Banco 2, 3 (100h-1FFh)
0 = Banco 0, 1 (00h-FFh)
FSR (Puntero), Dirección 04h, se usa para direccionamiento indirecto en
combinación con el registro INDF (dir. 00h): se carga la dirección del registro
que queremos leer indirectamente en FSR y se lee el contenido de dicho registro
en INDF.
PORTA (Puerto A), Dirección 05h: Con este registro se puede ver o modificar
el estado de los pines del puerto A (RA0 – RA7). Si un bit de este registro está a
"1" también lo estará el pin correspondiente a ese bit. El que un pin esté a "1"
quiere decir que su tensión es de 5V, si está a "0" su tensión es 0V.
Así sucede también para PORTB, C, D y E.
PCLATH, Dirección 0Ah: Modifica la parte alta del contador de programa
(PC), el contador de programa se compone de 13 bits, los 8 bits de menor peso
se pueden modificar con PCL (dir. 02h) y los 5 bits de mayor peso se pueden
modificar con PCLATH.
INTCON (controla las interrupciones), Dirección 0Bh: Se estudia bit a
bit:
• RBIF (Flag de interrupción por cambio de PORTB) Dirección
INTCON,0 (bit0): se pone a "1" cuando alguno de los pines RB4, RB5,
RB6, o RB7 cambia su estado. Una vez que está a "1" no pasa a "0" por si
mismo: hay que ponerlo a cero por programa.
• INTF (Flag de interrupción de RB0) Dirección INTCON,1: Si está a
"1" es que ha ocurrido una interrupción por RB0, si está a "0" es que
dicha interrupción no ha ocurrido. Este bit es una copia de RB0.
• TMROIF (Flag de interrupción por desbordamiento de TMR0)
Dirección INTCON,2: Cuando TMR0 se desborda este Flag avisa
poniendose a "1". Poner a "0" por programa.
• RBIE (Habilita la interrupción por cambio de PORTB) Dirección
INTCON,3: Si está a "1" las interrupciones por cambio de PORTB son
posibles.
• INTE (Habilita la interrupción por RB0) Dirección INTCON,4: Si lo
ponemos a "1" la interrupción por RB0 es posible.
• TMROIE (Habilita la interrupción por desbordamiento de TMR0)
Dirección INTCON,5: Si este bit esta a "1" la interrupción por
desbordamiento de TMR0 es posible.
• PEIE (Habilita la interrupción de periféricos Dirección INTCON,6:
Cuando este bit está a "1" habilita todas las interrupciones de periférico
enmascarables.
• GIE (Habilita las interrupciones globalmente) Dirección INTCON,7:
Este bit permite que cualquier interrupción de las anteriores sea posible.
Para usar alguna de las interrupciones anteriores hay que habilitarlas
globalmente e individualmente.
MAPA DE MEMORIA RAM Y REGISTROS.
SET DE INSTRUCCIONES PARA PIC16F87X:
Para entender mejor cada instrucción se explica a continuación el
significado de algunos parámetros:
 f: Registro al que afecta la instrucción
 W: Acumulador (Working register)
 b: Número de bit (hay instrucciones que afectan a un solo bit)
 k: constante (un número)
 d: selección de destino del resultado de la instrucción, puede ser "0"
o "1", si es "0" el resultado se guarda en el acumulador (W) y si es
"1" se guarda en el registro f al que afecta la instrucción.
Instrucciones orientadas a registros:
 ADDWF f,d Suma W y el registro f, el resultado lo guarda
según d (si d=0 se guarda en W y si d=1 se guarda en f).
 ANDWF f,d Realiza la operación AND lógica entre W y f, el
Resultado lo guarda según d.
 CLRF f Borra el registro f (pone todos sus bits a cero).
 CLRW - Borra el acumulador.
 COMF f,d Calcula el complementario del registro f (los bits
que estan a "0" los pone a "1" y viceversa. Resultado según d.
 DECF f,d Decrementa f en uno (le resta uno). Resultado
según d.
 DECFSZ f,d Decrementa f y se salta la siguiente instrucción si
el resultado es cero. Resultado según d.
 INCF f,d Incrementa f en uno (le suma uno). Resultado según
d.
 INCFSZ f,d Incrementa f y se salta la siguiente instrucción si
el resultado es cero (cuando se desborda un registro vuelve al
valor 00h). Resultado según d.
 IORWF f,d Realiza la operación lógica OR entre W y f.
Resultado según d.
 MOVF f,d Mueve el contenido del registro f a W si d=0 (si d=1
lo vuelve a poner en el mismo registro).
 MOVWF f mueve el valor de W a f. Por ejemplo, si queremos
copiar el valor del registro "REG1" al registro "REG2" (ya veremos como
ponerles nombres a los registros) escribiremos:
MOVF REG1,0 ; mueve el valor de REG1 a W
MOVWF REG2 ; mueve el valor de W a REG2
Lo que va después del; son comentarios
 NOP - No hace nada, solo pierde el tiempo durante un ciclo.
 RLF f,d Rota el registro f hacia la izquierda a través del bit CARRY
(todos los bits se mueven un lugar hacia la izquierda, el bit 7 de f
pasa al CARRY y el bit CARRY pasa al bit 0 de f). Resultado según d.
 RRF f,d Lo mismo que RLF pero hacia la derecha.
 SUBWF f,d Resta f y W (f - W). Resultado según d.
 SWAPF f,d intercambia los 4 primeros bit de f por los otros cuatro.
Resultado según d.
 XORWF f,d Realiza la operación lógica XOR (OR exclusiva) entre W
y f. Resultado según d.
Instrucciones orientadas a bits:
 BCF f,b Pone a "0" el bit b del registro f
 BSF f,b Pone a "1" el bit b del registro f
 BTFSC f,b Se salta la siguiente instrucción si el bit b del registro f es "0"
 BTFSS f,b Se salta la siguiente instrucción si el bit b del registro f es "1"
Instrucciones orientadas a constantes y de control:
 ADDLW k Le suma el valor k al acumulador (W).
 ANDLW k Operación lógica AND entre W y el valor k (resultado en W).
 CALL k Llamada a subrutina cuyo inicio esta en la dirección k
 CLRWDT - Borra el registro Watchdog
 GOTO k Salta a la dirección k de programa.
 IORLW k Operación lógica OR entre W y el valor k (resultado en W)
 MOVLW k carga el acumulador con el valor k. Por ejemplo, si queremos
cargar el valor 2Ah en el registro "REG1" escribiremos:
MOVLW 2AH; carga el acumulador con el valor 2Ah
MOVWF REG1; mueve el valor de W a "REG1"
 RETFIE - Instrucción para volver de la interrupción
 RETLW k carga el valor k en W y vuelve de la interrupción
 RETURN - vuelve de una subrutina.
 SLEEP - El pic pasa a modo de Standby.
BIBLIOGRAFIA:
1. Hoja de datos del PIC16F87xA de Microchip.
2. Programación del PIC16F84. por Carlos Díaz www.electron.es.vg
3. Club Saber electrónica “curso de pics para estudiantes y aficionados” N0 20.
4. Ed Quark Ing. Horacio D. Vallejo
5. Club Saber electrónica “microcontroladores PIC Programación y desarrollo”
N0 24. Ed Quark Ing. Horacio D. Vallejo
6. EL PIC16F877 por Marco Antonio Márquez Suárez

Recomendados

PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ... por
PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...
PLC: fabricación de PLC utilizando microcontroladores para uso didáctico con ...SANTIAGO PABLO ALBERTO
176 vistas159 diapositivas
Amplificador de instrumentación por
Amplificador de instrumentaciónAmplificador de instrumentación
Amplificador de instrumentaciónSaul Perez
5.9K vistas14 diapositivas
Display 7 Segmentos por
Display 7 SegmentosDisplay 7 Segmentos
Display 7 SegmentosOswST
4.4K vistas7 diapositivas
Examen micros t1_06_solucion por
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucionJair BG
941 vistas6 diapositivas
Microprogramacion - Interrupciones y timers por
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersmarco calderon layme
3.1K vistas17 diapositivas
Informe 4 digitales por
Informe 4 digitalesInforme 4 digitales
Informe 4 digitalesJoseph Lino Juarez
9.4K vistas11 diapositivas

Más contenido relacionado

La actualidad más candente

50824079 datasheet-pic18f4550-espanol por
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanolRichard Todavia Forjandose
4.9K vistas234 diapositivas
Origen de las señales willy por
Origen de las señales willyOrigen de las señales willy
Origen de las señales willymkferre
983 vistas15 diapositivas
Fault detection and test minimization methods por
Fault detection and test minimization methodsFault detection and test minimization methods
Fault detection and test minimization methodspraveenkaundal
1.8K vistas14 diapositivas
Digital Alarm Clock (IC-TMS-8560) por
Digital Alarm Clock (IC-TMS-8560)Digital Alarm Clock (IC-TMS-8560)
Digital Alarm Clock (IC-TMS-8560)Chintan Patel
5.3K vistas15 diapositivas
Inyector y trazador de señal por
Inyector y trazador de señalInyector y trazador de señal
Inyector y trazador de señalMy Electronic
4.7K vistas9 diapositivas
Circuito Derivador e Integrador por
Circuito Derivador e IntegradorCircuito Derivador e Integrador
Circuito Derivador e IntegradorOscar Mendoza Gutiérrez
51.6K vistas13 diapositivas

La actualidad más candente(20)

Origen de las señales willy por mkferre
Origen de las señales willyOrigen de las señales willy
Origen de las señales willy
mkferre983 vistas
Fault detection and test minimization methods por praveenkaundal
Fault detection and test minimization methodsFault detection and test minimization methods
Fault detection and test minimization methods
praveenkaundal1.8K vistas
Digital Alarm Clock (IC-TMS-8560) por Chintan Patel
Digital Alarm Clock (IC-TMS-8560)Digital Alarm Clock (IC-TMS-8560)
Digital Alarm Clock (IC-TMS-8560)
Chintan Patel5.3K vistas
Inyector y trazador de señal por My Electronic
Inyector y trazador de señalInyector y trazador de señal
Inyector y trazador de señal
My Electronic4.7K vistas
Informe escrito final de amplificador de sonido por derincampos19
Informe escrito final de amplificador de sonidoInforme escrito final de amplificador de sonido
Informe escrito final de amplificador de sonido
derincampos1912.2K vistas
PWM con PIC16F877A: Modulos y Registros Involucrados por Eduardo Henriquez
PWM con PIC16F877A: Modulos y Registros InvolucradosPWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros Involucrados
Eduardo Henriquez31.4K vistas
Práctica de flip flops por kartorrealba
Práctica de flip flopsPráctica de flip flops
Práctica de flip flops
kartorrealba1.7K vistas
Club 077 montajes de instrumental electronico 2 por MarcosGSavedra
Club 077 montajes de instrumental electronico 2Club 077 montajes de instrumental electronico 2
Club 077 montajes de instrumental electronico 2
MarcosGSavedra211 vistas
Digital Electronics viva and interview questions-min.pdf por Engineering Funda
Digital Electronics viva and interview questions-min.pdfDigital Electronics viva and interview questions-min.pdf
Digital Electronics viva and interview questions-min.pdf
Engineering Funda386 vistas
Serial peripheral Interface - Embedded System Protocol por Aditya Porwal
Serial peripheral Interface - Embedded System ProtocolSerial peripheral Interface - Embedded System Protocol
Serial peripheral Interface - Embedded System Protocol
Aditya Porwal2.6K vistas
Informe previo y experimento nª1 del Lab. Circuitos Electronicos II UNSAAC(w... por Watner Ochoa Núñez
Informe previo y experimento nª1 del  Lab. Circuitos Electronicos II UNSAAC(w...Informe previo y experimento nª1 del  Lab. Circuitos Electronicos II UNSAAC(w...
Informe previo y experimento nª1 del Lab. Circuitos Electronicos II UNSAAC(w...
Informe escrito final amplificador de audio por Jorge Rivera
Informe escrito final amplificador de audioInforme escrito final amplificador de audio
Informe escrito final amplificador de audio
Jorge Rivera628 vistas
Amplificadores diferenciales y en cascada por AnaCegarra
Amplificadores diferenciales y en cascadaAmplificadores diferenciales y en cascada
Amplificadores diferenciales y en cascada
AnaCegarra18.4K vistas

Destacado

Comandar un pic a través de internet por
Comandar un pic a través de internetComandar un pic a través de internet
Comandar un pic a través de internetBiblioman Aquihayapuntes
6.1K vistas26 diapositivas
Manual de uso para mplab por
Manual de uso para mplabManual de uso para mplab
Manual de uso para mplabFabioPorras
2.2K vistas24 diapositivas
CONJUNTO DE INSTRUCCIONES PIC16F877A por
CONJUNTO DE INSTRUCCIONES PIC16F877ACONJUNTO DE INSTRUCCIONES PIC16F877A
CONJUNTO DE INSTRUCCIONES PIC16F877AAnllel Cardenas Yllanes
5.1K vistas1 diapositiva
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de... por
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...
Diseño de un sistema de microcontroladores maestro-esclavo mediante el uso de...MariaBarradas17
2.5K vistas23 diapositivas
Conexiones del PIC16F887 por
Conexiones del PIC16F887Conexiones del PIC16F887
Conexiones del PIC16F887Fernando Aparicio Urbano Molano
9.4K vistas4 diapositivas
Modulo Timer 0 del PIC16F887 por
Modulo Timer 0 del PIC16F887Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887Fernando Aparicio Urbano Molano
9.2K vistas12 diapositivas

Similar a Tutorial-pic16 f877a- algunas-mejoras

Microcontroladores tabla de referencia por
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referenciaRuderocker Billy
1.4K vistas57 diapositivas
3 microcontroladores por
3 microcontroladores3 microcontroladores
3 microcontroladoresProyesa
312 vistas36 diapositivas
3 microcontroladores por
3 microcontroladores3 microcontroladores
3 microcontroladoresAntonio Carrasco
253 vistas36 diapositivas
Microcontroladores pic14f84a por
Microcontroladores pic14f84aMicrocontroladores pic14f84a
Microcontroladores pic14f84adanqueas
600 vistas29 diapositivas
Arquitectura de un plc por
Arquitectura de un plcArquitectura de un plc
Arquitectura de un plcgustavo sanchez mercado
872 vistas7 diapositivas
Introducción por
IntroducciónIntroducción
IntroducciónSistemadeEstudiosMed
62 vistas16 diapositivas

Similar a Tutorial-pic16 f877a- algunas-mejoras(20)

Microcontroladores tabla de referencia por Ruderocker Billy
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referencia
Ruderocker Billy1.4K vistas
3 microcontroladores por Proyesa
3 microcontroladores3 microcontroladores
3 microcontroladores
Proyesa312 vistas
Microcontroladores pic14f84a por danqueas
Microcontroladores pic14f84aMicrocontroladores pic14f84a
Microcontroladores pic14f84a
danqueas600 vistas
Apunte de microprocesadores pic por carlos960
Apunte de microprocesadores picApunte de microprocesadores pic
Apunte de microprocesadores pic
carlos960159 vistas
135127015 microcontroladores-1-1-ppt por Carlos Martir
135127015 microcontroladores-1-1-ppt135127015 microcontroladores-1-1-ppt
135127015 microcontroladores-1-1-ppt
Carlos Martir3K vistas
Microcontrolador wiki por clides2006
Microcontrolador wikiMicrocontrolador wiki
Microcontrolador wiki
clides200615 vistas

Más de Aldo Corp

Arvenses expo mañana por
Arvenses expo mañanaArvenses expo mañana
Arvenses expo mañanaAldo Corp
588 vistas22 diapositivas
Situaciones emergentes que conflictúan pero no niegan la experiencia de la li... por
Situaciones emergentes que conflictúan pero no niegan la experiencia de la li...Situaciones emergentes que conflictúan pero no niegan la experiencia de la li...
Situaciones emergentes que conflictúan pero no niegan la experiencia de la li...Aldo Corp
212 vistas7 diapositivas
Fuerzas Intermoleculares(Quimica)-- Cuestionario de 5 preguntas con sus Respu... por
Fuerzas Intermoleculares(Quimica)-- Cuestionario de 5 preguntas con sus Respu...Fuerzas Intermoleculares(Quimica)-- Cuestionario de 5 preguntas con sus Respu...
Fuerzas Intermoleculares(Quimica)-- Cuestionario de 5 preguntas con sus Respu...Aldo Corp
3.5K vistas2 diapositivas
Electroquimica & Ley de ohm --Aldo Corp--- por
Electroquimica & Ley de ohm  --Aldo Corp---Electroquimica & Ley de ohm  --Aldo Corp---
Electroquimica & Ley de ohm --Aldo Corp---Aldo Corp
320 vistas14 diapositivas
Modelo de Certificado de no estar presente por trabajo por
Modelo de Certificado de no estar presente por trabajoModelo de Certificado de no estar presente por trabajo
Modelo de Certificado de no estar presente por trabajoAldo Corp
839 vistas1 diapositiva
Reacciones quimicas por
Reacciones quimicasReacciones quimicas
Reacciones quimicasAldo Corp
1.5K vistas15 diapositivas

Más de Aldo Corp(20)

Arvenses expo mañana por Aldo Corp
Arvenses expo mañanaArvenses expo mañana
Arvenses expo mañana
Aldo Corp588 vistas
Situaciones emergentes que conflictúan pero no niegan la experiencia de la li... por Aldo Corp
Situaciones emergentes que conflictúan pero no niegan la experiencia de la li...Situaciones emergentes que conflictúan pero no niegan la experiencia de la li...
Situaciones emergentes que conflictúan pero no niegan la experiencia de la li...
Aldo Corp212 vistas
Fuerzas Intermoleculares(Quimica)-- Cuestionario de 5 preguntas con sus Respu... por Aldo Corp
Fuerzas Intermoleculares(Quimica)-- Cuestionario de 5 preguntas con sus Respu...Fuerzas Intermoleculares(Quimica)-- Cuestionario de 5 preguntas con sus Respu...
Fuerzas Intermoleculares(Quimica)-- Cuestionario de 5 preguntas con sus Respu...
Aldo Corp3.5K vistas
Electroquimica & Ley de ohm --Aldo Corp--- por Aldo Corp
Electroquimica & Ley de ohm  --Aldo Corp---Electroquimica & Ley de ohm  --Aldo Corp---
Electroquimica & Ley de ohm --Aldo Corp---
Aldo Corp320 vistas
Modelo de Certificado de no estar presente por trabajo por Aldo Corp
Modelo de Certificado de no estar presente por trabajoModelo de Certificado de no estar presente por trabajo
Modelo de Certificado de no estar presente por trabajo
Aldo Corp839 vistas
Reacciones quimicas por Aldo Corp
Reacciones quimicasReacciones quimicas
Reacciones quimicas
Aldo Corp1.5K vistas
Reacciones Químicas Cuestionario con 10 Preguntas y Respuestas por Aldo Corp
Reacciones Químicas Cuestionario con 10 Preguntas y Respuestas Reacciones Químicas Cuestionario con 10 Preguntas y Respuestas
Reacciones Químicas Cuestionario con 10 Preguntas y Respuestas
Aldo Corp78.7K vistas
Informe (ieee) generador de diente de sierra por Aldo Corp
Informe (ieee) generador de diente de sierraInforme (ieee) generador de diente de sierra
Informe (ieee) generador de diente de sierra
Aldo Corp1.3K vistas
Que es PIB por Aldo Corp
Que es PIBQue es PIB
Que es PIB
Aldo Corp357 vistas
Modelos matematicos (IEEE) por Aldo Corp
Modelos matematicos (IEEE)Modelos matematicos (IEEE)
Modelos matematicos (IEEE)
Aldo Corp619 vistas
Sistema de ecuaciones linelaes (IEEE).pdf por Aldo Corp
Sistema de ecuaciones linelaes  (IEEE).pdfSistema de ecuaciones linelaes  (IEEE).pdf
Sistema de ecuaciones linelaes (IEEE).pdf
Aldo Corp415 vistas
Introducción a la investigación científica por Aldo Corp
Introducción a la investigación científicaIntroducción a la investigación científica
Introducción a la investigación científica
Aldo Corp167 vistas
Cortes y secciones . por Aldo Corp
Cortes y secciones .Cortes y secciones .
Cortes y secciones .
Aldo Corp2.1K vistas
Formato articulos-ieee por Aldo Corp
Formato articulos-ieeeFormato articulos-ieee
Formato articulos-ieee
Aldo Corp2.3K vistas
Banco de preguntas para el Examen Nacional ser bachiller (Ecuador) por Aldo Corp
Banco de preguntas para el  Examen Nacional ser bachiller (Ecuador)Banco de preguntas para el  Examen Nacional ser bachiller (Ecuador)
Banco de preguntas para el Examen Nacional ser bachiller (Ecuador)
Aldo Corp26.4K vistas
Ecuación de las cónicas por Aldo Corp
Ecuación de las cónicas Ecuación de las cónicas
Ecuación de las cónicas
Aldo Corp571 vistas
Tecnicas de investigacion paradigmas de la investigacion. por Aldo Corp
Tecnicas de investigacion paradigmas de la investigacion.Tecnicas de investigacion paradigmas de la investigacion.
Tecnicas de investigacion paradigmas de la investigacion.
Aldo Corp222 vistas
herramientas informaticas para la informacion (Tecnicas de investigacion) por Aldo Corp
 herramientas informaticas para la informacion (Tecnicas de investigacion) herramientas informaticas para la informacion (Tecnicas de investigacion)
herramientas informaticas para la informacion (Tecnicas de investigacion)
Aldo Corp639 vistas
Clases u guftg por Aldo Corp
Clases u guftgClases u guftg
Clases u guftg
Aldo Corp221 vistas
Universidad politécnica salesiana - Bryan Marquina por Aldo Corp
Universidad politécnica salesiana - Bryan MarquinaUniversidad politécnica salesiana - Bryan Marquina
Universidad politécnica salesiana - Bryan Marquina
Aldo Corp220 vistas

Último

0 FiUBA 7.12.23 ISV 19-21.30 fjs.pdf por
0 FiUBA 7.12.23 ISV 19-21.30 fjs.pdf0 FiUBA 7.12.23 ISV 19-21.30 fjs.pdf
0 FiUBA 7.12.23 ISV 19-21.30 fjs.pdfFRANCISCOJUSTOSIERRA
27 vistas1000 diapositivas
T6_EJERCICIOS (2).pdf por
T6_EJERCICIOS (2).pdfT6_EJERCICIOS (2).pdf
T6_EJERCICIOS (2).pdfMatematicaFisicaEsta
7 vistas3 diapositivas
examen final de estadistica hoy 4.pdf por
examen final de estadistica hoy 4.pdfexamen final de estadistica hoy 4.pdf
examen final de estadistica hoy 4.pdfMatematicaFisicaEsta
41 vistas6 diapositivas
evaluacion n°3 (página 2 de 3).pdf por
evaluacion n°3 (página 2 de 3).pdfevaluacion n°3 (página 2 de 3).pdf
evaluacion n°3 (página 2 de 3).pdfmatepura
13 vistas5 diapositivas
MATERIALES Y HERRAMIENTAS PARA INSTALACIONES ELECTRICAS.docx por
MATERIALES Y HERRAMIENTAS PARA INSTALACIONES ELECTRICAS.docxMATERIALES Y HERRAMIENTAS PARA INSTALACIONES ELECTRICAS.docx
MATERIALES Y HERRAMIENTAS PARA INSTALACIONES ELECTRICAS.docxvillacrezja7
14 vistas8 diapositivas
examen de estadistica con python resuelto.pdf por
examen de estadistica con python resuelto.pdfexamen de estadistica con python resuelto.pdf
examen de estadistica con python resuelto.pdfMatematicaFisicaEsta
14 vistas1 diapositiva

Último(20)

evaluacion n°3 (página 2 de 3).pdf por matepura
evaluacion n°3 (página 2 de 3).pdfevaluacion n°3 (página 2 de 3).pdf
evaluacion n°3 (página 2 de 3).pdf
matepura13 vistas
MATERIALES Y HERRAMIENTAS PARA INSTALACIONES ELECTRICAS.docx por villacrezja7
MATERIALES Y HERRAMIENTAS PARA INSTALACIONES ELECTRICAS.docxMATERIALES Y HERRAMIENTAS PARA INSTALACIONES ELECTRICAS.docx
MATERIALES Y HERRAMIENTAS PARA INSTALACIONES ELECTRICAS.docx
villacrezja714 vistas
Diagrama de flujo Juan Torrealba.pptx por Xghost19X
Diagrama de flujo Juan Torrealba.pptxDiagrama de flujo Juan Torrealba.pptx
Diagrama de flujo Juan Torrealba.pptx
Xghost19X26 vistas
1. ESENCIAL ASV&RSV Interna&Externa&Simúlt&Obligat..pdf por FRANCISCOJUSTOSIERRA
1. ESENCIAL ASV&RSV Interna&Externa&Simúlt&Obligat..pdf1. ESENCIAL ASV&RSV Interna&Externa&Simúlt&Obligat..pdf
1. ESENCIAL ASV&RSV Interna&Externa&Simúlt&Obligat..pdf
Práctica individual con evaluación entre compañeros - Jose Alonso Vasquez Fon... por JosAlonsoVsquezFonse2
Práctica individual con evaluación entre compañeros - Jose Alonso Vasquez Fon...Práctica individual con evaluación entre compañeros - Jose Alonso Vasquez Fon...
Práctica individual con evaluación entre compañeros - Jose Alonso Vasquez Fon...
PRACTICA CALIFICADA DE RECUPERACION CURSO ESTADISTICA 2023-II.docx por MatematicaFisicaEsta
PRACTICA CALIFICADA DE RECUPERACION CURSO ESTADISTICA 2023-II.docxPRACTICA CALIFICADA DE RECUPERACION CURSO ESTADISTICA 2023-II.docx
PRACTICA CALIFICADA DE RECUPERACION CURSO ESTADISTICA 2023-II.docx
S6_TAREA_SET_C_GEOTC1201 (1).pdf por matepura
S6_TAREA_SET_C_GEOTC1201 (1).pdfS6_TAREA_SET_C_GEOTC1201 (1).pdf
S6_TAREA_SET_C_GEOTC1201 (1).pdf
matepura10 vistas
S7_TAREA_SET_B_CONTS1202 (1).pdf por matepura
S7_TAREA_SET_B_CONTS1202  (1).pdfS7_TAREA_SET_B_CONTS1202  (1).pdf
S7_TAREA_SET_B_CONTS1202 (1).pdf
matepura11 vistas
Bloque 4 - semana 7.pdf por FSH67
Bloque 4 - semana 7.pdfBloque 4 - semana 7.pdf
Bloque 4 - semana 7.pdf
FSH677 vistas

Tutorial-pic16 f877a- algunas-mejoras

  • 1. ¿Qué es un microcontrolador? Es un circuito integrado programable que acepta un listado de instrucciones y contiene todos los componentes de un computador. Se utilizan para realizar determinadas tareas o para gobernar dispositivos, debido a su reducido tamaño, suele ir incorporado en el propio dispositivo que gobierna. El microcontrolador es un dispositivo dedicado. En su memoria solo reside un programa destinado a gobernar una aplicación determinada, sus líneas de entradas y salidas (I/O) permiten la conexión de sensores, relay, motores, etc. Una vez programado y configurado el microcontrolador solamente sirve para gobernar la tarea asignada. Un microcontrolador dispone normalmente de los siguientes componentes: • Procesador o CPU (Unidad Central de Proceso). • Memoria RAM para Contener los datos. • Memoria para el programa tipo ROM/PROM/EPROM/EEPROM & FLASH.
  • 2. • Líneas de (entrada / salida) para comunicarse con el exterior. • Diversos módulos para el control de periféricos (temporizadores, Puertos Serie y Paralelo, A/D y D/A, etc.). • Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema. ********************************************************* El siguiente trabajo va dedicado a todos aquellos que se inician en el mundo de los microcontroladores así como aquellos que les gustaría dar un repaso a lo aprendido. La primera parte del tutorial notaran que tiene el enfoque hacia un PIC en especial, el 16F877, ya que es uno de los que esta en boga y además esta tomando aceptación entre las escuelas, y pienso que el 16F84 ya esta muy conocido pero no deja de ser poderoso, Pero recuerden las bases son las mismas. Espero les agrade y sea motivo de mejoras. Empezaré por El diagrama de un sistema microcontrolado que sería algo así: Los dispositivos de entrada pueden ser un teclado, un interruptor, un sensor, etc. Los dispositivos de salida pueden ser LED's, pequeños parlantes, zumbadores, interruptores de potencia (tiristores, optoacopladores), u otros dispositivos como relés, luces, un secador de pelo, en fin... lo que se desee. Aquí tienes una representación en bloques del microcontrolador, se puede ver que lo adaptamos tal y cual es un ordenador, con su fuente de alimentación, un circuito de reloj y el chip Microcontrolador, el cual dispone de su CPU, sus memorias, y por supuesto, sus puertos de comunicación listos para conectarse al mundo exterior Enseguida describiré algunos aspectos básicos que tienen que ver con todos lo microcontroladores PIC de Microchip para su utilización.
  • 3. En su interior posee un microprocesador, una memoria RAM (volátil) donde guardaremos las variables, una memoria EEPROM (no volátil) donde guardaremos nuestro Programa, un Timer o contador que nos facilitará algunas tareas, y algunas otras cosas más que irán variando dependiendo de que PIC utilicemos. Eso no es todo, algunos traen funciones especiales, ya hablaremos de ellas. Microcontroladores PIC16CXX/FXX de Microchip Estos micros pertenecen a la gama media y disponen de un set de 35 instrucciones, por eso lo llaman de tipo RISC (Reduced Instruction Set Computer) en español sería "Computador con Set de Instrucciones Reducido" pocas instrucciones pero muy poderosas, otras son de tipo CISC (Complex Instruction Set Computer - Computador con Set de Instrucciones Complejo), demasiadas instrucciones, y lo peor, difíciles de recordar. Esta familia de microcontroladores se divide en tres rangos según la capacidad de los microcontroladores. El más bajo lo compone la familia 16C5X. El rango medio lo componen las familias 16C6X/ 7X/ 8X, algunos con conversores A/D, comparadores, interrupciones, etc. La familia de rango superior lo componen los 17CXX. Estas son las funciones especiales de las cuales disponen algunos micros...  Conversores análogo a digital (A/D) en caso de que se requiera medir señales analógicas, por ejemplo temperatura, voltaje, luminosidad, etc.  Temporizadores programables (Timer's) Si se requiere medir períodos de tiempo entre eventos, generar temporizaciones o salidas con frecuencia específica, etc.  Interfaz serial RS-232. Cuando se necesita establecer comunicación con otro microcontrolador o con un computador.  Memoria EEPROM Para desarrollar una aplicación donde los datos no se alteren a pesar de quitar la alimentación, que es un tipo de memoria ROM que se puede programar o borrar eléctricamente sin necesidad de circuitos especiales.  salidas PWM (modulación por ancho de pulso) Para quienes requieren el control de motores DC o cargas resistivas, existen microcontroladores que pueden ofrecer varias de ellas.  Técnica llamada de "Interrupciones", (ésta me gustó) Cuando una señal externa activa una línea de interrupción, el microcontrolador deja de lado la tarea que está ejecutando, atiende dicha interrupción, y luego continúa con lo que estaba haciendo. Los microcontroladores se programan en Lenguaje ensamblador básicamente, aunque también existen compiladores para hacerlo con otros lenguajes y cada microcontrolador varía su conjunto de instrucciones de
  • 4. acuerdo a su fabricante y modelo. De acuerdo al número de instrucciones que el microcontrolador maneja se le denomina de arquitectura RISC (reducido) o CISC (complejo). EL Pic16F877 pertenece a la gama media de Microcontroladores donde encontraremos modelos desde 18 hasta 68 Pines, su repertorio de instrucciones es de 35, de 14 bits cada una (Todas las instrucciones son de un solo ciclo con excepción de las ramificaciones del programa que son de dos ciclos). Disponen de interrupciones y una pila de 8 niveles que permite el anidamiento de subrutinas. Se le puede encontrar en un tipo de encapsulado de 40 pines (ò patas) PDIP el cual es el mas utilizado para su utilización didáctica en proyectos escolares. Cuenta con una arquitectura Harvard en la que son independientes la memoria de instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el acceso. Posee Rango amplio de tensiones de funcionamiento: • Comercial: 2.0 a 5.5 volts • Industrial: 2.0 a 5.5 volts Consumo muy bajo: • < 2 mA típico a 5 volt, 4MHz. • 15 µA típico a 2 volt, 32KHz. • >0.5 µA típico de corriente en reposo a 2 volts. Características que lo hacen destacarse por su popularidad en el mundo de la electrónica:  Soporta modo de comunicación serial, posee dos pines para ello.  Amplia memoria para datos y programa.  Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH de 8K; este tipo de memoria se puede borrar electrónicamente (esto corresponde a la “F” en el modelo).  Set de instrucciones reducidas (tipo RISC), pero con las instrucciones necesarias para facilitar su manejo.  En su arquitectura además incorporan:  3 temporizadores  4 puertos I/O.  Comunicación serie y paralela: USART, PSP.  Bus I2C  Modulo Convertidor analógico a digital A/D.  Modulo Comparador con un voltaje de referencia. Sus características más importantes son:
  • 5. CARACTERÍSTICAS 16F877A Frecuencia máxima DX-20MHz Memoria de programa flash palabra de 14 bits 8KB Posiciones RAM de datos 368 Posiciones EEPROM de datos 256 Puertos E/S A,B,C,D,E Número de pines 40 Interrupciones 15 Timers 3 Módulos CCP 2 Comunicaciones Serie MSSP, USART Comunicaciones paralelo PSP Modulo Analógico a Digital de 10 bit 8 canales de entrada Juego de instrucciones 35 Instrucciones
  • 6. Longitud de la instrucción 14 bits Arquitectura Harvard CPU Risc Módulos Comparador/comparador/Pwm 2
  • 8. DIAGRAMA DE BLOQUES DE SU ARQUITECTURA INTERNA.
  • 9. Aquí muestro una tabla en la cual describo cada Pin o patilla del Microcontrolador.
  • 10. NOMBRE DEL PIN PI N TIPO TIPO DE BUFFER DESCRIPCIÓN OSC1/CLKIN 13 I ST/MOS Oscilador de cristal entrada / Entrada de señal de reloj externa OSC2/CLKOUT 14 O - Oscilador de cristal salida / Salida de señal de reloj externo. MCLR/Vpp. 1 I/P ST Master Clear (entrada) ó Voltaje de programación (salida). Master Clear (reset) entrada. Este pin activa el reset vuando esta en bajo (0v.) Entrada del voltaje de programación. RA0/AN0 RA0 AN0 RA1/AN1 RA1 AN1 RA2/AN2/Vref- RA2 AN2 Vref- Cvref RA3/AN3/Vref+ RA3 AN3 Vref+ RA4/T0CKI RA4 T0CKI C1OUT RA5/ /AN4/C2OUT RA5 AN4 C2OUT 2 3 4 5 6 7 I/O I I/O I I/O I I O I/O I/O I 0 I/O I I O TTL TTL TTL TTL ST TTL PORTA es un puerto I/O bidireccional RAO: Digital I/O Entrada Analógica 0 RA1: Digital I/O Entrada Analógica 1 RA2: Digital I/O Entrada Analógica 2 A/D Entrada voltaje (bajo) de referencia. Comparador VREF. Salida RA3: Digital I/O Entrada Analógica 3 A/D Entrada de voltaje (alto) referencia. RA4: Digital I/O Timer0 entrada de reloj externo. Comparador1 salida RA5: Digital I/O SPI esclavo selección entrada Entrada Analógica 4 Comparador2 salida
  • 11. RBO/INT RBO INT RB1 RB2 RB3/PGM RB3 PGM RB4 RB5 RB6/PGC RB6 PGC RB7/PGD RB7 PGD 33 34 35 36 37 38 39 40 I/O I I/O I/O I/O I/O I I/O I/O I I/O I/O TTL/ST TTL TTL TTL TTL TTL TTL TTL/ST PORTB es un puerto I/O bidireccional. Puede ser programado en todas las entradas con pull up. RB0: Digital I/O Interrupción externa. RB1: Digital I/O RB2: Digital I/O RB3: Digital I/O Entrada de programación de bajo voltaje ICSP RB4: Digital I/O RB5: Digital I/O RB6: Digital I/O In circuit debugger y Reloj de programación serial ICSP RB7: Digital I/O In circuit debugger y Dato de programación serial ICSP RCO/T1OSO/T1 CKI RCO T1OSO T1CKI RC1/T1OS1/CCP 2 RC1 T1OS1 CCP2 RC2/CCP1 RC2 CCP1 15 16 17 I/O O I I/O I I/O I/O I/O ST ST PORTC es un puerto I/O bidireccional RCO: Digital I/O salida del oscilador timer1 entrada de reloj del timer1 RC1: Digital I/O Entrada del oscilador timer1 Salida PWM 2, Captura2 entrada, Comparador2 salida RC2: Digital I/O Captura1 entrada, Comparador1 salida, PWM1 salida
  • 12. RC3/SCK/SCL RC3 SCK SCL RC4/SD1/SDA RC4 SD1 SDA RC5/SD0 RC5 SD0 RC6/Tx/CK RC6 Tx CK RC7/RX/DT RC7 RX DT 18 23 24 25 26 I/O I/O I/O I/O I I/O I/O O I/O O I/O I/O I I/O ST ST ST ST ST ST RC3: Digital I/O Entrada o salida serial de reloj síncrono para modo SPI. Entrada o salida serial de reloj síncrono para modo SPI e IC RC4: Digital I/O entrada de datos SPI IC I/O datos RC5: Digital I/O salida de datos SPI RC6: Digital I/O Transmisor asíncrono USART Reloj síncrono USART1. RC7: Digital I/O Receptor asíncrono USART Datos USART síncronos RD0/PSP0 RD0 PSP0 RD1/PSP1 RD1 PSP1 RD2/PSP2 RD2 PSP2 RD3/PSP3 RD3 PSP3 RD4/PSP4 RD4 PSP4 19 20 21 22 27 I/O I/O I/O I/O I/O I/O I/O I/O ST/TTL ST/TTL ST/TTL ST/TTL ST/TTL PORTD es un puerto bidireccional paralelo RD0: Digital I/O Dato de Puerto paralelo esclavo RD1: Digital I/O Dato de Puerto paralelo esclavo RD2: Digital I/O Dato de Puerto paralelo esclavo RD3: Digital I/O Dato de Puerto paralelo esclavo RD4: Digital I/O Dato de Puerto paralelo esclavo.
  • 13. RD5/PSP5 RD5 PSP5 RD6/PSP6 RD6 PSP6 RD7/PSP7 RD7 PSP7 28 29 30 I/O I/O I/O I/O I/O I/O ST/TTL ST/TTL ST/TTL RD5: Digital I/O Dato de Puerto paralelo esclavo. RD6: Digital I/O Dato de Puerto paralelo esclavo. RD7: Digital I/O Dato de Puerto paralelo esclavo. REO/ /AN5 REO AN5 RE1/ /AN6 RE1 AN6 RE2/ /AN7 AN7 8 9 10 I/O I I I I/O I I I/O I I ST/TTL ST/TTL ST/TTL PORTE es un puerto I/O bidireccional REO: Digital I/O Control de lectura para el puerto esclavo paralelo. Entrada analógica 5. RE1: Digital I/O Escritura de control para el puerto paralelo esclavo. Entrada analógica 6 RE2:Digital I/O Selector de control para el puerto paralelo esclavo. Entrada analógica 7. Vss 12 31 P - Referencia de tierra para los pines lógicos y de I/O Vdd 11 32 P - Fuente positiva para los pines lógicos y de I/O Descripción de los puertos: Puerto A: • Puerto de e/s de 6 pines • RA0 è RA0 y AN0 • RA1 è RA1 y AN1 • RA2 è RA2, AN2 y Vref- • RA3 è RA3, AN3 y Vref+ • RA4 è RA4 (Salida en colector abierto) y T0CKI(Entrada de reloj del modulo Timer0)
  • 14. • RA5 è RA5, AN4 y SS (Selección esclavo para el puerto serie síncrono) Puerto B: • Puerto e/s 8 pines • Resistencias pull-up programables • RB0 è Interrupción externa • RB4-7 è Interrupción por cambio de flanco • RB5-RB7 y RB3 è programación y debugger in circuit Puerto C: • Puerto e/s de 8 pines • RC0 è RC0, T1OSO (Timer1 salida oscilador) y T1CKI (Entrada de reloj del modulo Timer1). • RC1-RC2 è PWM/COMP/CAPT • RC1 è T1OSI (entrada osc timer1) • RC3-4 è IIC • RC3-5 è SPI • RC6-7 è USART Puerto D: • Puerto e/s de 8 pines • Bus de datos en PPS (Puerto paralelo esclavo) • Puerto E: • Puerto de e/s de 3 pines • RE0 è RE0 y AN5 y Read de PPS • RE1 è RE1 y AN6 y Write de PPS • RE2 è RE2 y AN7 y CS de PPS Dispositivos periféricos:  Timer0: Temporizador-contador de 8 bits con preescaler de 8 bits  Timer1: Temporizador-contador de 16 bits con preescaler que puede incrementarse en modo sleep de forma externa por un cristal/clock.  Timer2: Temporizador-contador de 8 bits con preescaler y postescaler.  Dos módulos de Captura, Comparación, PWM (Modulación de Anchura de pulsos).  Conversor A/D de 10 bits.  Puerto Serie Síncrono Master (MSSP) con SPI e I2 C (Master/Slave).  USART/SCI (Universal Synchronous Asynchronous Receiver Transmitter) con 9 bit.  Puerta Paralela Esclava (PSP) solo en encapsulados con 40 pines. (MCLR / Vpp): Es una pata de múltiples aplicaciones, es la entrada de Reset (master clear) si está a nivel bajo y también es la habilitación de la tensión de programación cuando se está programando el dispositivo. Cuando su tensión es la de VDD el PIC funciona normalmente.
  • 15. EL RESET: EL PIC16F877 posee internamente un circuito temporizador conectado al pin de reset que funciona cuando se da alimentación al micro, se puede entonces conectar el pin de MCLR a la fuente de alimentación. Esto hace que al encender el sistema el microcontrolador quede en estado de reset por un tiempo mientras se estabilizan todas las señales del circuito (lo cual es bastante bueno, por eso siempre la usaremos...), Además de que nos puede servir por si el micro en algún momento no nos responde nunca esta demás aquí muestro el conexionado del botón que hará dicha función. (VSS y VDD): Son respectivamente las patas de masa y alimentación. La tensión de alimentación de un PIC está comprendida entre 2V y 6V aunque se recomienda no sobrepasar los 5.5V (OSC1/CLKIN y OSC2/CLKOUT): Corresponden a los pines de la entrada externa de reloj y salida de oscilador a cristal respectivamente. El oscilador externo: Es un circuito externo que le indica al micro 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 P1C16F877 puede utilizar cuatro tipos de reloj 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. En el momento de programar o "quemar" el microcontrolador se debe Especificar que tipo de oscilador se usa. Esto se hace a través de unos Fusibles llamados "fusibles de configuración" o fuses. En el PIC16F877 se puede admitir un oscilador de cristal desde 4 a 20 MHz. Por el momento utilizamos uno de 4MHz, porque garantiza mayor precisión y un buen arranque del microcontrolador. Internamente esta frecuencia es dividida por cuatro, lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz, por lo que cada instrucción se ejecuta en un
  • 16. microsegundo. El cristal debe ir acompañado de dos condensadores y el modo de conexión es el Siguiente: Si se requiere de mucha precisión en el oscilador, podemos utilizar una Resistencia y un condensador, como se muestra en la figura. Donde OSC2 Queda libre entregando una señal cuya frecuencia es la del OSC/4. Según las recomendaciones de Microchip (R) puede tomar valores entre 5k y 100k, y C superior a 20pf. Organización de la memoria. En primer lugar tenemos que distinguir claramente entre tres tipos de Memoria:  Una: la memoria EEPROM donde almacenaremos el programa que Haremos, esta memoria solo podrá ser leída por el pic (el pic va Leyendo las instrucciones del programa almacenado en esta memoria Y las va ejecutando). Al apagar el pic esta memoria no se borra.  Dos: la memoria RAM en cuyos registros se irán almacenando los Valores de las variables que nosotros queramos y cuando nosotros Queramos (por programa), al apagar el pic esta memoria se borra.  Tres: la memoria EEPROM para datos, es un espacio de memoria
  • 17. EEPROM en la que se pueden guardar variables que queremos Conservar aunque se apague el pic. No se tratará aquí por ser una Memoria más difícil de emplear. La memoria EEPROM ò memoria de Programa. El espacio marcado como “User memory Space” es el espacio de memoria donde ira nuestro programa, desde 0000h hasta la 1FFFh. "Reset Vector" es la primera dirección a la que se dirige el pic al encenderlo o al Resetearlo. "PC" y los "Stack Level" son empleado por el pic y nosotros no tenemos acceso a ellos. LA MEMORIA RAM La memoria RAM no solo se usa para almacenar nuestras variables, también se almacenan una serie de registros que configuran y controlan el PIC. Podemos observar en la imagen que esta memoria esta dividida en 4 Bancos (banco 0,1, 2, 3). Antes de acceder a un registro de esta memoria tenemos que preguntarnos en que banco estamos, generalmente se trabaja en el banco 0 cada banco contiene sus registros que sirven para la configuración y control de la memoria RAM.
  • 18. Estos registros se usan para controlar los pines del PIC, consultar los resultados de las operaciones de la ALU (unidad aritmética lógica), cambiar del banco de memoria entre otras cosas. La selección del banco de memoria se hace por medio de los bits RP1 y RP0 del registro STATUS (6,5). Tabla de selección de bancos. CONFIGURACIÓN DE LOS PUERTOS DEL PIC Llegó el momento de ver como configurar los puertos del PIC. Para poder Hacerlo es necesario conocer la tabla de registros de la memoria de datos, la cual como dijimos, está dividida en el BANCO 0, BANCO 1, BANCO 2, BANCO 3. Los registros importantes en la configuración de los puertos son: STATUS dirección 03h PORTA dirección 05h PORTB dirección 06h PORTC dirección 07h PORTD dirección 08h PORTE dirección 09h TRISA dirección 85h TRISB dirección 86h TRISC dirección 87h TRISD dirección 88h TRISE dirección 89h NOTA: solo incluyo los registros de los bancos 0 y 1 ya que para los dos restantes es similar su configuración. Por defecto el PIC tendrá todos los I/O Port's (es decir los puertos RA, RB, RC, RD, RE), colocados como entrada de datos, y si queremos cambiarlos habrá que configurarlos. Al configurar los puertos se deberá tener en cuenta que: Si asignas un CERO (0) a un pin, éste quedará como salida y... Si le asignas un UNO (1), quedará como entrada. Esta asignación se hace en: TRISA para los pines del PUERTO A. TRISB para los pines del PUERTO B. TRISC para los pines del PUERTO C.
  • 19. TRISD para los pines del PUERTO D. TRISE para los pines del PUERTO E. Por ejemplo si TRISE es igual a 110 todos sus pines serán entradas salvo RE0 que esta como salida. SI TRISB es igual a 00000001 todos sus pines serán salidas salvo RB0 que esta como entrada. Cuando el PIC arranca se encuentra en el BANCO 0, como TRISA y TRISB Están en el BANCO 1 no queda de otra, deberemos cambiar de banco. Esto se logra a través del Registro STATUS. STATUS es un Registro de 8 bits u 8 casillas, en el cual la Nº 5 (RP0) y la Nº 6 (RP1) definen la posición del banco en donde nos encontramos. Como se muestra con la figura que se vio en la sección de la LA MEMORIA RAM (Tabla de selección de bancos). DESCRIPCION DE ALGUNOS DE LOS REGISTROS INTERNOS DEL BANCO 0. INDF (direccionamiento indirecto): Dirección 00h, sirve para ver el dato de la dirección a la que apunta el registro FSR (dir. 04h). TMR0 (Timer/contador): Dirección 01h, Aquí se puede ver el valor en Tiempo real del Timer/contador. También se puede introducir un valor y alterar así el conteo. Este conteo puede ser interno (cuenta ciclos de Reloj) o externo (cuenta impulsos introducidos por RA4). PCL (Parte baja del contador de programa): Dirección 02h, Modificando este registro se modifica el contador de programa, este contador de programa es el que señala al pic en que dirección (de EEPROM) tiene que leer la siguiente instrucción. Esto se utiliza mucho para consultar tablas. STATUS: Dirección 03h, este es uno de los registros mas importantes Y el que más vas a utilizar. Hay que analizar el funcionamiento de Este registro bit a bit:
  • 20. • CARRY, Dirección STATUS, 0 (bit 0): bit de desbordamiento. Este bit se pone a "1" cuando la operación anterior ha rebasado la capacidad de un byte. Por ejemplo, si sumo dos números y el resultado no cabe en 8 bit el CARRY se pone a "1", Pasa lo mismo cuando resto dos números y el resultado es un número negativo. Se puede usar para saber si un número es mayor que otro (restándolos, si hay acarreo es que el segundo era mayor que el primero). Una vez que este bit se pone a "1" no se baja solo (a"0"), hay que hacerlo por programa si queremos volverlo a utilizar. • DC (digit carry), Dirección STATUS, 1 (bit 1): lo mismo que el anterior pero esta vez nos avisa si el número no cabe en cuatro bits. • Z (zero), Dirección STATUS, 2 (bit 2): Se pone a "1" si la operación anterior ha sido cero. Y pasa a "0" si la operación anterior no ha sido cero. Se usa para comprobar la igualdad entre dos números (restándolos, si el resultado es cero ambos números son iguales) • PD (Power - Down bit), Dirección STATUS, 3 (bit3): se pone a "0" después de ejecutar la instrucción SLEEP, se pone a "1" después de ejecutar la instrucción CLRWDT o después de un power-up. • TO (Timer Up), Dirección STATUS, 4 (bit4): se pone a "0" cuando se acaba el tiempo del WATCHDOG, Se pone a "1" después de ejecutar las instrucciones, CLRWDT o SLEEP o después de un power-up. • RP0 y RP1 (selección directa de banco), Dirección STATUS, 5 y STATUS, 6: 11 = Bank 3 (180h-1FFh) 10 = Banco 2 (100h-17Fh) 01 = Banco 1 (80h-FFh) 00 = Banco 0 (00h-7Fh) Cada banco es de 128 bytes. • IRP,(selección indirecta de banco) Dirección STATUS,7: 1 = Banco 2, 3 (100h-1FFh) 0 = Banco 0, 1 (00h-FFh) FSR (Puntero), Dirección 04h, se usa para direccionamiento indirecto en combinación con el registro INDF (dir. 00h): se carga la dirección del registro que queremos leer indirectamente en FSR y se lee el contenido de dicho registro en INDF. PORTA (Puerto A), Dirección 05h: Con este registro se puede ver o modificar el estado de los pines del puerto A (RA0 – RA7). Si un bit de este registro está a
  • 21. "1" también lo estará el pin correspondiente a ese bit. El que un pin esté a "1" quiere decir que su tensión es de 5V, si está a "0" su tensión es 0V. Así sucede también para PORTB, C, D y E. PCLATH, Dirección 0Ah: Modifica la parte alta del contador de programa (PC), el contador de programa se compone de 13 bits, los 8 bits de menor peso se pueden modificar con PCL (dir. 02h) y los 5 bits de mayor peso se pueden modificar con PCLATH. INTCON (controla las interrupciones), Dirección 0Bh: Se estudia bit a bit: • RBIF (Flag de interrupción por cambio de PORTB) Dirección INTCON,0 (bit0): se pone a "1" cuando alguno de los pines RB4, RB5, RB6, o RB7 cambia su estado. Una vez que está a "1" no pasa a "0" por si mismo: hay que ponerlo a cero por programa. • INTF (Flag de interrupción de RB0) Dirección INTCON,1: Si está a "1" es que ha ocurrido una interrupción por RB0, si está a "0" es que dicha interrupción no ha ocurrido. Este bit es una copia de RB0. • TMROIF (Flag de interrupción por desbordamiento de TMR0) Dirección INTCON,2: Cuando TMR0 se desborda este Flag avisa poniendose a "1". Poner a "0" por programa. • RBIE (Habilita la interrupción por cambio de PORTB) Dirección INTCON,3: Si está a "1" las interrupciones por cambio de PORTB son posibles. • INTE (Habilita la interrupción por RB0) Dirección INTCON,4: Si lo ponemos a "1" la interrupción por RB0 es posible. • TMROIE (Habilita la interrupción por desbordamiento de TMR0) Dirección INTCON,5: Si este bit esta a "1" la interrupción por desbordamiento de TMR0 es posible. • PEIE (Habilita la interrupción de periféricos Dirección INTCON,6: Cuando este bit está a "1" habilita todas las interrupciones de periférico enmascarables.
  • 22. • GIE (Habilita las interrupciones globalmente) Dirección INTCON,7: Este bit permite que cualquier interrupción de las anteriores sea posible. Para usar alguna de las interrupciones anteriores hay que habilitarlas globalmente e individualmente. MAPA DE MEMORIA RAM Y REGISTROS.
  • 23. SET DE INSTRUCCIONES PARA PIC16F87X:
  • 24. Para entender mejor cada instrucción se explica a continuación el significado de algunos parámetros:  f: Registro al que afecta la instrucción  W: Acumulador (Working register)  b: Número de bit (hay instrucciones que afectan a un solo bit)  k: constante (un número)  d: selección de destino del resultado de la instrucción, puede ser "0" o "1", si es "0" el resultado se guarda en el acumulador (W) y si es "1" se guarda en el registro f al que afecta la instrucción. Instrucciones orientadas a registros:  ADDWF f,d Suma W y el registro f, el resultado lo guarda según d (si d=0 se guarda en W y si d=1 se guarda en f).  ANDWF f,d Realiza la operación AND lógica entre W y f, el Resultado lo guarda según d.  CLRF f Borra el registro f (pone todos sus bits a cero).  CLRW - Borra el acumulador.  COMF f,d Calcula el complementario del registro f (los bits que estan a "0" los pone a "1" y viceversa. Resultado según d.  DECF f,d Decrementa f en uno (le resta uno). Resultado según d.  DECFSZ f,d Decrementa f y se salta la siguiente instrucción si el resultado es cero. Resultado según d.  INCF f,d Incrementa f en uno (le suma uno). Resultado según d.  INCFSZ f,d Incrementa f y se salta la siguiente instrucción si el resultado es cero (cuando se desborda un registro vuelve al valor 00h). Resultado según d.  IORWF f,d Realiza la operación lógica OR entre W y f. Resultado según d.  MOVF f,d Mueve el contenido del registro f a W si d=0 (si d=1 lo vuelve a poner en el mismo registro).
  • 25.  MOVWF f mueve el valor de W a f. Por ejemplo, si queremos copiar el valor del registro "REG1" al registro "REG2" (ya veremos como ponerles nombres a los registros) escribiremos: MOVF REG1,0 ; mueve el valor de REG1 a W MOVWF REG2 ; mueve el valor de W a REG2 Lo que va después del; son comentarios  NOP - No hace nada, solo pierde el tiempo durante un ciclo.  RLF f,d Rota el registro f hacia la izquierda a través del bit CARRY (todos los bits se mueven un lugar hacia la izquierda, el bit 7 de f pasa al CARRY y el bit CARRY pasa al bit 0 de f). Resultado según d.  RRF f,d Lo mismo que RLF pero hacia la derecha.  SUBWF f,d Resta f y W (f - W). Resultado según d.  SWAPF f,d intercambia los 4 primeros bit de f por los otros cuatro. Resultado según d.  XORWF f,d Realiza la operación lógica XOR (OR exclusiva) entre W y f. Resultado según d. Instrucciones orientadas a bits:  BCF f,b Pone a "0" el bit b del registro f  BSF f,b Pone a "1" el bit b del registro f  BTFSC f,b Se salta la siguiente instrucción si el bit b del registro f es "0"  BTFSS f,b Se salta la siguiente instrucción si el bit b del registro f es "1" Instrucciones orientadas a constantes y de control:  ADDLW k Le suma el valor k al acumulador (W).  ANDLW k Operación lógica AND entre W y el valor k (resultado en W).  CALL k Llamada a subrutina cuyo inicio esta en la dirección k  CLRWDT - Borra el registro Watchdog
  • 26.  GOTO k Salta a la dirección k de programa.  IORLW k Operación lógica OR entre W y el valor k (resultado en W)  MOVLW k carga el acumulador con el valor k. Por ejemplo, si queremos cargar el valor 2Ah en el registro "REG1" escribiremos: MOVLW 2AH; carga el acumulador con el valor 2Ah MOVWF REG1; mueve el valor de W a "REG1"  RETFIE - Instrucción para volver de la interrupción  RETLW k carga el valor k en W y vuelve de la interrupción  RETURN - vuelve de una subrutina.  SLEEP - El pic pasa a modo de Standby. BIBLIOGRAFIA: 1. Hoja de datos del PIC16F87xA de Microchip. 2. Programación del PIC16F84. por Carlos Díaz www.electron.es.vg 3. Club Saber electrónica “curso de pics para estudiantes y aficionados” N0 20. 4. Ed Quark Ing. Horacio D. Vallejo 5. Club Saber electrónica “microcontroladores PIC Programación y desarrollo” N0 24. Ed Quark Ing. Horacio D. Vallejo 6. EL PIC16F877 por Marco Antonio Márquez Suárez