Está en la página 1de 85

Kelvin de Jesús Beleño Sáenz

MSc. Controles Industriales


Ingeniero Electrónico

SISTEMAS EMBEBIDOS I
Sistemas Embebidos

 Un sistema embebido o empotrado es un


sistema de computación diseñado para realizar
una o algunas pocas funciones dedicadas [1, 2]
frecuentemente en un sistema de computación
en tiempo real. Al contrario de lo que ocurre con
los ordenadores de propósito general (como por
ejemplo una computadora personal o PC) que
están diseñados para cubrir un amplio rango de
necesidades, los sistemas embebidos se diseñan
para cubrir necesidades específicas.
1. Michael Barr. «Embedded Systems Glossary». Netrino Technical Library. Consultado el 21-04-2007.
2. Heath, Steve (2003) (en inglés). Embedded systems design. EDN series for design engineers (2 edición). Newnes. p. 2. «Un sistema embebido es un
sistema basado en un microprocesador o un microcontrolador que está desarrollado para controlar una función o un rango de funciones.»
Componentes de un sistema
embebido
 En la parte central se encuentra el microprocesador, microcontrolador, DSP, etc. Es decir, la CPU o unidad que aporta
capacidad de cómputo al sistema, pudiendo incluir memoria interna o externa, un micro con arquitectura específica según
requisitos.
 La comunicación adquiere gran importancia en los sistemas embebidos. Lo normal es que el sistema pueda comunicarse
mediante interfaces estándar de cable o inalámbricas. Así un SI normalmente incorporará puertos de comunicaciones del
tipo RS-232, RS-485, SPI, I²C, CAN, USB, IP,Wi-Fi, GSM, GPRS, DSRC, etc.
 El subsistema del tipo presentación suele ser una pantalla gráfica, táctil, LCD, alfanumérico, etc.
 Se denominan actuadores a los posibles elementos electrónicos que el sistema se encarga de controlar. Puede ser un motor
eléctrico, un conmutador tipo relé etc. El más habitual puede ser una salida de señal PWM para control de la velocidad
en motores de corriente continua.
 El módulo de E/S analógicas y digitales suele emplearse para digitalizar señales analógicas procedentes de sensores,
activar diodos LED, reconocer el estado abierto cerrado de un conmutador o pulsador, etc.
 El módulo de reloj es el encargado de generar las diferentes señales de reloj a partir de un único oscilador principal. El tipo de
oscilador es importante por varios aspectos: por la frecuencia necesaria, por la estabilidad necesaria y por el consumo de
corriente requerido. El oscilador con mejores características en cuanto a estabilidad y coste son los basados en resonador de
cristal de cuarzo, mientras que los que requieren menor consumo son los RC. Mediante sistemas PLL se obtienen otras
frecuencias con la misma estabilidad que el oscilador patrón.
 El módulo de energía (power) se encarga de generar las diferentes tensiones y corrientes necesarias para alimentar los
diferentes circuitos del SE. Usualmente se trabaja con un rango de posibles tensiones de entrada que mediante conversores
ac/dc o dc/dc se obtienen las diferentes tensiones necesarias para alimentar los diversos componentes activos del circuito.
 Además de los conversores ac/dc y dc/dc, otros módulos típicos, filtros, circuitos integrados supervisores de alimentación,
etc.
 El consumo de energía puede ser determinante en el desarrollo de algunos sistemas embebidos que necesariamente se
alimentan con baterías, con lo que el tiempo de uso del SE suele ser la duración de la carga de las baterías.
Sistemas Embebidos

Imagen del interior de un


módem/enrutador ADSL. Un ejemplo de un
sistema embebido. Las partes marcadas incluyen
un microprocesador (4), RAM (6), y una memoria
flash (7).
Memorias
 La memoria es el componente del ordenador que almacena
la información que éste posee, es decir, sus datos y
programas. Es como un bloc de notas que mantiene la
información mientras estamos trabajando con ella.

 La memoria del ordenador está organizada en unidades de


bytes, cada uno compuesto por 8 bits. No importa que tipo
de información estemos almacenando; estará codificada en
una estructura particular de bits, que será interpretada de la
forma adecuada al tipo de datos en cuestión. Los mismos
bytes de memoria se emplean para almacenar códigos de
instrucciones, datos numéricos, datos alfabéticos, sonidos,
vídeo, etc.
Características de las
memorias

 En el ordenador hay dos tipos básicos de


