(void)funcion_uno(void){
switch (a){
case 0:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
case 1:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
case 2:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
case 3:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
case 4:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
case 5:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
case 6:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
}}
(void)segunda funcion(void){
switch (b){
case 0:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
case 1:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
case 2:lcd_gotoxy(1,2)
printf(lcd_putc"");
lcd_gotoxy(1,3)
printf(lcd_putc"");
}}(void)funcion_uno(void){
switch (a){
case 0:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
case 1:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
case 2:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
case 3:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
case 4:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
case 5:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
case 6:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
}}
(void)segunda funcion(void){
switch (b){
case 0:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
case 1:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
case 2:lcd_gotoxy(1,2)
lcd_putc("");
lcd_gotoxy(1,3)
lcd_putc("");
}}con esto el error se avia hido y me dejo compilar bien.#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>
void main()
{
int16 q;
float p;
setup_adc_ports(AN0);
lcd_init();
while(1)
{
set_adc_channel(0);
delay_us(10);
q = read_adc();
p = 5.0 * q/1024.0;
printf(lcd_putc, "\fADC = %4ld", q);
//Lcd_gotoxy(1,2);
printf(lcd_putc, "\nVoltaje = %01.2fV", p);
//Lcd_gotoxy (1,3);
//Lcd_putc ("otro mensaje");
//Lcd_gotoxy (1,4);
//Lcd_putc ("mensaje ultimo");
delay_ms(1000);
//Lcd_putc ("\f");
}
}struct lcd_pin_map { // This structure is overlayed
BOOLEAN unused1; // on to an I/O port to gain
BOOLEAN unused2; // access to the LCD pins.
BOOLEAN rs; // RB2
BOOLEAN enable; // RB3
int data : 4; // RB4 - RB7
} lcd;
#byte lcd = 6 // This puts the entire structure
// on to port B (at address 6)
#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines
BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
// These bytes need to be sent to the LCD
// to start it up.
// The following are used for setting
// the I/O port direction register.
struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out
struct lcd_pin_map const LCD_READ = {0,0,0,0,15}; // For read mode data pins are in
BYTE lcdline;
BYTE lcd_read_byte() {
BYTE low,high;
set_tris_b(LCD_READ);
//lcd.rw = 1;
delay_cycles(1);
lcd.enable = 1;
delay_cycles(1);
high = lcd.data;
lcd.enable = 0;
delay_cycles(1);
lcd.enable = 1;
delay_us(1);
low = lcd.data;
lcd.enable = 0;
set_tris_b(LCD_WRITE);
return( (high<<4) | low);
}
void lcd_send_nibble( BYTE n ) {
lcd.data = n;
delay_cycles(1);
lcd.enable = 1;
delay_us(2);
lcd.enable = 0;
}
void lcd_send_byte( BYTE address, BYTE n ) {
lcd.rs = 0;
while ( bit_test(lcd_read_byte(),7) ) ;
lcd.rs = address;
delay_cycles(1);
//lcd.rw = 0;
delay_cycles(1);
lcd.enable = 0;
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}
void lcd_init() {
BYTE i;
set_tris_b(LCD_WRITE);
lcd.rs = 0;
//lcd.rw = 0;
lcd.enable = 0;
delay_ms(15);
for(i=1;i<=3;++i) {
lcd_send_nibble(3);
delay_ms(5);
}
lcd_send_nibble(2);
for(i=0;i<=3;++i)
lcd_send_byte(0, LCD_INIT_STRING[i]);
}
void lcd_gotoxy( BYTE x, BYTE y) {
BYTE address;
switch(y) {
case 1 : address=0x80;break;
case 2 : address=0xc0;break;
case 3 : address=0x94;break;
case 4 : address=0xd4;break;
}
address+=x-1;
lcd_send_byte(0,address);
}
void lcd_putc( char c) {
switch (c) {
case '\f' : lcd_send_byte(0,1);
lcdline=1;
delay_ms(2);
break;
case '\n' : lcd_gotoxy(1,++lcdline); break;
case '\b' : lcd_send_byte(0,0x10); break;
default : lcd_send_byte(1,c); break;
}
}
char lcd_getc( BYTE x, BYTE y) {
char value;
lcd_gotoxy(x,y);
lcd.rs=1;
value = lcd_read_byte();
lcd.rs=0;
return(value);
}#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>
void main()
{
int16 q;
float p;
setup_adc_ports(AN0);
lcd_init();
while(1)
{
Lcd_putc ("primer mensaje");
Lcd_gotoxy(1,2);
Lcd_putc ("segundo mensaje");
Lcd_gotoxy (1,3);
Lcd_putc ("otro mensaje");
Lcd_gotoxy (1,4);
Lcd_putc ("mensaje ultimo");
delay_ms(1000);
Lcd_putc ("\f");
}
}
printf(lcd_putc,"primer mensaje");#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>
void main()
{
int16 q;
float p;
setup_adc_ports(AN0);
lcd_init();
while(1)
{
set_adc_channel(0);
delay_us(10);
q = read_adc();
p = 5.0 * q/1024.0;
printf(lcd_putc, "Primer mensaje");
delay_ms(1000);
Lcd_putc ("\f");
}
}#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>
void main()
{
int16 q;
float p;
setup_adc_ports(AN0);
lcd_init();
while(1)
{
set_adc_channel(0);
delay_us(10);
q = read_adc();
p = 5.0 * q/1024.0;
printf(lcd_putc, "Primer mensaje\n");
printf(lcd_putc, "Segundo mensaje\n");
printf(lcd_putc, "Tercer mensaje\n");
printf(lcd_putc, "Ultimo mensaje");
delay_ms(1000);
Lcd_putc ("\f");
}
}printf(lcd_putc, "\nVoltaje = %01.2fV", p);#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>
void main()
{
int16 q;
float p;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
lcd_init();
while(1)
{
set_adc_channel(0);
delay_us(10);
q = read_adc();
p = 5.0 * q / 1024.0;
printf(lcd_putc, "\fADC = %4ld", q);
printf(lcd_putc, "\nVoltage = %01.2fV", p);
delay_ms(100);
}
}#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>
void main()
{
int16 q;
float p;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
lcd_init();
while(1)
{
set_adc_channel(0);
delay_us(10);
q = read_adc();
p = 5.0 * q / 1024.0;
printf(lcd_putc, "\fADC = %4ld", q);
printf(lcd_putc, "\nVoltage = %01.2fV", p);
printf(lcd_putc, "\ntercer mensaje");
printf(lcd_putc, "\ncuarto mensaje");
printf("ADC = %4ld", q);
printf("Voltaje = %01.2fv\r", p); // El \r permite cambiar de línea
delay_ms(100);
}
}La librería de CCS no es flexible en eso, puedes buscar otra librería como flex_lcd_4x20. c o algo así que está en el foro de CCS.
Saludos!
Hay un #int_TBE y después el include de la librería :shock: Si estás usando ese código, ahí está el error.
Saludos!