Prácticas con Microcontrolador


ir a contenido

Contador

Prácticas > Práctica 11


Montemos ahora el circuito de la figura.

Son dos displays de 7 segmentos con cátodo común.

Los ánodos van conectados al puerto B y los cátodos a las puertas RA2 y RA3.


Debemos escribir un programa que nos muestre en los displays la cuenta de las pulsaciones sobre el contacto conectado a RA0.




El diagrama de flujo del programa será similar a éste.


Y el programa resultante podría ser el que aparece a continuación.

Se ha hecho uso de funciones y subrrutinas para que pueda servir de ejemplo de como utilizarlos.



program Contador

symbol Display1 = 4
symbol Display2 = 8

dim Contador as word
Unidades,
Decenas,
pass as byte


sub function LED_Mask(dim number as byte)as byte
select case number
case 0 result = $3F ' mask '0'
case 1 result = $06 ' mask '1'
case 2 result = $5B ' mask '2'
case 3 result = $4F ' mask '3'
case 4 result = $66 ' mask '4'
case 5 result = $6D ' mask '5'
case 6 result = $7D ' mask '6'
case 7 result = $07 ' mask '7'
case 8 result = $7F ' mask '8'
case 9 result = $6F ' mask '9'
end select 'case
end sub

sub function Boton_soltado as byte
result = false
if (Button(PORTA, 0, 1, 1)) then
pass = true
end if
if pass and (Button(PORTA, 0, 1, 0)) then
pass = false
result = true
end if
end sub

sub procedure Num_a_Cifras(dim number as word)
dim var as byte
var = (number) div 10
Decenas = LED_Mask(var)
var = number - 10*var
Unidades = LED_Mask(var)
end sub

sub procedure Mostrar_Cifra(dim cifra, display as byte)
PORTB = cifra
PORTA = display
Delay_us(1000)
PORTA = $00
end sub

sub procedure Mostrar_Num(dim numero as word)
Num_a_Cifras(numero)
Mostrar_Cifra(Unidades, Display1)
if Contador >= 10 then
Mostrar_Cifra(Decenas, Display2)
end if
end sub


main:
INTCON = $00
TRISB = $00
TRISA = $01

Contador = 0
pass = false

while true

if Boton_soltado then
inc(Contador)
if Contador = 100 then
Contador = 0
end if
end if
Mostrar_Num(Contador)
wend
end.


Prácticas con Microcontrolador PIC 16F84 | miguel.tecno@gmail.com

Regresar a contenido | Regresar al menu principal