memorias, las memorias de sólo lectura, o
ROM (Read Only Memory), y las memorias de
lectura/escritura, o RAM (Random Access
Memory).
Duración de la información
 En relación a la permanencia de la información grabada en las memorias, hay 4
posibilidades:

 a) Memorias permanentes: Son memorias que contienen siempre la misma información y


no pueden borrarse. Como ejemplo de este tipo de memorias se pueden citar las
memorias de semiconductores tipo ROM, de las que hablaremos posteriormente.

 b) Memorias Volátiles: Precisan estar continuamente alimentadas de energía. Si se corta


dicho suministro se borra la información que poseen. En contraposición están las no
volátiles, en las que la información permanece aunque se elimine la alimentación.

 c) Memorias de lectura destructiva: Su lectura implica el borrado de la información, por


lo que después de leer en ellas, hay que volver a grabarlas. Un ejemplo de este tipo
son las memorias de ferrita. Memorias de lectura no destructiva son, por ejemplo, los
discos y banda ma gnética.

 d) Memorias con refresco: La información sólo dura un cierto tiempo. Para que no
desaparezca, hay que regrabar la información de forma periódica (señal de refresco).
Modo de acceso
 Según el método utilizado para localizar la información tenemos:

 a) Acceso aleatorio: En las memorias de acceso aleatorio se accede


directamente al byte o posición deseada, en un tiempo
independiente de la dirección a la que se quiere acceder, por
ejemplo las memorias RAM son de acceso aleatorio.

 b) Acceso secuencial: En las memorias de acceso secuencial se llega


a la posición deseada a través de una secuencia de posiciones,
que depende de donde esté la información en el momento en el
que se quiere acceder a ella, por ejemplo para acceder a una
información en una cinta magnética es necesario recorrer la cinta
hasta encontrar la información deseada.
Tiempo de acceso

 Se denomina tiempo de acceso al que


transcurre entre el instante en que se envía
una operación de acceso a memoria y el
instante en que se dispone de la primera
información buscada.
 Según el tiempo de acceso se puede hablar
de memorias rápidas o lentas, pero como eso
no es demasiado preciso, es mejor citar el
tiempo de acceso, que se mide normalmente
en nanosegundos.
Capacidad

 Es la cantidad de información que puede


almacenar una memoria.
 Dado que la información se almacena en el
sistema binario, la capacidad se mide en bytes.
 Se utiliza el byte porque es el menor tamaño de
información, a la que se puede acceder en una
operación de acceso a memoria, ya que cada
posición de memoria almacena un byte. Aunque
a la hora de hablar de la capacidad de memoria,
se utilizan múltiplos de él que (KByte, MByte,
GByte, TByte).
Tipos de memorias: RAM y
ROM.
 Actualmente el tipo de memorias que se
emplean con carácter universal, son las
memorias de semiconductores. La primera
memoria comercial de semiconductor tenía una
capacidad de 64 bits y fue fabricada por IBM en
1968. Poco más tarde, en 1972, aparecieron los
primeros ordenadores de IBM con memoria
principal de semiconductores. Los elementos
semiconductores utilizados hasta ahora para
realizar estas memorias son el Silicio (Si) y el
Germanio (Ge), pero en la actualidad se está
también utilizando el Arseniuro de Galio (AsGa).
Tipos de memorias: RAM y
ROM.
 En el caso de las memorias de semiconductores, cada punto de
memoria está formado por un dispositivo electrónico
denominado transistor, en el que hay dos estados de
funcionamiento bien diferenciados: el estado de corte y el de
saturación. Cuando el transistor está en estado de corte no deja
pasar prácticamente nada a su través, y a la salida del transistor
apenas se obtiene corriente, es lo que llamamos "0 lógico".
Cuando está en estado de saturación, deja que la corriente circule
por él libremente y lo que obtenemos a la salida es un máximo de
corriente que denominamos "1 lógico". Dependiendo de las
señales que proporcionemos al transistor obtendremos una u
otra salida, es decir, almacenaremos un 0 ó un 1.
 Podemos establecer otra clasificación de las memorias
dependiendo de que la información que contienen, pueda o no,
modificarse después de haberla introducido.
Memorias de sólo lectura:
ROM
 Como indica su propio nombre son memorias que sólo permiten
la lectura, también son de acceso aleatorio y no volátiles.

 Este tipo de memorias se utilizan para guardar una serie de


