TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: marcelo2112 en 19 de Agosto de 2010, 11:16:35
-
Hola, estoy tratando de agarrarle la mano a esto de la programacion, aclaro que tengo minimos conocimientos de lo que estoy haciendo.
Quiero prender 4 led secuencialmente, la secuencia tendria que estar programada por el estado de los botones conectadoas de ra0 a 3.
Lo que no se como hacer para que reconozca que cambio el estado de un pulsador y ejecute la rutina correspondiente.
El programa:
p var byte
PORTA = 0
TRISA = %00001111 ;'Puerto A0,A1,A2,A3 como entradas, resto salidas
TRISB = %00000000 ;' PuertoB todo como salidas
PORTB = %00000000 ;' Apago los LEDs conectados al puertoB
inicio ;' Comienzo un bucle infinito
;Calculo el numero de programa seleccionado con los switches
P = PORTA.0 + PORTA.1*2 + PORTA.2*4 + PORTA.3*8
P = 0000 ;' Programa “0000”
; Enciendo secuenciamente las luces,
;' con una demora de 200 milisegundos entre una y otra
PORTB = %00000001 ;' Enciendo el LED 0
pause 200 ;' Espero 200 milisegundos
PORTB = %00000010 ;' Enciendo el LED 1
pause 200 ;' Espero 200 milisegundos
PORTB = %00000100 ; Enciendo el LED 2
pause 200 ; Espero 200 milisegundos
PORTB = %00001000 ; Enciendo el LED 3
pause 200 ;' Espero 200 milisegundos
P = 0001 ;' Programa “0001”
PORTB = %00001000 ;' Enciendo el LED 4
pause 1000 ;' Espero segundos
goto inicio
end ;'Fin del programa
Espero me puedan explicar que estoy haciendo mal y que tengo que hacer para corregirlo. Gracias a todos.
-
Me marie :mrgreen:
Vos lo que queres hacer es que segun el boton accionado haga una secuencia de encendido diferente?
Aca te dejo algo en proteus, fijate si te sirve :-/
-
Si, asi es.
Algo similar a lo que adjuntaste, lastima que las instrucciones son distintas y el microcode studio no las reconoce.
Gracias.
-
Aaaa... yo todavia estoy empezando en el PSI, una lastima que el basic se divida en varias versiones y no se unifiquen y estandaricen :?
-
una lastima que el basic se divida en varias versiones y no se unifiquen y estandaricen
es que para eso ya existe el C :mrgreen:
Marcelo, no entiendo mucho de basic, pero creo que para que valla a cada programa deberias incluir alguna instrucción que dependiendo del valor que tome P haga cierta rutina y luego retorne al bucle principal.
Algo así como esto:
if P=0 then
goto Programa0
end if
if P=1 then
goto Programa1
end if
Programa0:
PORTB = %00000001 ;' Enciendo el LED 0
pause 200 ;' Espero 200 milisegundos
PORTB = %00000010 ;' Enciendo el LED 1
pause 200 ;' Espero 200 milisegundos
PORTB = %00000100 ; Enciendo el LED 2
pause 200 ; Espero 200 milisegundos
PORTB = %00001000 ; Enciendo el LED 3
pause 200 ;' Espero 200 milisegundos
goto inicio
Similar con los otros programas,
Espero que te sirva.
Te has conseguido algun tutorial del PBP?
Si quieres iniciarte en los microcontroladores yo te recomiendo que lo hagas con ek Assembler, así puedes ver a nivel hardware como trabajan, luego te será mas facil pasarte a otro lengujae si es tu deseo. ;-)