UNIVERSIDAD POLITÉCNICA SALESIANA
INGENIERÍA ELECTRÓNICA SISTEMAS MICROPROCESADOS
TEMA: UTILIZACION DE DECLARACIONES CON ELMICROCONTROLADOR PIC
INFORME Nº 2
INTEGRANTES:
ERIKA ABRIL VINICIO DAVILA REMIN ZAMBRANO
1
OBJETIVO: • Utilizar las declaraciones if, select, case, do, for, while, con el microcontrolador pic. EJERCICIO 1: Si se presiona el botón el foco se enciende por 3 segundos, luego se apaga 1 segundo y se vuelve a encender el foco por 3 segundos. Caso contrario el foco permanece prendido. CÓDIGO DEL PROGRAMA: program ejercicio1 trisc=$ff trisb=$0
main: if
portc.0=1 then portb.0=1 delay_ms(3000) portb.0=0 delay_ms(1000) port.0=1 delay_ms(3000) portb.0=0
else portb.0=1 end if
2
goto main end. ALGORITMO: Entradas: Datos que ingresan al microcontrolador pic. Salidas: Datos que se mostrarán al encender y apagar el foco. Procesos: 1. Definir el puerto b como entrada de datos (trisb=$0). 2.
Almacenar en el puerto c el dato de activación (encendido) del foco en el circuito (trisc=$ff).
3. Comparar los datos que ingresan por el puerto c y se escriben en el puerto b, provocando la activación o no del circuito que encenderá el foco. 4. Escoger según los tiempos la operación del circuito. 5. Controlar el lazo de funcionamiento del programa. 6. Mostrar el trabajo de los datos que ingresaran al microcontrolador pic en el foco.
3
DIAGRAMA DE FLUJO: Configuración de los registros
NO
SI
4
EJERCICIO 2: Utilizando la sentencia for-next, elaborar un contador ascendente de 0 a 9, que sea repetitivo. CODIGO DEL PROGRAMA: program ejercicio2 dim i,a as byte main: trisb=0 i=1 a=0 for i=1 to 10 portb=a a=a+1 delay_ms(500) next i if a=10 then a=0 else end if delay_ms(500) goto main end.
5
ALGORITMO: Entradas: Datos que serán almacenados en el microcontrolador. Salidas: Datos que serán mostrados de manera repetitiva en el display (números del 0 al 9). Procesos: 1.
Definir 2 variables donde se guardaran los datos que ingresan.
2.
Almacenar en la primera variable el valor de 1 y en la otra el valor de 0 (i=1, a=0).
3. Utilizar la declaración for para realizar el lazo de 1 a 10 en la primera variable (for i=1 to 10) 4.
Sumar a la segunda variable el valor de 1 para que vaya incrementando.
5.
Realizar una comparación si la segunda variable llega a ser igual a 10, se debe guardar el valor de cero en dicha variable y regresar al inicio del lazo..
6.
Escribir en el puerto b.
7. Retardo 500 ms. 8. Mostrar los resultados en el display.
6
DIAGRAMA DE FLUJO:
no
si
7
EJERCICIO 3: Mediante la sentencia for-next, elaborar un contador descendente entre 9 y 0. program ejercicio2 dim i,a as byte main: trisb=0 i=1 a=0 for i=10 to 1 portb=a a=a-1 delay_ms(500) next i if a=10 then a=0 else end if delay_ms(500) goto main end. ALGORITMO: Entradas: Datos que serán almacenados en el microcontrolador.
8
Salidas: Datos que serán mostrados de manera repetitiva en el display (números del 9 al 0). Procesos: 1.
Definir 2 variables donde se guardaran los datos que ingresan.
2.
Almacenar en la primera variable el valor de 1 y en la otra el valor de 0 (i=1, a=0).
3. Utilizar la declaración for para realizar el lazo de 10 a 1 en la primera variable (for i=10 to 1). 4. Restar a la segunda variable el valor de 1 para que vaya decreciendo. 5. Realizar una comparación si la segunda variable llega a ser igual a 0, debe regresar al inicio del lazo. 6.
Escribir en el puerto b.
7. Retardo 500 ms. 8. Mostrar los resultados en el display.
9
DIAGRAMA DE FLUJO:
no
si
EJERCICIO 4: Utilizar la secuencia While-wend, para elaborar un contador ascendente de dos digitos. CODIGO DEL PROGRAMA: 10
program ejercicio4 Dim A, B as byte Dim I as word A=0 B=0 I=0 Main: Trisb=0 Trisc=0 While true portC=1 portB=A delay_us(1) portc=1 portb=B delay_us(1) inc(I) If I=2000 then Inc(B) If B=10 then B=0
11
Inc(A) Else If A=10 then A=0 End if End if I=0 else end if Wend
End.
ALGORITMO: Entradas: Datos que serán almacenados en el microcontrolador. Salidas: Datos que serán mostrados en los display (números del 00 al 99). Procesos: 1.
Definir 2 variables como byte y una como palabra donde se guardaran los datos que ingresan.
2. Las tres variables guardaran el valor de 0. 3. Activar los puertos b y c (trisb=0, trisc=0). 4.
Utilizar la declaración while para realizar el lazo de operación.
5. Retardo 1us, este retardo debe ser controlado hasta una visualización correcta. 12
6. Mostrar los resultados en los display. DIAGRAMA DE FLUJO:
si
no
Inc(B)
Fin
no B=1 0
Inc() no A=1 0
Fin
13
si
A=0 si
B=0
ANEXOS:
Fig1: contador ascendente de un digito
14
Fig2: conectando el circuito para el contador descendente
Fig3: contador de dos dígitos
15