Error al compilar con PIC C de CCS

Hola,

Estoy iniciandome en la programación de pics en ccs, para ello me han proporcionado el software y hardware necesario.

En principio iba a utilizar el mplab y luego para compilar el programa el pic c compiler, tenia solo el plug in para mplab del pic c compiler pero me han recomendado instalarme el pic c compiler completo. Tengo un programa de ejemplo que simplemente tendría que copiar, compilarlo y que funcionase, pero me da un error al compilarlo.

Hasta ahora lo que he hecho con pics ha sido en lenguaje ensamblador y con el pic 16f84, ahora estoy usando ccs y el pic 18F67J50 en una placa entrenadora: http://www.microingenia.com/electronics/product.php?id_product=3

Este es el programa de ejemplo:

PHP:
[I]#include "config18F67J50Trainer.c"          <-------- ESTO LO PONGO MÁS ABAJO Y 
                                                             <-------   AQUI ES DONDE DA EL ERROR
                                                
#include "usb/usb_bootloader.h"
#include "usb/usb_cdc.h"

void main(void)
{
   PLLEN = 1;
   
   disable_interrupts(GLOBAL);
   disable_interrupts(INT_TIMER0);
   
   setup_timer_0(RTCC_DIV_128);
   set_timer0(18661);
   
   enable_interrupts(GLOBAL); 
   enable_interrupts(INT_TIMER0);
   
   while(TRUE);
}

#int_timer0
void isr_timer0(void)
{
   // Toggle each PIN every second   
   set_timer0(18661);
   
   output_toggle(PIN_A0);
   output_toggle(PIN_A1);
   output_toggle(PIN_A2);
   output_toggle(PIN_A3);
   output_toggle(PIN_A4);
   output_toggle(PIN_A5);
   output_toggle(PIN_B0);
   output_toggle(PIN_B1);
   output_toggle(PIN_B2);
   output_toggle(PIN_B3);
   output_toggle(PIN_B4);
   output_toggle(PIN_B5);
   output_toggle(PIN_B6);
   output_toggle(PIN_B7);
   //output_toggle(PIN_C0);
   output_toggle(PIN_C1);
   output_toggle(PIN_C2);
   output_toggle(PIN_C3);
   output_toggle(PIN_C4);
   output_toggle(PIN_C5);
   output_toggle(PIN_C6);
   output_toggle(PIN_C7);
   output_toggle(PIN_D0);
   output_toggle(PIN_D1);
   output_toggle(PIN_D2);
   output_toggle(PIN_D3);
   output_toggle(PIN_D4);
   output_toggle(PIN_D5);
   output_toggle(PIN_D6);
   output_toggle(PIN_D7);
   output_toggle(PIN_E0);
   output_toggle(PIN_E1);
   output_toggle(PIN_E2);
   output_toggle(PIN_E3);
   output_toggle(PIN_E4);
   output_toggle(PIN_E5);
   output_toggle(PIN_E6);
   output_toggle(PIN_E7);
   output_toggle(PIN_F2);
   output_toggle(PIN_F3);
   output_toggle(PIN_F4);
   output_toggle(PIN_F5);
   output_toggle(PIN_F6);
   output_toggle(PIN_F7);  
   output_toggle(PIN_G0);
   output_toggle(PIN_G1);
   output_toggle(PIN_G2);
   output_toggle(PIN_G3);
   output_toggle(PIN_G4);
}[/I]

Esto es config18F67J50Trainer.c


[I]#include <18F67J50.h>
#fuses HS_PLL,NOWDT,NOXINST,STVREN,NOPROTECT,FCMEN,PLL2,NOCPUDIV,MSSPMSK7,IESO,NODEBUG
#use delay(clock=48000000)

// Enable PLL
#bit PLLEN = 0xf9b.6
[/I]

El error dice unknown keyword in #fuses "HS_PLL"

El compilador no me pregunta el pic a utilizar, cosa que el mplab sí que hace y se supone que el mplab lleva incluida la librería 18F67J50.h (corríjanme si me equivoco) y no sé si el error es debido a que el compilador no tenga acceso a esa librería, no se me ocurre otra cosa, no sé tampoco si hay que decirle al pic c compiler con qué pic estamos trabajando o si no hace falta, y en caso de que haya que decirselo no sé desde que menu se hace.
 
Última edición por un moderador:
Dale un vistazo a esto:
https://www.forosdeelectronica.com/f24/programas-pic-c-compiler-tutorial-21770/

