Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

08/08/2011 #1


Input 16F877A en Mikrobasic
Hola, tengo una dunda como hacer un input con un boton, con un pic 16F877A en Mikrobasic. estoy recien empezando en esto de programar pero no logro configurar un boton para prender un led.
el codigo que estoy haciendo es este:

program boton
main:

TRISB = 1 ' set PORTB to be input
TRISD = 0 ' set PORTD como salida
PORTD = 0xFF ' borrar puertoD


if (PORTB.0 = 1) then
PORTD.1 = 0
else
if (PORTB.3 = 1) then
PORTD.2 = 0
end if
end if

end.

alguna ayuda?, se supone que tengo 4 botones en RB0 a RB3 y los leds en RD, no tengo problemas en prender leds, logre hacer varios codigos con encender los leds, pero me complican los botones.
Saludos
09/08/2011 #2


alguna ayuda , es lo que me tiene mas complicado por ahora.
Saludos
09/08/2011 #3


Hola jotomas, si quieres poner todo el puerto B como entrada,trisb debe ser 255
09/08/2011 #4


Hola, gracias por la respuesta, intento con que me dijiste pero sigue sin funcionar =/
Saludos
09/08/2011 #5


Creo que lo que necesitas es introducir tu programa en un bucle y por alli ponerle un retardo
aqui te pasoun ejemplo, lo que hace es simplemente reflejar el estado del puerto b0 en el puerto d1


program unit4


main:

TRISB = 0xff ' set PORTB to be input
portb=0
TRISD = 0 ' set PORTD como salida
PORTD = 0x00 ' borrar puertoD

while true
if (PORTB.0 = 1) then
PORTD.1 = 1
else
PORTD.1 = 0
end if
wend
end.
09/08/2011 #6


:(, gracias por la respuesta, pero sigue sin funcionar el pic.
Saludos
10/08/2011 #7


alguna otra ayuda, porfavor.
Saludos
10/08/2011 #8

Avatar de dannyy

nose si te pueda ayudar de mucho
pero yo talvez tenga esa respuesta.
yo trabajo con el proton
pero son casi el mismo lenguaje lo cual es el "basic"
ya aver
te doy un ejemplo
IF X & 1 = 0 THEN
A = 0
B = 1
ELSE
A = 1
ENDIF


IF X = 10 THEN
HIGH LED1
ELSEIF X = 20 THEN
HIGH LED2
ELSE
HIGH LED3
ENDIF




y ahora tu pusiste asi:
if (PORTB.0 = 1) then
PORTD.1 = 0
else
if (PORTB.3 = 1) then
PORTD.2 = 0
end if
end if

si vas a poner un else deberías de ponerlo asi:
IF .... THEN
.........
ELSEIF .... THEN
..........
ELSEIF .... THEN
..........
ELSE
.......
ENDIF

fijate que al ultimo se pone el else solo
ahora otra forma de poner else:
IF .... THEN
..........
ELSE
.......
ENDIF
ahora fijate q como es el ultimo else entopnces no va acompañado del IF
aora tu problema es q pusiste un ELSE y luego un IF THEN
nose si me dejo explicar pero esa es tu falla
revisa los ejemplos
y no dudes en preguntar alguna duda si lo tuvieras
12/08/2011 #9


bueno, mas que nada lo unico que quiero es poder prender un led con un boton. y nisiquiera el siguiente codigo me funciona

program boton
main:

TRISB = 0xff ' set PORTB to be input

TRISD = 0 ' set PORTD como salida
PORTD = 0xFF ' borrar puertoD

while true
if (PORTB.0 = 1 ) then
delay_ms(500)
PORTD.1 = 0

end if
wend

end.

Saludos

este es el esquema con el que estoy trabajando
Archivos Adjuntos
Tipo de Archivo: pdf PIC16F877A mini Kit sch.pdf (50,4 KB (Kilobytes), 17 visitas)
13/08/2011 #10

Avatar de dannyy

primero que nada pon que pic vas a usar
luego el crystal
despues pon esto


TRISB = 0xff ' set PORTB to be input

TRISD = 0 ' set PORTD como salida

bucle
if (PORTB.0 = 1 ) then
PORTD.1 = 0
else
PORTD.1 = 1
end if
goto bucle
end

pero si no te funciona te recomendaria que uses el picbasik pro
despues siguas con el proton y por ultimo con el microbasik
porque tu no vas a empezar desde lo dificil

primero empieza desde lo mas facil y llega hasta lo dificil

esa es mi recomendacion
yo ahora estoy en proton
y despues voy a manejar el microbasik

asi que no te puedo ser de mucha utilidad pero si funciona eso que te puse entonces a buena hora
pero si no, te recomiendo que pases al pic basik pro con el micricode
si quieres te mando un manual buenisimo del pic basik pro como para que comienses
pero dejame buscarlo lo encuentro y te lo envio
Saludos!
24/08/2011 #11


te falta declarar la frecuencia del cristal, si es que usas oscilador interno o no, y tambien tenes que poner las salidas/entradas como digitales. busca ANSEL y OSCCON en la hoja de datos
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.