TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: facupic en 10 de Junio de 2010, 16:22:44
-
Hola amigos como estan? :lol: :o :) en un proyecto que estoy haciendo en un pic16f628a, tengo pocos pines para utilizar ya que son necesarias varios pines para otras cosas que luego preguntare. Al proyecto necesito incluir 3 boton con 2 o 3 diferentes funciones cada uno, el diagrama (trucho) seria asi:(para un boton):
inicia el pic
|
declaramos que portb.0 es un pulsador, y boton es una variable del tipo byte
|
comprobamos si rb0 es =1(si lo es pasamos al siguiente paso)
|
si no se preciona esta tecla nuevamente durante 5 segundos boton=1
|
si se preciona antes de esos 5 segundos boton=2
|
volvemos a comprobar
asi seria mas o menos el diagrama de flujo, ahora como podria implementarlo en basic? (utilizo el pic simulator ide)
la otra pregunta es:
Que me aconsejan usar para una pantalla para caracteres pequeños, un display 7 segmentos o un pequeño matriz de led de 3x3.
-
Pues para lo que quieres realizar, ya lo has explicado bien en tu diagrama de flujo, solamnete tienes que escribirlo en lenguaje basic.
Pero al principio con PSI deberias e añadirle las palabras de configuracion, elegir el tipo de micro y la velocidad del cristal.
A partir de ahi, si sabes lenguaje basic solo te queda codificarlo:
definir los puerto como entradas o salida
crear la s variables
testear los pines de entrada
poner las salidas y variables de acuerdo a las condiciones de decision.
Pero escribelo tu y si no te funciona ya se te ira ayudando.
En la ayuda te vienen los comando que se pueden emplearo en la web del PSI puedes verlo tambien.
Fermin
-
inicia el pic
|
declaramos que portb.0 es un pulsador, y boton es una variable del tipo byte
|
comprobamos si rb0 es =1(si lo es pasamos al siguiente paso)
|
si no se preciona esta tecla nuevamente durante 5 segundos boton=1
|
si se preciona antes de esos 5 segundos boton=2
|
volvemos a comprobar
asi seria mas o menos el diagrama de flujo, ahora como podria implementarlo en basic? (utilizo el pic simulator ide)
HOLA:
ANIMO ANIMO
QUE! como va ese codigo
Creo que mejor seria una pantallita LCD
OK
UN SALUDO.
-
Hola, no tengo el PSI pero bueno a ver... salvando las cosas que hay que declarar (que cortas y pegas de cualquier lado) y haciendo la ACLARACION de que hay varias formas de lograr lo unico complicado que veo (el chequeo del boton y el delay)... voy a exponer la mas burda porque es mas simple de entender en un principio, luego cuando ya domines el tema de interrpuciones o las funciones del propio MCU o del PSI, vas a decir... uhhh que codigo feo, es una tonteria... pero bueno... por ahora solo como idea seria algo asi.
gosub configurarpic
principal:
output portb.0
if portb.0=1 then
do
until portb.0=0
for t=0 to 200
if portb.0=1 then
gosub hacer_algo
do
until portb.0=0
endif
delayms 25
next t
else
endif
goto principal
inicia el pic
|
declaramos que portb.0 es un pulsador, y boton es una variable del tipo byte
|
comprobamos si rb0 es =1(si lo es pasamos al siguiente paso)
|
si no se preciona esta tecla nuevamente durante 5 segundos boton=1
|
si se preciona antes de esos 5 segundos boton=2
|
volvemos a comprobar
-
Intente hacer lo que pedias pero me salio una cosa rara :z)
Lo que hace es pasar al siguiente comando, pero se toma una pausa de X tiempo (lo setee en 1 seg en lugar de 5), o sea, se ejecuta la funcion 1, despues del tiempo elejido recien se puede ejecutar el siguiente comando a traves del pulsador, y asi hasta empezar de nuevo, fijate si de esto que hice algo te sirve, al menos pasar de una salida a la otra, la entrada es RB0 y las salidas son RB1, RB2 y RB3
Lo hice bajo PSI, en un 16F876A y a 4Mhz
AllDigital
TRISB = %00000001
PORTB = %00000000
Dim boton As Byte
boton = 0
inicio:
If PORTB.0 = 1 Then Goto botonmas1
Goto inicio
botonmas1:
boton = boton + 1
If boton = 1 Then Goto comando1
If boton = 2 Then Goto comando2
If boton = 3 Then Goto comando3
If boton = 4 Then boton = 0
Goto inicio
comando1:
PORTB = %00000010
WaitMs 1000
Goto inicio
comando2:
PORTB = %00000100
WaitMs 1000
Goto inicio
comando3:
PORTB = %00001000
WaitMs 1000
Goto inicio
End
Algo mas simplificado seria asi:
AllDigital
TRISB = %00000001 'PortB.0 como entrada, el resto como salidas
PORTB = %00000000
Dim boton As Byte
boton = 0
inicio:
If PORTB.0 = 1 Then Goto botonmas1
Goto inicio
botonmas1:
boton = boton + 1
If boton = 4 Then boton = 1
If boton = 1 Then PORTB = %00000010
If boton = 2 Then PORTB = %00000100
If boton = 3 Then PORTB = %00001000
WaitMs 1000
Goto inicio
End
Exitos!