#include <18F67J50.h>
#fuses HS_PLL,NOWDT,NOXINST,STVREN,NOPROTECT,FCMEN,PLL2,NOCPUDIV,MSSPMSK7,IESO,NODEBUG
#use delay(clock=48000000)

// Enable PLL
#bit PLLEN = 0xf9b.6

Esto debe de ir en la cabecera del programa de lo contrario no sabrá con que PIC está trabajando.
El resto de #include o #define deben de ir debajo.
 
Ya lo vi detenidamente y lo curioso es que al parecer el ejemplo esta desactualizado (veo que solo le han cambiado la fecha) por lo que el compilador tiene la razón al decir que #fuses "HS_PLL no existe.

La versión que tengo es 4.093 y el PIC en cuestión tiene estas características:


Como se lo veo no existe "HS_PLL" por lo que tendrás que configurar sus fuses de otra manera.

PD: Utiliza el PIC Wizard.
 
Vaya muchas gracias, no sé como configurarlos pero contactaré con los de la empresa para que lo cambien y lo pongan bien en su web tambien.

Carlos te iba mandar un MP pero el foro no me deja porque no tengo suficientes mensajes, asique te lo dejo aquí a ver si me puedse aclarar mis dudas.

Que me quisiste decir con lo de que usase el PIC Wizard? es que no manejo el programa pero cuando le doy a pic wizard para buscar un archivo en mi pc y busco el archivo .c que es lo que tengo no puedo, solo me deja buscar .pjt y no tengo ningún archivo .pjt.
 
Última edición:
Ya lo vi detenidamente y lo curioso es que al parecer el ejemplo esta desactualizado (veo que solo le han cambiado la fecha) por lo que el compilador tiene la razón al decir que #fuses "HS_PLL no existe.

La versión que tengo es 4.093 y el PIC en cuestión tiene estas características:
..........................
Como se lo veo no existe "HS_PLL" por lo que tendrás que configurar sus fuses de otra manera.
Es un bug de la versión 4.093

En el listado de la 4.104 figura "HS_PLL" y compila sin problemas.
 
Es un bug de la versión 4.093

En el listado de la 4.104 figura "HS_PLL" y compila sin problemas.

OK.. será momento para actualizarme :LOL:

El PIC Wizard es un ayudante para configurar el proyecto y solo es usado la primera vez, pero no es indispensable ya que todo se puede hacer manualmente...



Al usarlo, en la 1ra ventana que aparece te pregunta en donde vas a guardar el nuevo proyecto; luego ya aparece la ventana donde escoges el PIC, le haces todas sus configuraciones y a terminar aparece la hoja del proyecto con el código que ha sido generado por el PIC Wizard.
 
Última edición:
Vale muchas gracias Carlos, estaba intentando abrir un archivo en lugar de crear uno jaja normal que no me funcionase.

Gracias Eduardo, acabo de instalarme esa versión del programa y sí, ya compila perfecto!
 
Hola queridos amigo de este lindo mundo de la electronica soy nuevo en esto y encontre un circuito de un temporizador ciclico (http://www.microcontroladorespic.co...res-pic/temporizador-ciclico/interruptor.html) quise modificar los tiempos pero cuando compilo me saltan errores y no entiendo mucho de esto me puse a leer sobre el tema pero se me quemaron los papeles alguien me podria ayudar a ver cual es el problema que tiene se los agradeceria muchisimooooooo....

Este es el codigo del programa.

; º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º
; º | | | | | | | | | | | | º
; º _|__|__|__|__|__|__|__|__|__|__|__|_ _\\|//_ Jose º
; º | | (| o-o |) Martinez º
; º | www.microcontroladorespic.com | \ (_) / Ortiz º
; º |) | \_"_/ º
; º | TEMPORIZADOR CICLICO PROGRAMABLE | __|U|__ º
; º | | / \ º
; º |_ __ __ __ __ __ __ __ __ __ __ __ _| / /| |\ \ º
; º | | | | | | | | | | | | / / | | \ \ º
; º | | | | | | | | | | | | "" |___| "" º
; º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º

