Hola foristas, despues de recibir de ustedes mucho contribuyo con algo en este foro, basandome en algunos ejemplos y empleando algo de logica me atrevo a subir un ejemplo de un contador en LCD con el PIC16F84 empleando el MKB, no es la gran cosa pero sera de ayuda a los que como yo en un principio tomaban las referencias de este foro para dar sus primeros pasos, gracias a Navasimo, Jovani, Paola y todods aquellos que nos han ayudado a los que vamos atras.
Bueno menos rollo y mas accion, aqui les dejo el programa:
program Cont999LCD
'PIC16F84
' El siguiente programa realiza un conteo del 0 al 999 en el LCD
' Controlado por el puertoB
' RB1 = RS (Register Select)
' RB2 = RW
' RB3 = E (Enable)
' RB4 = D4 (Data Line Number 4)
' RB5 = D5 (Data Line Number 5)
' RB6 = D6 (Data Line Number 6)
' RB7 = D7 (Data Line Number 7)
' LCD configurado a 4 bits
dim Conteo as char[3] ' Esta variable contendrá el valor
' del conteo actual pero en la forma de caracteres
dim Conta as byte
main:
'******************************************************************************
' INICIALIZACIÓN DE PUERTOS Y PERIFÉRICOS
'******************************************************************************
TRISB = 0 'Configura PORTB todo como salida
TRISA = 3 'RA0 Y RA1 COMO ENTRADAS
Lcd_Config(PORTB,7,6,5,4,PORTB,1,2,3)'Configura PORTB para LCD
Lcd_Out(1,1,"Num Vueltas") ' Escribe mensaje en fila 1 columna 1
Lcd_Out(2,1,"Contador 0_999") ' Escribe mensaje fila 2 columna7
Lcd_Cmd(Lcd_Cursor_Off) ' Apaga el cursor
conta=0 'Inicio Cuenta a cero
checo:
if PORTA.1=0 then 'Si el boton esta presionado=0
delay_ms(100) 'Espera 100 ms para estabilizar
Conta=0 'Resetea entonces el contador
else
if PORTA.0=1 then 'Mira boton libre
delay_ms(100) 'Espera 100ms para evitar rebote mecanico
if PORTA.0=0 then 'Presiona boton, activo en flanco de bajada
Conta=conta+1 'Incrementa cuenta en "1"
if Conta=999 then 'SI conta es 999 vuelve a empezar
Conta=0 'Conta vale 0 inicio de conteo
end if
end if
end if
end if
'******************************************************************************
' Esta parte transforma el dato "conta" a cadena de caracteres
'******************************************************************************
ByteToStr(conta,CONTEO) 'Transforma conta en "conteo" a cadena de caracteres
Lcd_Out(1,5,CONTEO) ' Escribe el valor en forma de texto de la
' variable CONTEO
Delay_ms(100) ' Espera un momento para continuar con el
' conteo
goto checo 'Vuelvo a mirar estado de botones
end.
Un saludo a todos