programas que vienen con el ordenador desde fábrica, como son
los contenidos en la ROM-BIOS (Basic Input-Output System). En
ella básicamente están unos programas de diagnóstico,
encargados de chequear el hardware para comprobar que todo
es correcto antes de arrancar. Además, tiene el programa de
arranque, encargado de cargar el sistema operativo en memoria
y, los programas para controlar los periféricos más comunes:
unidades de disco, teclado, puertos serie y paralelo, tarjeta
gráfica, etc. Algunos periféricos requieren tener una memoria
ROM para contener el programa encargado de gestionarlos, por
ejemplo las tarjetas VGA cuentan con una memoria ROM de esas
características ya que el BIOS sólo controla tarjetas CGA o MDA.
Memorias de sólo lectura:
ROM
 Atendiendo a la manera en que son grabadas se pueden distinguir varios tipos:
 a) ROM: La palabra ROM puede ser aplicada a cualquiera de estos tipos de memoria, pero en este caso vamos a
reservarla para memorias grabadas de fábrica en las que los transistores están dispuestos de la manera necesaria
para que se lean los valores que debe contener.
 b) PROM (Programable Read Only Memory): Este tipo de memorias son similares a las anteriores. Son memorias de
sólo lectura pero en vez de grabarse en fábrica, pueden grabarse, aunque una sola vez. Una vez grabada la
información no podemos cambiarla, tan sólo leerla. Cada punto de memoria va a estar formado por un transistor y
un fusible. Dejando pasar una corriente suficiente a través del fusible, este se funde logrando su destrucción. Así
pues, el usuario de tal PROM puede destruir los fusibles cuando sea necesario, dejando sólo transistores en las
posiciones necesarias para establecer el almacenamiento de memoria deseado.
 c) EPROM (Erasable Programable Read Only Memory): En este caso, la información puede ser modificada por el
usuario un número limitado de veces. Para grabar la información se necesita un aparato especial, llamado
grabador de EPROM. Antes de regrabar una EPROM hay que borrar el contenido anterior, para ello se emplea luz
ultravioleta y posee una ventana que permite el paso de la misma, normalmente esta tapada para evitar un
borrado accidental.
 El tiempo empleado para escribir, en este tipo de memorias, es mucho mayor que para leer, y como acabamos de
ver, el borrado y el grabado se tienen que hacer fuera del sistema informático, siendo esta operación tan sólo
posible un número limitado de veces.
 d) EEPROM (Electricaly Erasable Programable Read Only Memory): Se diferencian de las anteriores en que pueden
borrarse y grabarse en el mismo sistema informático y, en este caso, tanto la operación de borrado como de
escritura se hace mediante el paso de corriente eléctrica. La información es borrada simultáneamente en todas las
células de memoria.
Memorias de sólo lectura:
ROM
 Actualmente la ROM-BIOS de muchos ordenadores viene en formato Flash, esta es una memoria
EEPROM, que permite por tanto que el usuario actualice el contenido de la misma sin necesidad
de disponer de aparatos especiales, y sin abrir siquiera el ordenador, no obstante, son memorias
de sólo lectura, para operaciones normales no se puede escribir en la memoria, se necesita un
programa especial para poder hacerlo.
PICmicro

Un PICmicro es un circuito integrado


programable. Microchip, su fabricante dice:
Programable Integrated Circuit.

Programable quiere decir que se puede planificar


la manera como va a funcionar, que se puede
adaptar a nuestras necesidades. En otras
palabras que el integrado es capaz de
modificar su comportamiento en función de
una serie de instrucciones que es posible
comunicarle.
Programar un PIC

Toda esta actividad : “Programar un PIC”,


se puede dividir en cuatro pasos:
EDITAR
COMPILAR
QUEMAR EL PIC
PROBAR EL PROGRAMA
Editar

Editar es escribir el programa, es hacer una


lista de instrucciones en un lenguaje que
nos permita indicarle al PIC lo que
deseamos que haga.
Existen varios lenguajes como:
Ensamblador, Basic, C, etc.
Todos ellos pretenden acercarse a nuestra
manera de pensar y de hablar. Sin
embargo los PIC no conocen mas que
unos y ceros. Por eso es necesario el
siguiente paso.
Compilar

Compilar es traducir el programa al lenguaje de


máquina que ¡ Si ! “entiende” el PIC. Para
realizar esta traducción hacemos uso de un
software que transforma el “Programa
Fuente”, aquel que editamos en el paso 1 en
otro que si podemos comunicarle al PIC.
Quemar el PIC

