Practica No 2-PROGRAMACION DE

Anuncio
Práctica No 2
PROGRAMACION DE MICROCONTROLADORES EN LENGUAJES
DE ALTO NIVEL
Objetivo: Programar un PIC 16F84A en lenguaje de Alto Nivel, empleando el
software Mikro C, para realizar un Contador Programable de 2 dígitos.
Material:
 1 Computadora Personal con Software instalado Mikro C y Master-Prog+
 1 Programador de PIC’s
 1 Fuente de Poder
 1 Protoboard
 1 PIC 16F84A
 7 Resistencias de 150Ω
 2 Resistencias de 2.2kΩ
 2 Transistores BC-547A (NPN)
 3 Resistencias de 10kΩ
 1 Switch deslizable de 4 posiciones DIP-4P (Steren)
 2 Capacitores de 22 pf
 1 Cristal de 4 MHz
 2 Displays de Siete Segmentos de Cátodo Común.
Marco teórico:
Investigar los siguientes temas de lenguaje C:
 Proposición if – else
 Ciclo for
 Ciclo do - while
Desarrollo:
En la presente práctica se empleará el Software de Programación Mikro C.
El docente le proporcionará una carpeta en USB que contiene un proyecto
desarrollado en Mikro C, el cual se titula ”CONTADOR”.
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
1
1. Navegar en la carpeta CONTADOR y dar click en el archivo del Proyecto
llamado “CONTADOR.ppc”. A continuación se abrirá el entorno de
programación del software Mikro C.
2. El proyecto ya contiene la declaración del cuerpo principal del programa, la
declaración de la variable (i), inicialización y configuración de la PUERTA A
y PUERTA B, y finalmente la declaración y el cuerpo de las funciones:
decodif() y mostrar_en_display(). Identificar el código para cada
una de estas acciones.
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
2
3. Previamente por equipos se les asigno un modo de conteo: Ascendente,
Descendente, Ascendente números pares, Descendente números
pares, Ascendente números impares o Descendente números
impares. El docente explico la manera de programar por ejemplo para el
modo Ascendente. Recordar que se debe utilizar un ciclo for con el valor de
inicialización de la variable, la condición para ejecutar el ciclo y el
incremento. En la siguiente imagen se muestra el código que se debe
escribir para programar un conteo Ascendente de uno en uno:
Observar que se debe inicializar la variable mediante la instrucción: i=0;
Observar la inicialización de la variable en el ciclo for ( i=0 ), la condición
en este caso es ( i<= 99), es decir debe contar desde 0 mientras la variable i sea
menor o igual a 99. Por último se observa el campo de incremento, como en
este ejemplo se trata de un conteo ascendente de uno en uno, el incremento debe
ser i++. En caso que el conteo sea de números pares o impares ascendente, el
incremento debe ser i+=2, lo que equivale a i = i + 2; en caso de que sea
conteo de números pares o impares descendente, el decremento debe ser i-=2
(i= i – 2).
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
3
4. Por equipos proceder a programar el conteo asignado. En el entorno
de programación escribir las instrucciones para programar su conteo.
En el siguiente espacio por favor anote las instrucciones que
ocupo para realizar el conteo asignado:
5. Una vez que ya ha escrito las instrucciones, dar click en el icono de
disquetes para proceder a Guardar los cambios realizados.
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
4
6. A continuación se procede a construir (compilar) el Proyecto. Abrir la
pestaña Project y dar click en la opción “Build”
El software Mikro C procede a compilar el proyecto y generar los
archivos necesarios. En este punto es en donde se pueden detectar errores en
la programación en C. En caso que haya algún error le aparecerá en la Ventana
messages una descripción de los errores encontrados para proceder a corregirlos.
Si el proceso de compilación fue Exitoso (Success) le aparecerán los
siguientes mensajes:
7. Navegar en la carpeta del Proyecto CONTADOR, identificar el archivo
generado con extensión .HEX. Este archivo es la traducción de nuestro
programa (lenguaje de Alto Nivel C) a un lenguaje máquina (bits)
representado en un formato Hexadecimal. Pueden abrir este archivo en el
Bloc de notas (Notepad) y verificar su contenido, observarán caracteres
hexadecimales.
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
5
8. El siguiente paso es “bajar” este archivo con el código máquina a la
memoria de programa (memoria FLASH) del microcontrolador
PIC16F84A.
9. Conectar el kit Programador de PIC’s al puerto USB de la computadora.
Insertar el PIC16F84A en el zócalo de programación.
10. Abrir el software MASTER-PROG+, aparecerá la siguiente ventana
indicando que se ha detectado el kit Programador de PIC’s y al
PIC16F84A insertado.
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
6
11. Proceder a borrar el contenido del PIC16F84A. Dar click en el botón
“BORRAR”. El software inicia el proceso de borrado, al final deberá
aparecer el siguiente mensaje: “Borrando Dispositivo…Listo!”
12. Posteriormente debemos abrir el archivo Hexadecimal generado en el
proceso de compilación del proyecto. Dar click en la pestaña “Archivo”,
seleccionar la opción “Abrir HEX”. Navegar en los directorios hasta ubicar
el archivo Hexadecimal, seleccionarlo y dar click en “Abrir”. Aparecerá el
mensaje “Archivo HEX Cargado Correctamente”.
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
7
13. Programar el código maquina (archivo hexadecimal) en la memoria del
PIC16F84A. Dar click en el botón “ESCRIBIR”, se iniciará el proceso de
Programación y verificación apareciendo varios mensajes en el software, al
final aparecerá el mensaje “Programación Correcta!”. El
microcontrolador PIC16F84A ya ha quedado programado correctamente.
14. Retirar el PIC16F84A del Programador de PIC’s e insertarlo en el circuito
CONTADOR previamente armado en un Protoboard. Observar el proceso
de conteo y verificar que funcione de acuerdo a lo asignado para
cada equipo. Si existiera alguna falla en la programación habrá que
corregirla en la programación en C del proyecto en Mikro C y realizar los
pasos indicados previamente hasta que el circuito de conteo funcione
correctamente.
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
8
15. Anote sus observaciones de manera individual:
16. Anote sus conclusiones de la presente práctica:
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
9
ANEXOS
CODIGO FUENTE EN LENGUAJE DE ALTO NIVEL C
(IMPORTANTE: ESTE CODIGO ES EL DEL
EJEMPLO DEL DOCENTE, FAVOR DE SUSTITUIRLO
POR EL CODIGO ESCRITO POR CADA EQUIPO)
void decodif(int dato_bcd);
/*Función decodificación*/
void mostrar_en_display (int cuenta);
/*Función Mostrar en Display*/
unsigned short i;
main()
{
PORTA =
PORTB =
TRISA =
TRISB =
0;
0;
0b00000011; /* RA1-RA0 ENTRADAS VELOCIDAD RA2-RA3 SALIDAS DE CONTROL TRANSISTORES*/
0;
/* SALIDAS
*/
do{
/* DO-WHILE */
i=0;
for (i=0; i<=99 ; i++){
mostrar_en_display(i);
}
} while(1);
/* DO-WHILE */
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
10
return 0;
}
/* MAIN */
void mostrar_en_display (int cuenta)
{
int bcd_alto, bcd_bajo, i, retardo;
if (PORTA.F1 == 0
retardo = 50;
else if (PORTA.F1
retardo = 25;
else if (PORTA.F1
retardo = 10;
else if (PORTA.F1
retardo = 5;
&& PORTA.F0 == 0)
/*
== 0 && PORTA.F0 == 1)
/*
== 1 && PORTA.F0 == 0)
/*
== 1 && PORTA.F0 == 1)
/*
bcd_bajo = cuenta % 10;
bcd_alto = cuenta / 10;
for (i=1; i<=retardo; i++)
{
decodif(bcd_alto);
PORTA.F2 = 1;
/*
delay_ms(10);
PORTA.F2 = 0;
/*
decodif(bcd_bajo);
PORTA.F3 = 1;
/*
delay_ms(10);
PORTA.F3 = 0;
/*
}
/* Ciclo FOR */
}
/* FUNCTION mostrar_en_display */
UN SEGUNDO APROX */
MEDIO SEGUNDO APROX */
200 MILISEFUNDOS */
100 MILISEGUNDOS */
HABILITA DISPLAY DECENAS */
DESHABILITA DISPLAY DECENAS */
HABILITA DISPLAY UNIDADES */
DESHABILITA DISPLAY UNIDADES */
void decodif(int dato_bcd)
{
switch (dato_bcd)
{
case 0:
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
11
PORTB = 0b0111111;
break;
case 1:
PORTB = 0b0000110;
break;
case 2:
PORTB = 0b1011011;
break;
case 3:
PORTB = 0b1001111;
break;
case 4:
PORTB = 0b1100110;
break;
case 5:
PORTB = 0b1101101;
break;
case 6:
PORTB = 0b1111100;
break;
case 7:
PORTB = 0b0000111;
break;
case 8:
PORTB = 0b1111111;
break;
case 9:
PORTB = 0b1100111;
break;
default:
PORTB = 0b0000000;
break;
}
/* SWITCH */
}
/* FUNCTION decodif */
Instalación de Sistemas Microprocesados
Docente: M. en C. Baldemar Irineo Carrasco
12
DIAGRAMA DEL CIRCUITO CONTADOR PROGRAMABLE DE DOS DIGITOS
+5 V
+5 V
14
10KΩ
10KΩ
4
MCLR
18
RA1
17
RA0
10KΩ
RB1
RB0
RB5
RB6
RB4
RB3
RB2
DIP-4P
7
6
11
12
b
a
f
g
10
9
8
e
d
c
PIC
16F84A
CONTROL
VELOCIDAD
22pF
16
RA2 1
RA3 2
OSC1
4 MHz
22pF
15
150Ω
150Ω
150Ω
150Ω
150Ω
150Ω
150Ω
Displays
Cátodo
Común
2.2kΩ
2.2kΩ
OSC2
5
BC-547A
VELOCIDAD DE CONTEO PROGRAMABLE
A TRAVES DEL SWITCH DESLIZABLE:
“00”
“01”
“10”
“11”




BC-547A
1 SEGUNDO
0.5 SEGUNDOS
0.2 SEGUNDOS
0.1 SEGUNDOS
13
Descargar