;****************************** CONFIGURACION ****************************
;CP_OFF - Codigo de proteccion programa desactivado
;CPD_OFF - Codigo de proteccion eeprom desactivado
;WDT_OFF - Perro guardian desconectado
;BODEN_OFF - No actua el reset por bajada de tension
;PWRTE_OFF - Reset de inicio desconectado
;MCLRE_OFF - Reset externo desconectado, sino pierdo una entrada A5
;XT_OSC - oscilador exterior
;INTOSC_OSC_NOCLKOUT - funcionamiento con reloj interno
;LVP_OFF - programacion de bajo voltage desconectado,
; para activar el pin 4 de RB

__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_ON & _INTRC_OSC_NOCLKOUT & _PWRTE_ON

LIST P=16F629 ;Procesador utilizado.
INCLUDE <P12F629.INC>

;***************************** MAPA DE MEMORIA ****************************

CBLOCK 0x20 ;Inicio de la memoria de datos
PDel0 ;utilizado para los retardos
PDel1 ;utilizado para los retardos
tiempo_ON ;utilizado para los retardos
tiempo_OFF ;utilizado para los retardos
ENDC

;****************************** ZONA DE DATOS ****************************

#define Led GPIO,5 ;puerto utilizado pala la conexion del led
#define Rele GPIO,4 ;puerto utilizado pala la conexion del Rele
#define Micros GPIO ;Entradas para microinterruptores GP0,1,2,3

#define Banco0 bcf STATUS,RP0
#define Banco1 bsf STATUS,RP0

;******************************************************************************
;********************************** INICIO **********************************
;******************************************************************************

reset org 0x00 ;El programa comienza en la dirección 0.
goto inicio ;pasa a la posicion de inicio para evitar la int.
org 0x04 ;aqui se atienden las interupciones

inicio Banco1

call 0x3ff ; CALIBRACION DEL
movwf OSCCAL ; OSCILADOR INTERNO

movlw b'001111' ;0=salida, 1=entrada
movwf TRISIO ;lo tranfiere al puerto

; instrucciones para habilitar las resistencias internas
movlw b'00001111' ;habilita pull-ups
movwf OPTION_REG
movlw b'00000111' ;para GP0,GP1,GP2
movwf WPU

Banco0

;instrucciones para poder utilizar GP0 y GP1 como entradas
movlw b'00000111' ; desactiva el comparador
movwf CMCON ; selecciona GPIO en vez de comparador

clrf GPIO ;todas las salidas puestas a 0



;******************************************************************************
;******************************* PRINCIPAL ***********************************
;******************************************************************************
principal

movf Micros,W ;lee el valor de las entradas
andlw b'00001111' ;se queda con los 4 bit de menor peso
addwf PCL,F

tabla goto cero
goto uno
goto dos
goto tres
goto cuatro
goto cinco
goto seis
goto siete
goto ocho
goto nueve
goto diez
goto once
goto doce
goto trece
goto catorce
goto quince

;******************************************************************************
;****************************** CONFIGURACION *******************************
;******************************************************************************

cero call ON_10min ;tiempo de encendido - 100%
goto principal ;miro la posicion de los microinterruptores

uno call ON_9min5 ;tiempo de encendido - 95%
call OFF_0min5 ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

dos call ON_9min ;tiempo de encendido - 90%
call OFF_1min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

tres call ON_8min5 ;tiempo de encendido - 85%
call OFF_1min5 ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

cuatro call ON_8min ;tiempo de encendido - 80%
call OFF_2min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

cinco call ON_7min5 ;tiempo de encendido - 75%
call OFF_2min5 ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

seis call ON_7min ;tiempo de encendido - 70%
call OFF_3min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

siete call ON_6min5 ;tiempo de encendido - 65%
call OFF_3min5 ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

ocho call ON_6min ;tiempo de encendido - 60%
call OFF_4min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

nueve call ON_5min5 ;tiempo de encendido - 55%
call OFF_4min5 ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

diez call ON_5min ;tiempo de encendido - 50%
call OFF_5min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

once call ON_4min5 ;tiempo de encendido - 45%
call OFF_5min5 ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

doce call ON_4min ;tiempo de encendido - 40%
call OFF_6min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

trece call ON_3min ;tiempo de encendido - 30%
call OFF_7min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

catorce call ON_2min ;tiempo de encendido - 20%
call OFF_8min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

quince call ON_1min ;tiempo de encendido - 10%
call OFF_9min ;tiempo de apagado
goto principal ;miro la posicion de los microinterruptores