En este paso se grava el programa en el PIC.


Mediante una tarjeta electrónica y un poco
software se pasa el programa compilado de la
PC al PIC. Son solamente unos cuantos Cliks
y listo.
Es necesario hacer una aclaración en este
momento. Frecuentemente le llamamos
Programador de PIC a la tarjeta electrónica
que transfiere el programa compilado de la PC
al PIC. Esta bien mientras entendamos que
este aparato no va ha pensar por nosotros y
que es incapaz de programar instrucciones por
sí mismo.
Probar el Programa

En este paso se trata de verificar el


funcionamiento del programa.

Se trata de comprobar que el PIC se


comporta como lo programamos. Si todo
salió bien, pues fantástico y si no
comenzamos de nuevo en Editar Para
realizar esta actividad podemos hacer uso
de un Protoboard, alambrar los Led´s o
botones, instalar la fuente, poner el reloj ,
etc. etc. Pero
Cuatro pasos para programar
un PIC
Editar

Para Editar el programa se hace uso de MPLAB el


software que ofrece Microchip gratis en su
página: www.microchip.com

Si editamos en Ensamblador, el archivo que se


genera tiene una extensión .ASM, por ejemplo si
el nombre del programa es timer, el nombre
completo con extensión será timer.ASM .
Compilar
Para Compilar el programa se hace uso de MPASM, el cual es
gratis y esta integrado en MPLAB. Es decir cuando instalas
MPLAB también encontraras instalado MPASAM.

Con este software traducimos el programa “FUENTE” en un


lenguaje de “MAQUINA”. Si el programa fuente es
timer.ASM después de compilado será timer.hex .
Quemar el PIC
Como se recordara para quemar el PIC se requiere un hardware, una
tarjeta, pues bien, dos alternativas:
a).- PICSTART PLUS
Es el programador de MICROCHIP. Con él se puede quemar toda la
línea de PICs y además esta bien integrado con MPLAB .
Desafortunadamente este no es gratis.
b).-Prog2
Existen varios programadores que se ofrecen en Internet. Uno de
ello es el llamado JDM84 que se ofrece con el numero de parte
Prog2. Con este no se pueden grabar todos los PIC pero sí los más
importantes: el PIC16F84 y el PIC12C508, de los que ya
hablaremos más adelante. El software necesario para usar este
programador viene en el disco que acompaña a la tarjeta. A
saber: Icprog.exe y Pic2.exe . Este programador tampoco es
gratis pero si es más económico .
Quemar el PIC
Entonces colocamos el PIC en el
Programador Prog2, abrimos el archivo
*.hex , por ejemplo timer.exe , hacemos
CLIK en programar y listo.
Probar el Programa

Ya tenemos el PIC con su programa dentro. Lo


que resta por hacer es insertarlo en la tarjeta
de prueba y probar que lo que pensamos que
debería de hacer es exactamente lo que
queremos. Si no pues volveremos a Editar
PIC16F84
Este PIC se alimenta por los pines 5
y 14. Pin 5 a tierra y 14 a +5 VCD.

Los pines 15 y 16 son para conectar


el CLOCK (reloj) Un cristal de 4
MHZ y un par de condensadores de
15 0 22pf bastan para que el PIC
este listo para trabajar.

En el pin 4 se conecta el RESET


(reiniciar) Una resistencia a positivo
+5 es suficiente para que el PIC
arranque. Si este pin se mantiene en
“0” el PIC esta quieto, pero cuando
se pasa a positivo “1” el PIC arranca
y comienza a ejecutar el programa
¡Siempre desde el principio¡

Los pines que se programan son RA0 a RA4, Puerto A y RB0 a RB7,
Puerto B
PIC16F84
Al conjunto de pines RA se le llama “puerto A” y al conjunto de
pines RB se le llama “puerto B”.
Lo primero y quizá más importante que podemos
programarle a estos pines es:
Si van a ser ENTRADAS o SALIDAS
Cualquiera de estos pines puede ser programado como
entrada o como Salida
Si un pin se programa como ENTRADA, entonces podrá
detectar un voltaje: “0” o “1”, que a su vez puede ser la
apertura o el cierre de un interruptor, un botonazo, o la
acción de un sensor.
Si un pin se programa como SALIDA, será capaz de prender
un led, energizar un relevador o un solenoide, etc.
PIC16F84
En la Fig. si RB7 se
programa como
salida. Entonces un “1”
prendería el led y un
“0” lo apagaría.

