TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: BLACKPIC en 17 de Mayo de 2006, 00:14:56
-
hola:
mi problema es el siguiente quiero hacer que atraves de un teclado cuando oprima (*) me presente un mensaje para hacer otra funcion..
eh lo grado hacerlo con un 16f84 y el teclado, me funciona pero cuando lo intento para un 16f877 no me hacer nada...
quiero saber cual es el herror que estoy cometiendo..
Aqui esta el codigo:
inicio:
OPTION_REG = 0
TRISB = %11111110 'Activo Pull-up, lee o revisas si sepresiona (*)
if portb=$7e then goto mensaje
goto inicio
bye... :-/ :-/
-
Hola.
Yo no he trabajado con teclados pero quisiera saber 2 cosas:
1.- ¿Presionar * te activa 0111 1110 en el Puerto B?
2.- ¿Por qué no lo intentas manual? (sin el teclado, con DIP-switch o interruptores).
-
donde ban las columnas y filas
-
hola yo he usado un programilla de por aqui para un teclado y el f877 y un lcd lo inicializo asi
Define LCD_DREG PORTD
Define LCD_DBIT 4
Define LCD_RSREG PORTA ' REGISTROS DEL LCD
Define LCD_RSBIT 2
Define LCD_EREG PORTA
Define LCD_EBIT 5
Define ADC_BITS 10 ' NUMERO DE BITS DEL RESULTADO
Define ADC_CLOCK 2 ' PONIENDO EN 3 EL RELOJ DE LA FUENTE(3=rc)
Define ADC_SAMPLEUS 15 ' SETEO DEL TIEMPO DE MEDICION
TRISA = 11 ' PUERTO A 3 ENTRADAS (POTS) Y 3 SALIDA
TRISD = 0 ' PUERTO D 4 ENTRADAS (TECLADO) Y 4 SALIDAS (LCD)
TRISE = 0 ' PUERTO E DE SALIDA (LCD)
ADCON1 = 142 ' PUERTO A COMO ADC Y JUSTIFICACION A LA DERECHA
Low PORTA.4 ' APAGO LINEA DEL LCD R/W (W)
Pause 500 ' PAUSA PARA LCD
OPTION_REG.7 = 0 ' Enable PORTB pullups
Col var byte ' COLUMNAS
Row var byte ' FILAS
Key var byte ' TECLAS
y ya lo demas pues depende de como quieras que responda
-
hola:
amigos aqui lesdejo el codigo de lo que mas o menos quiero hacer
este funciona demaravilla en un 16f84 pero no consigo hacerlo con un 16f877..
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 0
DEFINE LCD_LINES 4
TRISA.3=0
i var byte
inicio:
Lcdout $fe, 1, " INICIO "
'-----------------------------------------------
for i=0 to 4
porta.3=1: pause 250: porta.3=0: pause 250
next i: high porta.3
'------------------------------------------------
Mensaje:
Lcdout $fe, 1, " LISTO "
'-----------------------------------------------
pull_up:
OPTION_REG = 0
TRISB = %11111110 'Activo Pull-up y revisas si es (*)
if portb=$7e then goto clave
GoTo pull_up
end
clave:
lcdout $FE,1, " FIN "
gosub pull_up
este es el circuito para el 16f84.
http://img107.imageshack.us/my.php?image=cerradura4cy.jpg
bye... :-/ :-/
-
hola:
amigos ya pude resolver el problema tuve que buscar inf. pero al fin ya este resuelto..
aki les dejo las instruciones que tuve que agregar..
portb = %01111111
OPTION_REG=%01111111
TRISB = %01111111
con solo estas 3 lineas resolvi mi problema y espero que si les pasa a otro no duden en consultar..
bye... :-/ :-/
-
Hola:
Blackpic, si hubieras leido el mensaje de Navaismo, lo hubieras solucionado antes, el te esta dando la respuesta, y de las tres lineas que tu dices que utilizas, cual es el fin de eso???? que hace???
Si solo con poner:
OPTION_REG.7 = 0
tienes activas las pull up del puerto b, quiero que por favor me expliques, que hace esas tres lineas???
-
hola:
bueno amigo lordlafebre te cuento que tambien de esta manera ya havia resolvido el porb.
aki dejo el codigo que hice...
DEFINE LCD_DREG PORTC
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTC
DEFINE LCD_EBIT 4
DEFINE LCD_LINES 4
define OSC 4
PORTB = %01111111
TRISC.6=0
p var byte
cont var byte
inicio:
Lcdout $fe, 1, " INICIO "
'-----------------------------------------------
for p=0 to 4
PORTC.6=1: pause 250: PORTC.6=0: pause 250
next p: high PORTC.6
'------------------------------------------------
Mensaje:
Lcdout $fe, 1, " LISTO "
'----------------------------------------------
pull_up:
OPTION_REG.7 = 0
TRISB = %01111111 'Activo Pull-up y revisas si es (*)
if portb=$7e then goto clave
GoTo pull_up
end
clave:
lcdout $FE,1, " FIN "
gosub pull_up
te cuento que respecto a las 3 lineas que puse primero el me funciono de maravilla
despues le hice algunos cambios y me quedo de esta manera..
y poniendo OPTION_REG.7=0 no solo con esto se soluciona el problema tenia que al principio especifical las entranas y salidas de port-b por eso puse TRISB=%011111111 y PORTB=%01111111... con esto si me funciono...
bye... :-/ :-/
-
Hola:
para mi esto esta demas:
PORTB=%01111111
Ademas utilizas eso antes de configurar los pines del Puerto, por lo que no le veo util.
-
hola:
amigo lord no esta linea no esta demas. pienso que si comfiguro trisb como salida no funcionan todos los puerto pero si le pongo portb en modo de salida ahy si funciona todo bien...
por eso si hago trisb=%01111111 estoy poniendo los bit en entrada menos el bit7 y para completar le agrego portb=%01111111 y de esta manera me funciono...
probe quitandole el portb=%01111111 y no me funciona...
bye...
-
Hola:
me parece raro, a lo mejor es algo que desconozco.