bueeeno pues, reportando el codigo que tengo hasta ahora
el anterior post, yo dije que tenía que configurar las direcciones de los puertos para poder utilizar el termino "PORTA", pues lo hice, el error dejo de estar en esa linea, pero luego paso a otro error, ahora con la sentencia CMCON, tambien le di la direccion de memoria, supuestamente es un registro
mm no se.
el error dejo de estar en esa parte, luego paso a la sentencia "status" y pues ya no mas
, ese código ya me lleno de piedritas.
Regrese al libro en el cual me estoy basando (Compilador CCS y sim. proteus para PIC, 2da edicion), por sierto, buen libro. Lo releí, encontre otra forma de configurar los puertos, bueno, algo similar a lo que se tenia en ASM, y es que puse lineas que permiten definir las direcciones de memoria de los puertos:
#byte TRISA = 0x85
#byte PORTA = 0x05
y luego el testeo de los puertos sería diferente, pues la configuracion de los puertos tendría que hacerse bit a bit y no con la linea siguiente:
set_tris_a(0b00100111);
sino con estas lineas de aca:
bit_set(TRISA,2); //A2 como entrada
bit_clear(TRISA,3); //A3 como salida
bueno, con estas líneas logre hacer que se prenda el vendito led
, pero hay algunas cosas que no entiendo:
- las líneas anteriores me permiten configurar cada bit del puerto??, es decir, tendria otras líneas similares para los otros bits?
- despues de cambiar a todas esas líneas, pude detectar que el tiempo de retardo que le puse al lcd, ello para que se vea el mensaje que envía, no permitia que corra bien el programa, osea, ese retardo hacia que no detectase a tiempo el pulso que ingresa al bit correspondiente (RA2), quitando el retardo, todo marcha supuestamente normal, "supuestamente
", por que ahora se presentaron problemas con el LCD, que todo el rato esta parpadeando sin mostrar bien el mensaje. ¿¿Cómo puedo arreglar ese error??
espero no cansar demasiado al apreciado lector, jeje
aqui el nuevo código:
#include <16f628a.h>
#fuses HS, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT, NOMCLR, NOLVP, NOCPD
#use delay (clock=4000000)
#include <LCD2x16.c>
#byte TRISA = 0x85
#byte PORTA = 0x05
#zero_ram
void main()
{
bit_set(TRISA,2); //A2 como entrada
bit_clear(TRISA,3); //A3 como salida
lcd_init();
while (true)
{
lcd_putc("\f");
printf(lcd_putc,"\f prueva lcd");
//delay_ms(2000); aqui se pone como comentario y va de maravilla el led
if (bit_test(PORTA,2)== 1)
{
bit_set(PORTA,3);
}else
bit_clear(PORTA,3);
}
}
muchas gracias