En cambio si RB3 se
programa como
entrada. Al aire se
detecta un “1” y al
oprimir el botón se
detecta un “0”.
“De esto trata la programación de los PIC. Detectar botonazos o
niveles de voltaje para energizar o apagar un led, un relevador, un
motor, etc.”
La memoria para el programa
(program memory)
La memoria para el programa
(program memory)
El programa que Editamos, Compilamos y que
finalmente gravamos en el PIC, cuando lo
quemamos, se almacena en su memoria.
En esta memoria se guardan las instrucciones del
programa. Una por una, como en renglones de
un cuaderno. Un renglón, una instrucción, otro
renglón otra instrucción.
La cantidad de renglones disponibles esta limitada
por la capacidad de la memoria. En el PIC16F84
contamos con 1024 renglones para escribir en
cada uno de ellos las instrucciones del programa.
La memoria para el programa
(program memory)
La memoria del PIC16F84 es reprogramable. Esto quiere decir que si el
programa no nos gusta podremos volverlo a grabar una y otra vez.
Otra característica de esta memoria es que es permanente. Una vez que
gravamos el PIC, lo podemos retirar del programador, guardarlo en la
bolsa y llevarlo a otro lugar, entonces insertarlo en alguna tarjeta de
prueba o de una aplicación industrial. No se borra al desconectar el PIC.

Como esta memoria se puede grabar y volver a grabar mediante señales


eléctricas se llama Flash ( en el PIC16C84: EEPROM)
Entonces diríamos:
¡El PIC16F84 tiene una memoria de programación Flash de 1024
instrucciones (1K)!
Finalmente y para llevar las cuentas bien ordenadas, a cada instrucción le
asignamos un numero consecutivo: del 0 al 1023 a este numero le
llamamos dirección. Así podríamos decir la instrucción numero 55 ... o en
la dirección 55 se encuentra la instrucción fulana o zutana.
La memoria para el programa
(program memory)
La memoria para los datos
(data memory)
Esta memoria se utiliza principalmente para almacenar las variables
del programa, por ejemplo el valor de un contador que va
cambiando según el numero de veces que se activa un
interruptor o el tiempo que dura un proceso.
La principal característica de esta memoria llamada RAM es que es
volátil. Es decir cuando el PIC se desconecta, esta memoria
pierde sus valores.
El PIC16F84 tiene 80 “renglones” de memoria de datos que están
numerados del 0 al 79. Cada uno de estos registros (renglones)
tiene 8 bits. En cada bit podemos escribir/leer un “0” o un “1”.
La memoria de datos del PIC16F84 es de 8 bits.
La memoria para los datos
(data memory)
Para referirnos a estos registros, también
llamados localidades de memoria, lo
podemos hacer por su dirección (número
consecutivo) Pero es más fácil que se les
ponga un nombre. Por ejemplo para
referirnos al registro 57 seria preferible
llamarle “Contador de Tiempo”. Así no
tendríamos que recordar su dirección
sino solamente su nombre. Esto se logra
con una declaración que se coloca al
principio del programa:

todos los números decimales se escriben


entre apóstrofos y antecedido por la letra
d. Por ejemplo 15 se escribe d’15’ ... 45 se
escribe d’45’... así es este lenguaje.
La memoria para los datos
(data memory)
El nombre del registro lo escoge el
programador.
Des este modo no tendrá que recordar el
número de registro sino su nombre, El
cual se espera que este asociado con la
función que tiene el registro en el
programa.

.
La memoria para los datos
(data memory)
Para referirnos a los bits de los
registros seguiremos esta
convención:

.
La memoria para los datos
(data memory)
La memoria de datos (RAM) esta dividida en dos grupos: a las primeras 12 localidades se les llama
“registros especiales” y al resto se les llama “registros de uso general”.
En Dirección 5 de la memoria de datos esta el Puerto A

En la Dirección 6 de la memoria de datos esta el Puerto B

Al igual que otras localidades de la memoria RAM, mediante la declaración equ podremos asignar un
nombre al Puerto A o al Puerto B.( el nombre que le daremos a esta dirección en nuestro
programa) Por ejemplo:

Quiere decir que el Puerto A se llamará PortA en nuestro programa

Quiere decir que el Puerto B se llamará Reles_De_Salida en nuestro programa.