;******************************************************************************
;*************************** TIEMPOS ON ***************************
;******************************************************************************
ON_10min call ON_30s
ON_9min5 call ON_30s
ON_9min call ON_30s
ON_8min5 call ON_30s
ON_8min call ON_30s
ON_7min5 call ON_30s
ON_7min call ON_30s
ON_6min5 call ON_30s
ON_6min call ON_30s
ON_5min5 call ON_30s
ON_5min call ON_30s
ON_4min5 call ON_30s
ON_4min call ON_30s
ON_3min5 call ON_30s
ON_3min call ON_30s
ON_2min5 call ON_30s
ON_2min call ON_30s
ON_1min5 call ON_30s
ON_1min call ON_30s
ON_0min5 call ON_30s
return ; vuelvo donde se hizo la llamada

;******************************************************************************
;*************************** ON_1min ***************************
;******************************************************************************

ON_30s bsf Rele ;conecta el rele
movlw .30 ;corresponde a 30, para hacer 30 segundos
movwf tiempo_ON

s30_ON call ON_1seg ; Va a esperar 1seg
decfsz tiempo_ON,1 ; comienza a restar. cuando sea 0 salta 1 linea
goto s30_ON ; sigue restando hasta que llege a 0

return ; vuelvo donde se hizo la llamada

;******************************************************************************
;*************************** ON_1seg ***************************
;******************************************************************************

ON_1seg call ON_1s ;repite la rutina siguiente para hacer 1seg.
ON_1s bsf Led ;enciende el led
call DEMORA ;249msg
bsf Led ;enciende el led
call DEMORA ;249msg

return ; vuelvo donde se hizo la llamada

;******************************************************************************
;*************************** TIEMPOS OFF ***************************
;******************************************************************************
OFF_10min call OFF_30s
OFF_9min5 call OFF_30s
OFF_9min call OFF_30s
OFF_8min5 call OFF_30s
OFF_8min call OFF_30s
OFF_7min5 call OFF_30s
OFF_7min call OFF_30s
OFF_6min5 call OFF_30s
OFF_6min call OFF_30s
OFF_5min5 call OFF_30s
OFF_5min call OFF_30s
OFF_4min5 call OFF_30s
OFF_4min call OFF_30s
OFF_3min5 call OFF_30s
OFF_3min call OFF_30s
OFF_2min5 call OFF_30s
OFF_2min call OFF_30s
OFF_1min5 call OFF_30s
OFF_1min call OFF_30s
OFF_0min5 call OFF_30s
return ; vuelvo donde se hizo la llamada

;******************************************************************************
;*************************** OFF_30seg ***************************
;******************************************************************************
OFF_30s bcf Rele ; desconecta el rele
movlw 0x1e ;corresponde a 30, para hacer 30 segundos
movwf tiempo_OFF

s30_OFF call OFF_1seg ; Va a esperar 1seg
decfsz tiempo_OFF,1 ;comienza a restar cuando sea 0 salta 1 linea
goto s30_OFF ; sigue restando hasta que llege a 0

return ; vuelvo donde se hizo la llamada

;******************************************************************************
;*************************** OFF_1min ***************************
;******************************************************************************
OFF_1mi bcf Rele ; desconecta el rele
movlw .60 ;corresponde a 60, para hacer 1 minuto
movwf tiempo_OFF

uno_OFF call OFF_1seg ; Va a esperar 1seg
decfsz tiempo_OFF,1 ;comienza a restar cuando sea 0 salta 1 linea
goto uno_OFF ; sigue restando hasta que llege a 0

return ; vuelvo donde se hizo la llamada

;******************************************************************************
;*************************** OFF_1seg ***************************
;******************************************************************************

OFF_1seg call OFF_1s ;repite la rutina siguiente para hacer 1seg.
OFF_1s bsf Led ;enciende el led
call DEMORA ;249msg
bcf Led ;apaga el led
call DEMORA ;249msg

return ; vuelvo donde se hizo la llamada

;******************************************************************************
;***************** RETARDO 250ms ********************
;******************************************************************************
;-------------------------------------------------------------
; Generado con PDEL ver SP
; Descripcion: Delay 249996 ciclos
;-------------------------------------------------------------
DEMORA movlw .195 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .213 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;----------------------------------------------------------------------------
org 0x3FF ; OSSCAL --------------------
retlw 0x20 ; VALOR DE CALIBRACION --------------------
;----------------------------------------------------------------------------
END

Gracias por su ayuda ya de antemano.

Los errores me saltan en la siguiente parte

