https://sites.google.com/site/cursopicmikrobasic/home
Introducción
Hoy en día es muy común encontrarnos con una gran cantidad de compiladores de alto nivel para
los Microcontroladores PIC de MICROCHIP. Uno de estos compiladores es MikroBasic de la
empresa Mikroelectronica. Con ayuda de este tutorial el estudiante aprendera a utilizar las
funciones básicas del compilador y depurador que viene integrado en el mismo programa.
MikroBasic
MikroBasic PRO para PIC es un compilador BASIC con todas las características para
microcontroladores PIC de Microchip. Está
diseñado para desarrollar, construir ydepurar aplicaciones
embebidas basadas en PIC. Este entorno de desarrollo cuenta con
una amplia variedad de características tales como: una sintaxis BASIC fácil de
aprender, IDE fácil de usar, un código muy compacto y eficiente, muchos equipos y bibliotecas de
software, la documentación completa, el simulador de software, un depurador de hardware, la
generación de archivos COFF, etc. Además incluye muchos ejemplos prácticos que permiten un
rápido inicio en la programacion demicrocontroladores PIC ®.
Este programa funciona correctamente, pero sólo el programador que lo escribió conoce su
propósito y modo de ejecución (como máximo uno o dos días).
Mas.
3. Presionar Siguiente
5. Configurar la Frecuencia
6. Crear carpeta del Proyecto (Mis Documentos/led_blink). Es recomendable que el nombre de la carpeta debe ser igual al nombre del p
7. Presionar Siguiente>Siguiente>Finalizar.
main:
TRISD=0 'Configuramos todos los pines de PORTD como salidas
while 1 'Inicio del ciclo infinito...
RD0_bit=0 'Ponemos el bit 0 de PORTD igual a 0
delay_ms(500) 'Retardo de 500ms
RD0_bit=1 'Ponemos el bit 0 de PORTD igual a 1
delay_ms(500) 'Retardo de 500ms
wend 'Fin del ciclo infinito
end.
2. Presionar el menú Project>Build o la combinación de teclas ctrl+F9
2. Si la subventana de observación no aparece en la parte derecha del compilador debes moverla de la sig
5. Para depurar paso a paso debemos presionar menú Run>Step Over o presionar la tecla F8. Este méto
en una subfunción.
o Cambia RD0_bit por RD7_bit y depura de nuevo el código para observar cuáles son los valores qu
o Cambia el formato de PORTD a binario y depura de nuevo el código para observar cuáles son los
2. Programacion Elemental
Contenidos
1. 1 Introducción
2. 2 Comentarios
4. 4 Constantes
5. 5 Variables
6. 6 Operadores Aritméticos
7. 7 Práctica de Laboratorio
Introducción
El Basic es un lenguaje de programación simple y fácil de entender. Para utilizarlo correctamente, basta con conocer sólo unos pocos e
consiste cada programa. Estos son:
o Comentarios
o Operadores
o Constantes
o Variables
o Símbolos
o Directivas
o Etiquetas
o Procedimientos y funciones
o Módulos
o Identificadores
o Expresiones
o Instrucciones
Comentarios
Los comentarios son las partes del programa utilizados para aclarar las instrucciones o para proporcionar más información al respecto.
a un apóstrofe se considera un comentario. El compilador determina dónde comienzan y terminan los comentarios y no los toma en cue
Aunque los comentarios no pueden afectar a la ejecución de un programa, son tan importantes como cualquier otra parte del programa
frecuencia es necesario mejorar, modificar, actualizar o simplificar un programa y es sumamente difícil interpretar incluso los programas
comentarios ya que sin ellos sólo el programador que lo escribió conoce su propósito y modo de ejecución y esto con un máximo de un
Constantes
Las constantes son los números o caracteres cuyo valor no puede ser cambiado durante la ejecución de programa. A diferencia de las var
en la memoria ROM del microcontrolador para guardar el mayor espacio posible de la memoria RAM. El compilador reconoce las con
const. Cada constante se declara bajo un nombre único que debe ser un identificador válido. Las constantes pueden ser en formatos
compilador los distingue por su prefijo. Si una constante no lleva prefijo, se considera decimal por defecto.
Variables
Una variable es un objeto nombrado capaz de contener un dato que puede ser modificado durante la ejecución de programa. Cada
únicoque debe ser un identificador válido. Por ejemplo, para sumar dos números (número1 + número2) en el programa, es necesario
qué es lo que llamamos suma en vida cotidiana. En este caso, número1, número2 y suma son variables. La sintaxis es la siguiente:
Las variables en Basic son de un tipo, lo que significa que es necesario especificar el tipo de dato que se asignará a la variable. Las var
RAM y el espacio de memoria ocupado (en bytes) depende de su tipo. Aparte de las declaraciones de una sola variable, las variables
en forma de una lista. Aquí, lista de identificadores es una lista de identificadores válidos delimitados por comas, mientras que tipo pue
Operadores Aritméticos
Los operadores aritméticos se utilizan para realizar operaciones aritméticas. Estas operaciones se realizan sobre los operando
los resultados numéricos. Las operaciones binarias se realizan sobre dos operandos, mientras que las operaciones unitarias se rea
operadores aritméticos se asocian de izquierda a derecha.
Operador Operación
+ Adición
- Resta
* Multiplicación
/ División - punto flotante
div División - redondear
mod Residuo
Práctica de Laboratorio
1. Crear un Nuevo Proyecto
2. Copiar el siguiente código
program Prog_elemental
main:
var1=135
var2=123
var3=var1+var2
var3=var1-var2
var3=var2-var1
var4=var1+var2
var4=var1-var2
var4=var2-var1
var5=var1+var2
var3=var1*var2
var5=var1*var2
var3=var1+3.16
var6=var1+3.16
end.
4. Compilar el Proyecto
5. Depurar Código y agregar los registros var1, var2, var3, var4 y var5
6. Presione F8 para ir paso a paso y conteste las siguientes preguntas:
a. ¿Cuál es el valor de var3 después de las líneas 12, 13 y 14 y explique por qué es ese resultado?
b. ¿Cuál debería ser el valor de var3 después de las líneas 12, 13 y 14?
c. ¿Cuál es el valor de var4 después de las líneas 15, 16 y 17 y explique por qué es ese resultado?
d. ¿Cuál debería ser el valor de var4 después de las líneas 15, 16 y 17?
e. ¿Cuál es el valor de var5 después de las líneas 18, 19, 20 y 21 y explique por qué es ese resultado?
f. ¿Cuál debería ser el valor de var5 después de las líneas 18, 19, 20 y 21?
g. ¿Cuál es el valor de var3 después de la línea 21 y explique por qué es ese resultado?
h. ¿Cuál debería ser el valor de var3 después de la línea 21?
i. ¿Cuál es el valor de var6 después de la línea 22 y explique por qué es ese resultado? (luego de la línea 22 presione F6)
h. ¿Cuál debería ser el valor de var6 después de la línea 22?
7. Cambia el formato de todas las variables a hexadecimal y binario y contesta de nuevo las preguntas anteriores.
3. Funciones y Procedimientos
Contenidos
1. 1 Introducción
1. 1.1 PROCEDIMIENTOS
2. 1.2 FUNCIONES
2. 2 Práctia de Laboratorio
Introducción
Las funciones y los procedimientos, denominados bajo el nombre común de rutinas, son subprogramas (bloques de sentencia
ciertas tareas a base de un número de los parámetros de entrada. Las funciones devuelven un valor después de la ejecución, m
no devuelven un valor.
PROCEDIMIENTOS
Un procedimiento es un bloque de código nombrado, o sea, una subrutina con algunas características adicionales. Por ejempl
Los procedimientos se declaran de la siguiente manera:
Una llamada a procedimiento se realiza al especificar su nombre seguido por los parámetros actuales colocados en el mismo o
correspondientes. Después de llamar a procedimiento, todos los parámetros formales se crean como los objetos locales ini
argumentos actuales.
Ahora, podemos llamar al procedimiento delay_seg para hacer cálculo del peso total de una carga, por ejemplo:
delay_seg(segundos)
FUNCIONES
Las funciones deben estar declaradas apropiadamente para ser interpretadas correctamente durante el proceso de la compilac
Ahora, podemos llamar a la función power para hacer cálculo de 312 por ejemplo:
Práctia de Laboratorio
1. Crear un Nuevo Proyecto llamado Arreglos
2. Copiar el siguiente código
program Funciones
'función que hace cálculo de x^n basado en los parámetros de entrada x y n (n > 0)
sub function power(dim x, n as byte) as longint ' x y n son bytes, resultado es longint
result = 1 ' inicializamos result = 1
while n <> 0 ' Mientras n sea distinto de 0
result=result*x ' el proximo valor de result sera result*x
n=n-1 ' el porximo valor de n sera n-1
wend ' Fin del while
end sub ' Si n=0 entonces result = 1
main:
while 1
delay_seg(2) 'Realiza un retardo de 2 segundos
tmp = power(3,2) 'el valor de tmp sera 3^2
delay_seg(5) 'Realiza un retardo de 5 segundos
tmp = power(4,5) 'el valor de tmp sera 4^5
wend
end.
3. Sentencias condicionales
Contenidos
1. 1 Introducción
2. 2 Operadores Relacionales
Introducción
Las condiciones son ingredientes comunes de un programa. Las condiciones permiten ejecutar una o varias sentencias depen
En otras palabras, ‘Si se cumple la condición (...), se debe hacer (...). De lo contrario, se debe hacer (...)’. Una sentencia co
sola sentencia o por un bloque de sentencias a ser ejecutadas.
Sentencia Condicional IF
La sintaxis en una forma simple de la sentencia if es:
if expresión then
operaciones
end if
Si el resultado de la expresión es verdadero (distinto de 0), las operaciones se realizan y el programa continúa con la ejecució
falso (0), las operaciones no se realizan y el programa continúa inmediatamente con la ejecución.
if expresión then
operaciones1
else
other operaciones2
end if
Si el resultado de la expresión es verdadero (distinto de 0), las operaciones1 se realizan. De lo contrario, las operaciones2 se
operaciones, el programa continúa con la ejecución.
Sentencias IF Anidadas
La sentencia if anidada necesita una atención adicional. Es una sentencia utilizada dentro de otra sentencia if. Siguiendo la re
por la sentencia if más anidada, mientras que cada sentencia else se enlaza a la más cercana sentencia if disponible a la izqui
Operadores Relacionales
Los operadores relacionales se utilizan para comparar dos variables y determinar la validez de su relación. En mikroBasi
devuelven 255 si la expresión es evaluada como verdadera (true). Si una expresión es evaluada como falsa (false), el operad
las expresiones tales como ‘si la expresión es evaluada como verdadera, entonces...’
Los especificadores value_1...value_n representan los valores posibles del selector. Pueden ser literales, constantes
especificadores statements_1 ...statements_n pueden ser
La cláusula case else es opcional.
Primero se evalúa el valor de la expresión selector. Después se compara con todos los valores disponibles. Si los valores son
se ejecutarán las sentencias que siguen a los valores iguales y termina la sentencia select case. En el caso de que coincidan lo
sentencias que siguen a los primeros valores iguales. Si no coincide ningún valor con el selector, se ejecutarán las sentencias
else (si hay alguna).
select case Variable
case 0
sentencia0
case 1
sentencia1
...
case N
sentenciaN
default
sentencia_default
end select
Práctica de Laboratorio
1. Crear un Nuevo Proyecto
2. Copiar el siguiente código
'El siguiente codigo muestra en un display de 7 segmenteos catodo comun el puerto
'que tenga el valor mayor siempre y cuando este no sea mayor a 9.
program Sent_condicionales
main:
ANSEL=0
ANSELH=0
TRISA=255
TRISB=255
TRISD=0
while 1
if PORTA > PORTB then 'Si PORTA > PORTB
aux=PORTA 'aux sera igual a PORTA
else 'de lo contrario
if PORTA < PORTB then 'SI PORTA < PORTB
aux=PORTB 'aux sera igual a PORTB
else 'de lo contrario
aux=0 'aux sera igual a 0
end if
end if
'Codigo para manejar display de 7 segmentos
select case aux 'seleccionar caso aux
case 0 'si aux=0
PORTD = 0x3F 'Visualizar "0"
case 1 'si aux=
PORTD = 0x06 'Visualizar "1"
case 2 'si aux=
PORTD = 0x5B 'Visualizar "2"
case 3 'si aux=
PORTD = 0x4F 'Visualizar "3"
case 4 'si aux=
PORTD = 0x66 'Visualizar "4"
case 5 'si aux=
PORTD = 0x6D 'Visualizar "5"
case 6 'si aux=
PORTD = 0x7D 'Visualizar "6"
case 7 'si aux=
PORTD = 0x07 'Visualizar "7"
case 8 'si aux=
PORTD = 0x7F 'Visualizar "8"
case 9 'si aux=
PORTD = 0x6F 'Visualizar "9"
case else 'caso contrario si aux>9
PORTD = %00000000 'Apagar Dispaly
end select
wend
end.
4. Compilar el Proyecto (ctrl+F9)
5. Depurar Código (F9) y agregar los registros PORTA, PORTB, PORTD y aux
6. Presiona F8 para ir paso a paso, da doble clic sobre cada registro en la ventana Watch Values para cambiar su valor y cont
a. ¿Cuál es el valor de la variable aux si PORTA es mayor a PORTB despues de la línea 24?
b. ¿Cuál es el valor de la variable aux si PORTA es menor a PORTB despues de la línea 24?
c. ¿Cuál es el valor de la variable aux si PORTA es igual a PORTB despues de la línea 24?
d. ¿Cuál es el valor de PORTD si aux es igual a 5?
7. Crear un Nuevo Circuito similar al siguiente, para ello será necesario buscar mediante la ventana de busqueda LOGICSTA
CATHODE.
Para poner el GROUND es necesario presionar el botón sources de la cinta de opciones izquierda.
9. Activa y desactiva cada segmento hasta formar un 9 sin el segmento inferior activo.
10. Copiar el valor de la casilla Common Cathode y pegarlo en el valor de PORTD del caso 9.
4. Bucles de Programa
Introducción
Algunas instrucciones (operaciones) deben ejecutarse más de una vez en el programa a esto se le denomina bucle, lazos o c
se ejecutará depende de las condiciones o centinelas de salida del bucle.
Bucle WHILE
El bucle while (mientras en español) se utiliza cuando el número de iteraciones no está especificado. Es necesario compro
de ejecutar un bucle. En otras palabras, el bucle while se ejecuta una vez cumplidas todas las condiciones necesarias para su
la sintaxis del bucle while:
while condicion
...
sentencias
...
wend
El programa se queda en el bucle hasta que la condicón llegue a ser falsa. El valor de la condición se comprueba antes de q
Si el valor de la expresión es falso antes de entrar el bucle, no se ejecuta ninguna iteración, es decir, las sentencias no se ejecu
con la ejecución desde el fin del bucle while (desde las instrucciones que siguen a la instrucción wend).
Un tipo especial del bucle de programa es un bucle infinito. La ejecución es simple en este caso ya que el resultado es s
diferente de 0), lo que significa que el programa se queda en el bucle:
do
...
sentencias
...
loop until condicion
Este bucle es similar al anterior, la diferencia es que las sentencias se ejecutarán hasta que la condición se convierta en verd
bucle se comprueban hasta el final del bucle, así que el bucle se ejecuta al menos una vez, sin comprobar si la condición es
Bucle FOR
El bucle for (Para en español) se utiliza cuando el número de iteraciones está especificado. La sintaxis del bucle for es la si
El parámetro valor_de_paso es un valor entero opcional, que es igual a 1 si es omitido. Antes de ejecutar la primera iteración
y se incrementa hasta llegar o exceder al valor_ final. Con cada iteración se ejecutan las sentencias. Las expresiones va
compatibles con el contador. El especificador sentencia puede ser cualquier sentencia que no afecta al valor del contador.
ser negativo, lo que permite contar atrás.
Práctica de Laboratorio
1. Crear un Nuevo Proyecto llamado Bucles
2. Copiar el siguiente código
'*******************************************************************************
'El siguiente código se encarga de realizar la suma de los números desde el 1
'hasta el 5 con los tres tipos de bucles
'*******************************************************************************
program Bucles
main:
sum=0 'Sum sera igual a 0
i=1 'i sera igual a 1
while i<=5 'mientras i sea menor o igual a 5
sum=sum+i 'sum sera igual al valor anterior mas el valor de i
i=i+1 'i sera igual al valor anterior mas 1
wend
end.
Los elementos de una matriz se identifican por su posición. Los índices van desde 0 (el primer elemento de una matriz) a
contenidos en la matriz). El compilador tiene que “saber” cuántas localidades de memoria debe alojar al declarar una matriz
no puede ser variable.
Para explicar con más claridad, una matriz puede ser pensada como una lista más o menos larga o corta de variables del mi
asigna un número ordinal que siempre empieza por cero. A esta matriz se le denomina vector. En la tabla de la derecha s
estante que contiene 100 elementos.
estante[0] 7
estante[1] 23
estante[2] 34
estante[3] 0
estante[4] 0
estante[5] 12
estante[6] 9
... ...
... ...
estante[99] 23
En este caso, el contenido de una variable (elemento) representa un número de productos que contiene el estante. A los elem
medio de la indexación, o sea, al especificar sus índices encerrados entre corchetes:
dim shelf as byte [100] ' Declarar la matriz "estante" con 100 elementos
shelf [4] = 12 ' 12 elementos están ‘colocados’ en el estante [4]
temp = shelf [1] ' Variable estante [1] se copia a la variable temp
En las matrices de constantes, a los elementos se les pueden asignar sus contenidos durante la declaración de matriz. En el s
de matriz denominada CALENDARIO se declara y a cada elemento se le asigna un número específico de días:
Práctica de Laboratorio
1. Crear un Nuevo Proyecto llamado Arreglos
2. Copiar el siguiente código
'El siguiente muestra en un display de 7 segmentos conectado al PORTD el valor
'correspondiente al codigo BCD ingresado por el PORTB
program Arreglos
'Declaracion de los valores del display 7seg.
const mask as byte [16]= (0x3F,0x06,0x5B,0x4F, '0,1,2,3,
0x66,0x6D,0x7D,0x07, '4,5,6,7,
0x7F,0x67,0x77,0x7C, '8,9,A,b,
0x39,0x5E,0x79,0x71) 'C,d,E,F.
dim i as byte
main:
ANSEL=0
ANSELH=0
TRISB=255 'Todos los pines como salidas
TRISD=0 'Todos los pines como Salidas
while 1 'Inicio del ciclo infinito
i=PORTB and 0x0F 'Tomamos los 4 bits inferiores de PORTB
PORTD=mask[i] 'PORTD sera igual al i-esimo valor de mask
wend
end.
6. ISIS-PROTEUS
El entorno de diseño electrónico PROTEUS VSM de LABCENTER ELECTRONICS (www.labcenter.co.uk) ofrece la pos
(lenguaje C) y bajo nivel (lenguaje ensamblador) para los microcontroladores y, simultáneamente, con la simulación en mo
el diseño tanto a nivel de hardware como software y realizar la simulación en un mismo y único entorno. Para ello se sumin
son el ISIS para el diseño gráfico, VSM (Virtual System Modelling) para la simulación y el ARES para el diseño de circuit
2. Listar los dispositivos que vamos a utilizar para crear el circuito, para ello debemos presionar el botó
teclado para abrir la subventana Pick Devices.
3. Buscar los dispositivos mediante la caja de busqueda Keyword. En esta podemos ingresar palabras cl
los dispositivos, por ejemplo si queremos buscar una resistencia escribimos RES. En nuestro caso busca
LOGICPROBE, una vez encontrados hay que darle doble clic para que aparesca en la lista Devices.
4. Cierra la subventana Pick Devices y ubica cada dispositivo en el lugar que consideres necesario, para
clic sobre nombre del dispositivo en la lista y luego ubicarlo en la ventana de trabajo.
o Si deseas girar hacia la derecha un dispositivo presiona la tecla "+" del teclado numérico.
o Si deseas girar hacia la izquierda un dispositivo presiona la tecla "-" del teclado numérico.
o Si deseas rotar en espejo un dispositivo presiona la combinación de teclas "ctrl+M".
6. Unir los dispositivos con cables dando clic en el primer pin, luego mover el cursor y finalmente dar c
8. Seleccionar el archivo *.hex que se cargará en el PIC ubicado en la carpeta del proyecto (Mis Docum
9. Configurar la frecuencia con la que se realizará la simulación y presionar el botón OK para finalizar
11. Observar lo que ocurre durante la simulación para comprobar el funcionamiento del circuito.
12. Detener la simulación una vez que compruebes que el circuito funciona correctamente o para modif
Si observas en el ejmplo anterior no es necesario ubicar el cristal de cuarzo y los capacitores ceramicos
debe a que el simulador solo utiliza la frecuencia configurada en las propiedades del PIC y no el cristal.
Otra cosa importante es que puedes utilizar un LED y una resistencia conectados en serie en vez del LO
1. 1 Introducción
2. 2 Puertos de Entradas/Salidas.
Introducción
En casi todos los proyectos es necesario leer alguna entrada de tipo digital conectada a pulsadores, interruptores, sensores d
necesario escribir datos por medio de una salida de tipo digital conectada a LED, pantallas LCD, display de siete segmento
de explicar cómo realizar la configuración de los puertos del PIC para utilizarlos como entradas o salidas digitales.
Puertos de Entradas/Salidas.
Los Microcontroladores PIC tienen terminales de entrada/salida (I/O, Input/Output) divididos en puertos, que se encuentras
C, D, etc. Cada puerto puede tener hasta 8 terminales que se pueden comportar como una I/O digital. El PIC16F887 tiene h
general, y en dependencia de la configuración de sus periféricos pueden estar disponibles como I/O de propósito general. P
USART (Transmisión Serial) los pines correspondientes a este periférico serán utilizados para atender las operaciones del m
como I/O de propósito general.
Por ejemplo:
TRISA=%00000000 'Todos los pines de PORTA son salidas
TRISB=%11111111 'Todos los pines de PORTB son entradas
TRISC=%00001111 'Los pines de PORTC 0 al 3 son entradas y los pines 4 al 7 son salidas
TRISD.3=0 'El pin 3 de PORTD se configura como salida sin afectar los demas pines.
TRISD.5=1 'El pin 5 de PORTD se configura como entrada sin afectar los demas pines.
Una forma fácil de recordar como configurar un pin como entrada o como salida es que el 1 se parece a la "I" de Input y el
así todos los bits de los registros TRIS que tengan 1 seran entradas y los bits que tengan 0 serán salidas.
Muchas veces deseamos configurar una gran cantidad de pines sin modificar el resto para ello se utilizan las operaciones bi
llamadas operaciones mascara.
TRISD=TRISD or %00001111 'Los pines PORTC<0..3> se configuran como entradas sin modificar los demas pines.
TRISD=TRISD and %10100110 'Los pines PORTD<0,3,4,6> se configruan como entradas sin modificar el resto.
Escritura de Puertos
Cuando configuramos un puerto o pin como salida podemos escribirlo utilizando los registros PORTx, pero si algún pin de
salida no se producirá ningún cambio al momento de escribirlo. Por ejemplo:
TRISA=%00000000 'Configuramos todos los pines de PORTA como salida
TRISB=%01010101 'Configuramos los pines PORTB<1,3,5,7> como salida el resto como entrada.
...
PORTA=%11110000 'A PORTA se le asignara el valor $11110000
PORTB=%11111111 'Solo los pines PORTB<1,3,5,7> sufriran cambio
Práctica de Laboratorio
1. Crear un Nuevo Proyecto
2. Copiar el siguiente código
program Puertos
main:
TRISA=%00000000 'Todos los pines de PORTA son salidas
TRISB=%11111111 'Todos los pines de PORTB son entradas
TRISC=%00001111 'Los pines de PORTC 0 al 3 son entradas y los pines 4 al 7 son salidas
' TRISA=0 'Todos los pines de PORTA son salidas
' TRISB=255 'Todos los pines de PORTB son entradas
' TRISC=$0F 'Los pines de PORTC 0 al 3 son entradas y los pines 4 al 7 son salidas
TRISD.3=0 'El pin 3 de PORTD se configura como salida sin afectar los demas pines.
TRISD.5=1 'El pin 5 de PORTD se configura como entrada sin afectar los demas pines.
TRISD=TRISD or %00001111 'Los pines PORTC<0..3> se configuran como entradas sin modificar los demas pines
while 1 'Inicio del Ciclo Infinito
PORTB=PORTA 'El valor de PORTA se asignara al Valor de PORTB
VAR1=PORTC 'El valor de PORTC se asignara al Valor de VAR1
VAR2=PORTD 'El valor de PORTD se asignara al Valor de VAR1
PORTD=VAR1+VAR2 'La suma de VAR1 y VAR2 se asignara al valor de PORTD (solo se modifican los pines de
Delay_ms(500) 'Retardo de 500ms para observar cambios
wend 'Fin del Ciclo infinito.
end.
4. Compilar el Proyecto
5. Depurar Código y agregar los registros TRISA, TRISB, TRISC, TRISD, VAR1, VAR2, PORTA, PORTB, PORTC y PO
6. Conteste las siguientes preguntas:
a. ¿Qué valor se le asigna a TRISA, TRISB, TRISC y TRISD despues de la línea 8.
b. Si a PORTA se le asigna el valor %101010101 que valor tendrá PORTB despues de la línea 16.
c. Si a PORTC se le asigna el valor %111001111 que valor tendrá VAR1 despues de la línea 17 y que valor tendrá PORT
7. Comentar las líneas 6, 7 y 8 y descomentar las líneas 9, 10 y 11 y contesde la prengunta a.
8. Crear y simular un Nuevo Circuito como muestra la siguiente figura.