.
La memoria para los datos
(data memory)
Las tres instrucciones siguientes se aplican a los registros de la memoria de datos
RAM (registros especiales y también de uso general)
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones orientadas al manejo de registros
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un solo bit de un registro
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un solo bit de un registro
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un solo bit de un registro
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un solo bit de un registro
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones que trabajan con un registro y un literal
INSTRUCCIONES DEL PIC16F84A
Instrucciones generales
INSTRUCCIONES DEL PIC16F84A
Instrucciones generales
INSTRUCCIONES DEL PIC16F84A
Instrucciones generales
INSTRUCCIONES DEL PIC16F84A
Instrucciones generales
INSTRUCCIONES DEL PIC16F84A
Instrucciones generales
REGISTRO DE ESTADO (STATUS)

Es uno de los registros más importantes, es el encargado de


decir el estado de las operaciones de procesador, al igual
que todos los registros de este microcontrolador es de 8
bits los cuales se explicaran a continuación:
REGISTRO DE ESTADO (STATUS)

Bit 0 C (acarreo): en la operación de suma se pone a 1 cuando hay un acarreo en el bit más
significativo y cumple la función inversa en una operación de resta, se pone a cero cuando hay un
préstamo.
También hace parte de las instrucciones RRF y RLF como ya fueron explicadas anteriormente.

Bit 1 DC: funciona de la misma manera que el bit 0 solo que este señala un acarreo en el cuarto bit de
menos peso, es muy útil para operaciones con números representados en BCD (decimal codificado
en binario).

Bit 2 Z (cero): conocida como la bandera cero, se pone en “1” cuando el resultado de una operación
aritmética o lógica es cero

Bit 3 PD: esta bandera indica la ejecución de una operación SLEEP poniéndose a “0” y se pone a “1”
cuando sucede un reset por conexión de alimentación o por función del perro guardián.

Bit 4 TO: se pone a “0” cuando el perro guardián se desborda y a “1” cuando se ejecutan las
instrucciones CLRWDT y SLEEP o después de conectar la alimentación.
REGISTRO DE ESTADO (STATUS)

Bit 5, Bit 6 RP0 RP1: son los encargados de seleccionar cada uno de los 4 bancos esto se ilustra en la
siguiente tabla.

Bit 7 IRP: este bit se usa junto con el bit de mayor peso del registro FSR para seleccionar el banco de la RAM
para el direccionamiento indirecto
El Acumulador
El acumulador es un Registro de 8 bits. También es llamado
registro de trabajo (Work) se identifica con la letra W.
el acumulador se usa esencialmente
para:
- Mover el contenido de un registro a
otro
- Para inicializar un registro con un
valor determinado
- Para realizar alguna operación lógica
o aritmética.

“Supongamos que queremos cargar el


Puerto B con unos en sus ocho bits,
tenemos que pasar forzosamente por
el acumulador: “carga el acumulador
con unos y mueve el contenido del
acumulador al Puerto A”.”
El Acumulador
Dos instrucciones para el acumulador.
Las dos instrucciones siguientes se aplican al acumulador y a la memoria
de datos: movlw, movwf
El Acumulador
Ejemplos:

Valor de W ?

Valor del PuertoB


Programando en Ensamblador

Un programa de una instrucción.

El punto y coma ; se utiliza para hacer comentarios a las instrucciones


que vamos editando. El Compilador no las traduce, simplemente no las
toma en cuenta. El punto y coma le indica al Compilador que lo que sigue
en ese renglón no debe ser considerado
Programando en Ensamblador

La declaración org define la dirección de la memoria


donde iniciamos a colocar las siguientes
instrucciones.

Quiere decir que las instrucciones que siguen serán


gravadas en la memoria a partir de la dirección d’0’ .
Parecería lógico que comencemos a escribir el programa a
partir de la dirección d’0’, de acuerdo, pero los PICS no
dejan de ser maquinitas, has que
explicarles todo con detalle, no presuponen nada.
End se usa para terminar el programa... org para iniciar y
End para terminar.
Programando en Ensamblador

En este ejemplo, las palabras: Inicio y PrendeSalidas son Etiquetas, las usamos
para mantener el programa bien documentado y como referencia para otras
instrucciones que se coloquen más adelante. Las Etiquetas son como nombres
del renglón. Siempre se escriben a partir de la columna 1.
Programando en Ensamblador
En el renglón que sigue a la etiqueta Inicio, se instruye al PIC cuales pines del
Puerto B deseamos como Entradas y cuales como Salidas.
Esto se logra mediante dos instrucciones:

También podría gustarte