inicio Banco1

call 0x3ff ; CALIBRACION DEL
movwf OSCCAL ; OSCILADOR INTERNO

movlw b'001111' ;0=salida, 1=entrada
movwf TRISIO ;lo tranfiere al puerto

; instrucciones para habilitar las resistencias internas
movlw b'00001111' ;habilita pull-ups
movwf OPTION_REG
movlw b'00000111' ;para GP0,GP1,GP2
movwf WPU

Banco0


Espero su ayuda

Un saludo enorme a toda la comunidad
 
es mas importante que publiques el archivo de errores que el compilador te deja,solo mirando ese archivo puedo llegar a saber cual es el error,de otra forma tendría que ponerme a compilarlo en mi pc para poder saber a ciencia cierta cual es el error,quizas solo sea algún problema de sintaxis ,alguna coma,alguna letra etc,etc
saludos
 
Hola el_rey_julien muchisimas gracias por responder ahora no se que le pico lo compilo me tiraba este error y ahora lo pasa de alto

Debug build of project `C:\seg\seg.mcp' started.
Preprocessor symbol `__DEBUG' is defined.
Sun Sep 26 04:35:18 2010
----------------------------------------------------------------------
Make: The target "C:\seg\ciclico.o" is out of date.
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPASMWIN.exe" /q /p12F629 "ciclico.asm" /l"ciclico.lst" /e"ciclico.err" /d__DEBUG=1
Warning[215] C:\SEG\CICLICO.ASM 28 : Processor superseded by command line. Verify processor symbol.
Message[302] C:\SEG\CICLICO.ASM 60 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\SEG\CICLICO.ASM 63 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\SEG\CICLICO.ASM 67 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\SEG\CICLICO.ASM 69 : Register in operand not in bank 0. Ensure that bank bits are correct.
Loaded C:\seg\ciclico.cod.
----------------------------------------------------------------------
Debug build of project `C:\seg\seg.mcp' succeeded.
Preprocessor symbol `__DEBUG' is defined.
Sun Sep 26 04:35:20 2010
----------------------------------------------------------------------
BUILD SUCCEEDED




No entiendo mucho este tema del lenguaje vos no me podrias decir como lo hago para que me funcione cada 10 segundos los intervalos, es decir te explico el programa va contando el tiempo de 30 segundos en 30 segundos y yo quisiera obtener un tiempo en ON= 50 segundos y un tiempo en OFF= 180 minutos y en otra parte ademas que pueda tener ON= 30 segundos y OFF= 60 minutos... he intentado hacerlo pero no me sale jeje a lo mejor vos que lo entendes y andas en esa sintonia podrias decirme que tendria que cambiar y hacerlo pero necesito una ayuda de un guia que entienda je.

No se si lo dije pero el programa de este pic es de un circuito que maneja un temporizador ciclico es decir que repite la configuracion de tiempo en ON y OFF indefinidamente.

Muchas gracias compañero

Abrazo
 
BUILD SUCCEEDED
si el resultado es ese es porque salio bien
Warning[215] C:\SEG\CICLICO.ASM 28 : Processor superseded by command line. Verify processor symbol.
Message[302] C:\SEG\CICLICO.ASM 60 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\SEG\CICLICO.ASM 63 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\SEG\CICLICO.ASM 67 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\SEG\CICLICO.ASM 69 : Register in operand not in bank 0. Ensure that bank bits are correct.
esos no son errores son advertencias ,
C:\SEG\CICLICO.ASM 28 : Processor superseded by command line. Verify processor symbol.
eso te indica que verifiques el compilador,porque estas compilando supón un 16f84 en ves de un 16f628
es configuración en el MPASMWIN,

pd:
ahora te paso una rutina para el programa del pic,eso de 60 minutos es tiempo largo
saludos
 
Última edición:
Bueno gracias me voy a fijar eso de que capaz este configurando la compilacion con los pic distintos.

Vos decis que con esa rutina podre armar los dos tipos de tiempos ON 50 seg y OFF 60 min y el otro de ON 30 seg y OFF 60 min???

Gracias

Saludos
 
Hola compañeros si de ultima no puedo obtener esos tiempos con ese circuito me podrias decir como hago para hacer algun circuito en el cual pueda obtener esos tiempos digamos te comento mejor tengo un aparato que necesito dos automatizaciones por separadas para hacer andar por un lado un motor 50 segundos cada 3 horas repetitivamente y despues necesito hacer andar un ventilador 30 segundos cada 1 hora tambien que cada una hora se repita el ciclo desde ya agradezco al que me pueda ayudar.

