Este documento presenta cuatro prácticas utilizando diferentes declaraciones con el microcontrolador PIC. La primera práctica enciende y apaga un foco usando la declaración if. La segunda y tercera prácticas realizan contadores ascendente y descendente de 0 a 9 usando for-next. La cuarta práctica realiza un contador ascendente de dos dígitos usando while-wend.
2. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
TEMA Utilización de declaraciones con el microcontrolador pic.
OBJETIVO
y Utilizar las declaraciones if, select case, do, for, while con el microcontrolador
pic.
MARCO TEORICO
SENTENCIAS
Las sentencias especifican y controlan el flujo de ejecución del programa. En ausencia
de las sentencias de salto y de selección, las sentencias se ejecutan en el orden de su
aparición en el código de programa.
Sentencias de asignación
Las sentencias de asignación evalúa la expresión y le asigna el valor de la expresión a
una variable aplicando las reglas de la conversión implícita.
Variable = expression
El especificador variable puede ser cualquier variable declarad, mientras que el
especificador expression representa la expresión cuyo valor corresponde a la variable
dada.
Sentencias condicionales
Las sentencias condicionales o las sentencias de selección pueden decidir entre varios
cursos de acción distintos en función de ciertos valores.
Sentencia If
La sentencia if es una sentencia condicional. La sintaxis de la sentencia if es la
siguiente:
If expression then
Statement1
[ else
Statament2]
End if
Si expression se evalúa como cierto, statement1 se ejecuta. Si expression se evalúa
como falso, statement2 se ejecuta. La rama else compuesta de la palabra clave else y
la sentencia statement2 es opcional.
Sentencia Select Case
La sentencia Select Case es una sentencia condicional de ramificaciones múltiple.
Consiste en una sentencia de control (selector) y una lista de los valores posibles de la
expresión.
3. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
Sentencia For
La sentencia for se utiliza para implementación del bucle iterativo cuando el número
de iteraciones está especificado.
Sentencia While
La sentencia While se utiliza para implementación del bucle iterativo cuando el
número de iteraciones no está especificado. Es necesario comprobar la condición de
iteración antes de la ejecución del bucle. La sintaxis de la sentencia while es la
siguiente:
While expression
Statement
Wend
La sentencia statement se ejecuta repetidamente siempre que el valor de a expresión
expression sea cierto, el valor de la expresión se comprueba an tes de que se ejecute la
siguiente iteración. Si el valor de la expresión es falso antes de entrar el bucle, no se
ejecuta ninguna iteración.
Sentencia Do
La sentencia Do se utiliza para implementación de bucle iterativo cuando el número de
iteraciones no es especificado. La sentencia se ejecuta repetitivamente hasta que la
expresión sea cierta. Es necesario chequear la condición de iteración al final del bucle.
La sintaxis de la sentencia Do es la siguiente:
Do
Statement
Loop until expression
La sentencia statement se ejecuta repetidamente hasta que el valor de la expresión
expression llegue a ser cierta. La expresión se evalúa después de cada iteración así
que la sentencia se ejecutara por lo menos una vez.
PRACTICAS
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.
Entradas Un pulsador
Salidas Foco.
Procesos Si se presiona el botón el foco se enciende por 3 se gundos,
luego se apaga 1 segundo y se vuelve a encender el foco por 3 segundos.
Caso contrario el foco permanece prendido.
4. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
DIAGRAMA DE FLUJO
INICIO
Definir las
variables
LEER EL PORTB0.0
LEER EL PORTC0.0
Esta no
en 1
lógico
si
Portb.0=1
Retardo 3 seg.
Portb.0=0
Retardo 1 seg.
6. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
2. Utilizando la sentencia For-next, elabore un contador ascendente de 0 a 9,
que sea repetitivo.
Entradas Ninguna
Salidas Display de 7 segmentos.
Procesos Contador de 0 a 9 repetitivo.
DIAGRAMA DE FLUJO
INICIO
Definir las
variables
PORTB=a
a=a+1
RETARDO 0.5 SEG.
CODIGO
program Practica2_2
dim i,a as byte
main:
trisb=0
i=1
a=0
for i=1 to 10
portb=a
7. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
a=a+1
delay_ms(500)
next i
if a=10 then
a=0
else
end if
delay_ms(500)
goto main
end.
SIMULACION
C1
1uF
X1
CRYSTAL U1 U2
13 33 7 13
C2 OSC1/CLKIN RB0/INT A QA
14 34 1 12
OSC2/CLKOUT RB1 B QB
RB2 35 2 C QC 11
2 36 6 10
RA0/AN0 RB3/PGM D QD
1uF 3 37 4 9
RA1/AN1 RB4 BI/RBO QE
4 38 5 15
RA2/AN2/VREF-/CVREF RB5 RBI QF
5 39 3 14
RA3/AN3/VREF+ RB6/PGC LT QG
6 40
RA4/T0CKI/C1OUT RB7/PGD
7 7448
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 RE2/AN7/CS RC3/SCK/SCL 18
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
R1 RC6/TX/CK
25
10k 26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A
3. Utilizando la sentencia For-next, elabore un contador descendente entre 0 y
9, que sea repetitivo.
Entradas Ninguna
Salidas Display de 7 segmentos.
Procesos Contador de 9 a 0 repetitivo.
8. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
DIAGRAMA DE FLUJO
INICIO
Definir las
variables
PORTB=a
a=a-1
RETARDO 0.5 SEG.
CODIGO
program Practica2_3
dim i,a as byte
main:
trisb=0
i=1
a=9
for i=0 to 9
portb=a
a=a-1
delay_ms(500)
next i
if a=0 then
a=9
else
end if
delay_ms(500)
goto main
end.
9. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
SIMULACION
C1
1uF
X1
CRYSTAL
U1 U2
13 33 7 13
C2 OSC1/CLKIN RB0/INT A ¢ A
14 34 1 12
OSC2/CLKOUT RB1 B QB
35 2 11
RB2 C QC
2 ¡ 36 6 10
RA0/AN0 RB3/P M D QD
1uF 3 RA1/AN1 RB4 37 4 BI/RBO QE 9
4 38 5 15
RA2/AN2/VREF-/CVREF RB5
¡ RBI QF
¡
5 39 3 14
RA3/AN3/VREF+ RB6/P C LT Q
6 ¡ 40
RA4/T0CKI/C1 UT RB7/P D
7 7448
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 MCLR/Vpp/THV RC5/SDO 24
R1 RC6/TX/CK
25
10k 26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A
4. Utilizar la secuencia While-wend, para elaborar un contador ascendente de
dos digitos.
Entradas Ninguna.
Salidas dos display de 7 segmentos.
Procesos realizar un contador ascendente usando secuencias while - wend
10. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
DIAGRAMA DE FLUJO
INICIO
Definir las
variables
PORTC
2
PORTC PORTB=B
1O2
1
PORTB=A
CODIGO
program Practica2_4
Dim A,B As Byte
dim I As word
A=0
B=0
I=0
main:
TRISB=0
TRISC=0
while true
11. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
portc=1
portb=A
delay_us(248)
portc=2
portb=B
delay_us(248)
inc(I)
if I=2000 then
Inc(B)
if B=10 then
B=0
Inc(A)
else
if A=10 then
A=0
End if
End if
I=0
else
end if
wend
end.
SIMULACION
C1
1uF
X1
CRYSTAL U1 U2
13 OSC1/CLKIN RB0/INT 33 7 A QA 13
C2 14 34 1 12
OSC2/CLKOUT RB1 B QB
35 2 11
RB2 C QC
2 36 6 10
RA0/AN0 RB3/PGM D QD
1uF 3 37 4 9
RA1/AN1 RB4 BI/RBO QE
4 38 5 15
RA2/AN2/VREF-/CVREF RB5 RBI QF
5 39 3 14
RA3/AN3/VREF+ RB6/PGC LT QG
6 40
RA4/T0CKI/C1OUT RB7/PGD
7 7448
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
R1 RC6/TX/CK
25
10k 26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
RD2/PSP2
21 Q2
RD3/PSP3
22 Q1 2N3904
27 2N3904
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A
12. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
CONCLUSIONES
El pic puede utilizarse para controlar voltajes elevados
como pudimos ver en la primera aplicación de esta
práctica.
Se puede realizar contadores automáticos con las
sentencias que utilizamos, lo cual nos permite reducir la
programación.
RECOMENDACIONES
Se debe tener el manual del PIC que se utilice para saber la
conexión adecuada de los pines, el manual se lo puede
bajar de internet.
Es importante saber si el display es ánodo o cátodo común
ya que esto tiene mucho que ve en la conexión.
Al utilizar voltajes elevados es muy importante verificar que
no exista corto.
BIBLIOGRAFIA
Hoja de practicas de microcontroladores PIC
Manual de microcontrolador PIC 16f877a
www.mikroe.com/en/support
13. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
14. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
PRACTICA 2.1
PRACTICA 2.2
15. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
PRACTICA 2.3
PRACTICA 2.4
16. INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA