Laboratorio de Microprocesadores I
Docente: Ing. Roger Guachalla Narvez
xoroger@[Link]
PRACTICA 05: Programacin en MikroBasic Entrada y Salida de datos digitales
1. Objetivos:
Introducir la sintaxis bsica del lenguaje MikroBasic
Realizar ejemplos de Entrada y Salida de datos digitales
Ejemplo A: Secuencias con leds
Ejemplo B: Unidad Aritmtica Lgica de 4-bit
Ejemplo C: Control de display de leds de 7 segmentos
2. Sintaxis bsica del lenguaje MikroBasic
MikroBasic no distingue entre maysculas o minsculas. Es decir: SUBIR, Subir, subir, sUbIr todas se refieren a una misma variable.
Debido que el microcontrolador PIC16F877A es de 8-bits, procure siempre utilizar variables de este tipo (byte, char, short)
Tipos de Datos:
El
Comentario:
comentario en MikroBasic es el apstrofe simple
Base numrica:
Decimal (Por defecto): 156
Hexadecimal: $3A o 0x3A
Declaracin de Variables en memoria RAM:
dim nombre_de_variable as tipo_de_variable
Ejemplos:
dim
dim
dim
dim
bandera as bit
valorX, valorY, valorZ as byte
contador, temp as word
valores as integer[5]
Declaracin de Constantes en memoria ROM:
const nombre_de_constante = valor
Ejemplos:
const limite = 100
const meses as byte[12]=(31,28,31,30,31,30,31,31,30,31,30,31)
Smbolos:
symbol nombre_de_smbolo = cdigo
Ejemplos:
symbol Saldida = PORTA
symbol Retardo = Delay_ms(200)
main:
trisA=$00
Salida=$00
lazo:
inc(Salida)
Retardo
goto lazo
end.
Binaria: %01101010
Sentencias Condicionales:
o Sentencias if
if-else
if expresion then
sentencia
[else
Otras sentencias]
end if
Ejemplo:
if DatoA>5 then
PORTC=$3F
end if
Sentencia
select case
select case selector
case valor_1
sentencias_1
...
case valor_n
'Falso = 0,
'Verdad <> 0
'Ejemplo para la figura Caso A
if (PORTB.0) then 'Si boton NO se presiona
PORTB.1=0
'Apagar Led
else
PORTB.1=1
'Prender Led
end if
'Ejemplo la figura Caso B
if (PORTB.0) then 'Si boton se presiona
PORTB.1=0
'Prender Led
else
PORTB.1=1
'Apagar Led
end if
sentenicas_n
[case else
Sentencias_por_omision]
end select
Ejemplo:
select case valor
case 1
res=n1*n2
case 2
res=n1/n2
case 3
res=n1+n2
case 4
res=n1-n2
case else
res=0
end select
Sentencia for
o Sentencia
for contador = valor_inicial to valor_final [step valor_de_paso]
lista_de_sentencias
next contador
do
Ejemplo:
Ejemplo:
sentencias
loop until expresin
s=10
i=0
do
s=0
for i=0 to 10
s=s+i
next i
Sentencia while
while expresion
nsentencias
wend
Ejemplo:
s=10
i=0
while i<s
i=i+1
wend
do
i=i+1
loop until i>s
o Sentencia
goto
nombre_de_etiqueta :
goto nombre_de_etiqueta
Ejemplo:
lazo:
inc(PORTC)
delay_ms(300)
goto lazo
3. Salida de datos digitales con leds
Existen 2 tcnicas para encender un led con el microcontrolador: Por lgica directa y por lgica inversa
Si usamos lgica directa el led se enciende con un 1 lgico (VCC) y se apaga con un 0 lgico (Gnd). Es la forma ms
intuitiva de conexin y es ampliamente usado en enseanza. La desventaja es que el brillo del led depende de la
corriente que pueda suministrar el microcontrolador a travs del pin de Salida (En este ejemplo RC.7) siendo un valor
mximo de 20 miliamperes por pin y no pudiendo superar los 100 miliamperes para todo el puerto.
Si usamos lgica inversa el led se enciende con un 0 lgico (Gnd) y se apaga con un 1 lgico (VCC). Esta forma causa
mayor confusin porque nuestro cerebro est acostumbrado a la lgica directa. Sin embargo se puede lograr un mayor
brillo del led debido a que la corriente proviene de la fuente de alimentacin externa. Por esta razn se utiliza
mayormente en la prctica.
4. Entrada de datos digitales con Switch y Botn
De manera similar existen 2 mtodos para conectar un switch (interruptor) o un botn (pulsador). En la figura, el switch SW1
genera un valor lgico alto (1) cuando se presiona, mientras que el switch SW2 genera un valor bajo (0) al presionarlo. Por otro
lado los 4 microswitch conectados al puerto RD en sus bits ms bajos (RD0 al RD3) generan 1s o 0s pero los bits superiores (RD3
al RD7), al encontrarse al aire (desconectados) tienen un valor incierto como entrada por que es imprescindible realizar una
mscara con la funcin lgica AND para asegurar un valor 0 en estos bits.
Ejemplo A: Control de Leds
A. Diagrama Esquemtico
Componentes Proteus
A. Cdigo fuente MikroBasicPro for PIC
Ejemplo B: Unidad Aritmtico Lgica (ALU) de 3-bit y 4 operaciones
Codificar un programa para simular una Unidad Aritmtico Lgica (ALU) con 2 entradas Dato A y Dato B de 3 bits cada una y un
selector de Operacion de 2 bits con la posibilidad de realizar las siguientes operaciones:
Operacin
00
01
10
11
Dato
Dato
Dato
Dato
Salida
A + Dato
A - Dato
A * Dato
A / Dato
B
B
B
B
B. Diagrama en Bloques
PORTC
Operacin
B. Diagrama Esquemtico
Componentes Proteus:
4
Dato B
1
Dato A
B. Cdigo fuente MikroBasic
5. Display de leds de 7 segmentos
Un display de 7 segmentos est conformado por un arreglo de 7 leds que comparten un terminal en comn. En funcin a
esto, se dividen en displays de nodo Comn (7-Seg AC) y Ctodo Comn (7-Seg CC). Cada segmento posee una notacin
estandarizada (de A hasta G) adicionalmente se suele incluir un led adicional para representar el punto (dot).
Si usamos un display 7-Seg CC manejaremos lgica directa, es decir, el terminal comn debe tener un 0 lgico (conectado a
tierra) y para prender cada segmento se requiere un 1 lgico.
Si usamos un display 7-Seg AC manejaremos lgica inversa, es decir, el terminal comn debe tener un 1 lgico (conectado a
VCC) y para prender cada segmento se requiere un 0 lgico.
El display visualizar los dgitos del 0 al 9 de acuerdo a la siguiente figura:
Cada dgito se codifica asignando un segmento del display a cada bit de un puerto del microcontrolador. El punto (dot) no
ser visualizado. Para facilitar la codificacin, se usar la herramienta en MikroBasic Seven Segment Editor
La siguiente tabla muestra la codificacin para un display 7-Seg CC usando el puerto RB del PIC16F877A:
Con algo de imaginacin, tambin se pueden visualizar las letras del alfabeto:
Ejemplo C: Control de Display 7-Seg Ctodo Comn
C. Diagrama Esquemtico
Componentes Proteus
C. Cdigo fuente MikroBasic
6. Procedimiento Experimental en Laboratorio
I.
Primera Firma:
Usando como base el Ejemplo B, realizar un ALU de 4-bit y 8 operaciones de acuerdo a los siguientes parmetros:
Dato A:
Dato B:
Operacin:
Salida:
RC.0
RC.4
RB.0
RD.0
a
a
a
a
RC.3
RC.7
RB.2
RD.3
(4 switch)
(4 switch)
(3 switch)
(4 led)
Tabla de operaciones:
Operacin
000
001
010
011
100
101
110
111
II.
a)
Salida
000
Dato A AND Dato B
Dato A OR Dato B
Dato A XOR Dato B
NOT Dato A
NOT Dato B
1010
1111
Segunda Firma: Modificando el circuito esquemtico de acuerdo a los enunciados, realizar uno de los
siguientes EJERCICIOS: (El inciso a realizar ser asignado por el Docente o Auxiliar)
Usando como base el Ejemplo C y conectando 1 switch al bit inferior del puerto RC (RC.0) y un Led al bit RC.7, realizar
un Temporizador hexadecimal que inicie desde el valor mostrado en la siguiente tabla hasta llegar de manera
descendiente cada segundo al valor 0. Al cumplirse el tiempo, el Led indicador se enciende y el programa se detiene.
RC.0
0
1
Tiempo (segundos)
9
F
b) Usando como base el Ejemplo C, aadiendo un segundo display de 7-Seg al puerto RD y conectando 8 switches al
puerto RC y 1 switch al bit RE.0, mostrar en los displays el equivalente en hexadecimal del valor de los 8 switches.
c)
Modificando el cdigo del Ejemplo C, y aadiendo un switch al bit RC.0 realizar un programa que:
Si RC.0 est a nivel bajo (0), muestre el nombre completo de uno de los integrantes de grupo con un retardo de
segundo entre cada letra.
Si RC.0 est a nivel alto (1), se muestre el siguiente mensaje: BASE COLECTOR EMISOR ELECTRONICA LO MEJOR
7. Informe de Laboratorio
I.
Cartula con Firmas del Docente
II.
Para el INCISIO realizado en la Segunda Firma, imprimir los siguientes puntos:
III.
Enunciado del Ejercicio
Diagrama de Flujo
Esquemtico en ISIS-Proteus
Cdigo Fuente MikroBasic
RESUMEN DE INVESTIGACION: Leds
RGB y control de color mediante PWM
Historia
Fundamento Terico
Ejemplo de circuito de aplicacin
Usos y aplicaciones comerciales
(Los RESUMENES de investigacin deben estar escrito a mano, de por lo menos 3 pginas de extensin,
incluyendo las fuentes de Direcciones WEB. Adicionalmente se debe incluir las dos primeras pginas del
Material Impreso usado para el resumen)
IV.
Conclusiones