Saludos
 
Hola, estoy empezando con los microcontroladores y me ha surgido un problema a ver si alguien me podría hechar una mano. En el ejemplo T5_E1.c del libro " COMPILADOR C CCS y simulador proteus para microcontroladores PIC " cuando compilo me salen los siguientes errores :

Error 12 “ C:\Program Files\PICC\drivers\LCD.C”Line 128(5,9):Undefined identifier
Error 48 “ C:\Program Files\PICC\drivers\LCD.C”Line 128(17,23):Expecting a (
Error 48 “ C:\Program Files\PICC\drivers\LCD.C”Line 129(5,9):Expecting a (
Error 48 “ C:\Program Files\PICC\drivers\LCD.C”Line 129(18,25):Expecting a (
Error 48 “ C:\Program Files\PICC\drivers\LCD.C”Line 129(33,34):Expecting a (
Error 43 “ C:\Program Files\PICC\drivers\LCD.C”Line 129(34,38):Expecting a declaration
6 Errors, 0 Warnings

El programa lo he llegado a compilar y simular en ISIS, pero ahora no sé por qué me dá error. Con otros programas que también utilizan este LCD me pasa lo mismo. Y lo único que hago es copiar la carpeta del CD adjunto al disco E: y desde allí abrirlo.
He desinstalado el compilador PCWHD y lo he vuelto a instalar , pero me sigue ocurriendo lo mismo .

El programa es el siguiente :

#include <16F876.h>
#device adc=10
#FUSES XT,NOWDT
#FUSES
#use delay(clock=4000000)
#include <LCD.C>

void main() {
int16 q;
float p;

setup_adc_ports(AN0); //Canal 0 analógico
setup_adc(ADC_CLOCK_INTERNAL); //Fuente de reloj RC

lcd_init();

for (;;) {
set_adc_channel(0); //Habilitación canal0
delay_us(20);
q = read_adc(); //Lectura canal0
p = 5.0 * q / 1024.0; //Conversión a tensión

printf(lcd_putc, "\fADC = %4ld", q);
printf(lcd_putc, "\nVoltage = %01.2fV", p);

delay_ms(100);
}
}


Gracias ...
 
Yo tambien pase un mal trago con ese ejemplito del libro, hasta que dandole vueltas descubri que era una tonteria. Si te fijas, la libreria lcd.c esta configurada para que la salida al lcd sea, por defecto, por el puerto d, y si miras el esquematico que te da el libro... sorpresa!! el pic16f876 solo tiene hasta el puerto c. Es decir, tienes que cambiar el archivo lcd.c para que la salida sea por el puerto b. Te copio y pego el codigo del archivo lcd.c desde la linea 38 hasta la 58, y si te funciona ya me invitaras a una cervecita en "El castillo", jejeje

// Un-comment the following define to use port B
#define use_portb_lcd TRUE


struct lcd_pin_map { // This structure is overlayed
BOOLEAN enable; // on to an I/O port to gain
BOOLEAN rs; // access to the LCD pins.
BOOLEAN rw; // The bits are allocated from
BOOLEAN unused; // low order up. ENABLE will
int data : 4; // be pin B0.
} lcd;


#if defined use_portb_lcd
#locate lcd = getenv("sfr:pORTB") // This puts the entire structure over the port
#ifdef __pch__
#locate lcd = 0xf81
#else
#locate lcd = 6
#endif
#define set_tris_lcd(x) set_tris_b(x)
 
hola estoy iniciando en esto de programar pic's y estoy viendo tutoriales por youtube y todos los que e hecho me marcan error a la hora de compilar me puede decir alguien cual es el problema
gracias
 

Adjuntos

  • Sin título.png
    Sin título.png
    35.6 KB · Visitas: 19
  • Sin título1.png
    Sin título1.png
    35.6 KB · Visitas: 17
Bien, cuando comienzas un proyecto lo aces dandole a picwizard??
si es asi en la casilla de i/o pins ahi te pondra pin_a, pin_a2.... etc, y podrasponerle como entrada salida etc, pues en vede pin_a1 lo cambias por LED1, o si no en tu programa en vede poner LED1 pon pin_XX
donde la primera X es el puerto y la segunda X el numero de pin
 
Atrás
Arriba