Hola amigos soy nuevo en el mundo de programacion de PICs uso MPLAB IDE y C18 para crear mis programas en C lo que sucede es que cuando le doy Build All a mi codigo me aparece esto y no Build succeeded que es lo que deberia aparecer cuando ya se ha generado el .hex
este es mi codigo
este es mi codigo
Código:
/*Contador ascendente, el limite esta dado por dos digitos, entrada por teclado y salida por lcd.
Puerto B para el LCD y puerto D para el teclado*/
/******************************librerias******************************/
#include<p18f4550.h> //libreria del pic
#include<xlcd.h> //libreria lcd
#include<delays.h> //libreria de retardos
/******************************Funciones******************************/
void DelayFor18TCY(){ //retardo de 20uS establecido por el lcd
Delay10TCYx(2); //retardo por libreria
}
void DelayPORXLCD(){ //retardo de 15mS establecido por el lcd
Delay1KTCYx(15); //retardo por libreria --> 1000*15*4/4000000=15mS
}
void DelayXLCD(){ //retardo de 5mS establecido por el lcd
Delay1KTCYx(5); //retardo por libreria
}
/***********************Declaracion de funciones**********************/
int teclado(void); //funcion teclado retorna un entero , sin argumentos de entrada
void ON(void); //funcion ON sin retorno, sin argumentos de entrada, sirve para habilitar el teclado
void main(){ //funcion principal
int cont,d,u,a=0; //cont-->contador, d-->decenas, c-->centenas, a-->auxiliar
ADCON1=15; //conver entradas/salidas analogas a digitales
TRISD=0x0F; //configuracion del puerto D para el teclado 0b00001111 4 entradas(bits mas significativos) 4 salidas(bits menos signitficativos), nota: el puerto B para el LCD no se necesita configurar ya que la libreria de este tiene predefinido el puerto B.
ON(); //llamado a funcion habilita el uso del LCD
OpenXLCD(FOUR_BIT & LINES_5x7); //iniciliazacion del LCD a 4 bits y matriz de caracteres de 5x7
PutrsXLCD("Oprima 2 digitos"); // visualiza "Oprima 2 digitos"
d=teclado();
SetDDRamAddr(0x45);
WriteDataXLCD(0x30+d);
Delay10KTCYx(150);
u=teclado();
WriteDataXLCD(0x30+u);
Delay10KTCYx(150);
a= d*10 + u;
WritecmdXLCD(1);
PutrsXLCD("Valor de conteo");
for(cont=0;cont<a;cont++){
SetDDRamAdd(0x45);
d=cont/10;//?
u=cont%10;//?
WriteDataXLCD(0x30+d);
WriteDataXLCD(0x30+u);
Delay10KTCYx(100);
}
}
/***********************Definicion de funciones***********************/
int teclado(){ //definicion de funcion teclado
while(1){ //ciclo infinito
PORTD=0x10; //0b00010000
if(PORTD==0x11) return 0; //retorna 0 //0x11 depende de la conexion del teclado al pic
else if(PORTD=0x12) return 1; //retorna 1 //0x12 depende de la conexion del teclado al pic
else if(PORTD=0x14) return 2; //retorna 2 //0x14 depende de la conexion del teclado al pic
else if(PORTD=0x18) return 3; //retorna 3 //0x18 depende de la conexion del teclado al pic
PORTD=0x20; //0b00100000
if(PORTD==0x21) return 4; //retorna 4 //0x21 depende de la conexion del teclado al pic
else if(PORTD=0x22) return 5; //retorna 5 //0x22 depende de la conexion del teclado al pic
else if(PORTD=0x24) return 6; //retorna 6 //0x24 depende de la conexion del teclado al pic
else if(PORTD=0x28) return 7; //retorna 7 //0x28 depende de la conexion del teclado al pic
PORTD=0x40; //0b01000000
if(PORTD==0x41) return 8; //retorna 8 //0x41 depende de la conexion del teclado al pic
else if(PORTD=0x42) return 9; //retorna 9 //0x42 depende de la conexion del teclado al pic
}
}
void ON(){ //definicion de funcion ON
while(1){ //ciclo infinito
PORTD=0x80; //se pone 1 en la columna de la tecla F(ON)
if(PORTD==0x88) return; //si hay 1 en la columna de la tecla F(ON) es porque se oprimio entonces retorna al flujo del programa principal
}
}
Adjuntos
Última edición por un moderador: