4
Bueno aquí el programa con pruteus. Espero sea de utilidad: el objetivo es hacer un contador de 0-99 con el PIC16F84A Con el fin de hacerlo manualmente para contar ya sea con SW1 y Reset SW2. También se podría cambiar este SW1, por algún sensor de movimiento u otro.

Contador 0-99 con PIC16F84A y Mikrobasic

Embed Size (px)

DESCRIPTION

Bueno aquí el programa con proteus. Espero sea de utilidad: el objetivo es hacer un contador de 0-99 con el PIC16F84A Con el fin de hacerlo manualmente para contar ya sea con SW1 y Reset SW2. También se podría cambiar este SW1, por algún sensor de movimiento u otro.Les dejo también el programa con MIKROBASIC y arriba como programar las casillas que solo selecciono 4: program Cont7seg0a9CNM ' *MikroElektronika, 2012 ' *Descripcion:TIEEE, FIME, UANL,MX. 2012-2013 ' Prof: Carlos Navarro Morín '

Citation preview

Page 1: Contador 0-99 con PIC16F84A y Mikrobasic

Bueno aquí el programa con pruteus. Espero sea de utilidad: el objetivo es hacer un contador de 0-99 con el PIC16F84A

Con el fin de hacerlo manualmente para contar ya sea con SW1 y Reset SW2. También se podría cambiar este SW1, por

algún sensor de movimiento u otro.

Page 2: Contador 0-99 con PIC16F84A y Mikrobasic

Les dejo también el programa con MIKROBASIC y arriba como programar las casillas que solo selecciono 4:

program Cont7seg0a9CNM

' *MikroElektronika, 2012

' *Descripcion:TIEEE, FIME, UANL,MX. 2012-2013

' Prof: Carlos Navarro Morín

' *Este codigo demuestra el uso de 2 display de 7 segmentos de cátodo comun

' en modo multiplexado trabajando en un contador de 0 a 99.

' Todos los display connectados al portb(RB0..RB7, segment A a RB0,...G a RB6)

' con refrescamiento a través de los pines RA0..RA3 en porta.

' * Configuración:

' MCU: PIC16F84A

' Oscilador: XT, 4.000 MHz

' SW: mikroBasic v7.2

Page 3: Contador 0-99 con PIC16F84A y Mikrobasic

const display as byte[10]=(63,6,91,79,102,109,125,7,127,111) 'Códigos para 7 seg

dim millar as word 'Millares del conteo

dim centena as word 'Centenas del conteo

dim decena as word 'Decenas del conteo

dim unidad as word 'unidades del conteo

dim cuenta as word 'Cuenta el numero de sensados

'ADCON1 = 7 'Puerto A digital este solo en PIC con puerto digital en este caso no.

trisa=%00010000 'RA4 entrada resto como salida

trisb=%10000000 'RB7 entrada, resto salida

porta=0 'Limpia Porta A

portb=0 'Limpia Porta B

cuenta=0 'Inicializa numero de cuentas

porta.0=1

delay_ms(2000)

porta.0=0

while true 'Ciclo INFINITO

if Button(PORTB, 7, 10, 1) then

cuenta=cuenta+1 'Incrementa la cuenta

'porta.0=1 'BUZZER en on conectado en PA0

'delay_ms(50) 'Espera

'porta.0=0 'PA0 en OFF (extinguido buzzer)

end if

rem ------Si se supera la cuenta maxima o hay un reset----

if (cuenta >= 10000) or (porta.4=1) then

porta.0=1 'BUZZER en on conectado en PA0

Page 4: Contador 0-99 con PIC16F84A y Mikrobasic

delay_ms(2000) 'Espera

porta.0=0 'PA0 en OFF (extinguido buzzer)

cuenta=0 'Limpia o borra el número de cuentas

end if

rem -----Calculo matemático-----

'División con rendondeo "/"

decena=cuenta-(millar*1000)-(centena*100)

decena=decena/10

unidad=cuenta-(millar*1000)-(centena*100)-(decena*10)

rem -----Pilotea Display 1 (Decena)------

porta=0 'Borra todo el display

portb=display[decena] 'Coloca la cifra correspondiente

porta=4 'Enciende el 1er display PortA.2=1

delay_ms(85) 'Espera 5 milisegundos

rem -----Pilotea Display 2 (Unidad')------

porta=0 'Borra todo el display

portb=display[unidad] 'Coloca la cifra correspondiente

porta=8 'Enciende el 2o display PortA.3=1

delay_ms(85) 'Espera 5 milisegundos

wend

end.