Autor Tema: Necesito ayuda con este codigo en C  (Leído 170 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kevinNiler

  • PIC10
  • *
  • Mensajes: 1
Necesito ayuda con este codigo en C
« en: 29 de Mayo de 2020, 22:47:08 »
Lo que pasa es que estoy usando el microcontrolador 16f877 en proteus pero antes necesito compilar mi codigo en mplab HITECH PICC Toolsuite PIC COMPILER (PICC.EXE)  y me sale este error
ERROR
--------------------------------------------
Executing: "C:\Program Files (x86)\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -C -E"16F877.cce" "16F877.c" -O"16F877.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F877
BUILD FAILED: Fri May 29 20:28:49 2020
--------------------------------------------
EL CODIGO ES EL SIGUIENTE

//programa principal
#include"lcdlibrary.h"
#include"pic1687x.h"
#include"stdio.h"
#include"string.h"
#include"usart.h"
#include"time.h"

CHAR number[MAX_DISPLAY_CHAR+1];
CHAR len[11] = {'0','1','2','3','4','5','6','7','8','9'};
VOID limpia_buf(CHAR *buf);
VOID calc_display(CHAR *buf);
VOID calculate();
static void interrupt atencion_interrupciones(void); // La función de atenció a las interrupciones
VOID serie(char con);
INT uni=0;
INT dec=0;
INT cent=0;
INT contador=0;
unsigned char input;

VOID main()
{
INT i=0;

T0IE = 1; //Declaraciones de las interrupciones
T0CS = 1;
T0SE = 1;
TMR0 = 0xFF;
GIE = 1;
for(i=0;i<=12000;i++)
{}
lcd_init();
for(;;)
{
if(contador == 1)
{
serie('X');
Contador_piezas(len[cent],len[dec],len[uni]);
pause(5000);
contador=0;
}
if(PORTC == 0xA0)
{
calculate();
}
}
}
static void interrupt atencion_interrupciones(void)
{
if(T0IF)
{
if((uni<10) && (dec<10) && (cent<10))
{
uni++;
}
if(uni==9 && dec<10)
{
uni=0;
dec++;
}
if((dec==9) && (cent<10))
{
uni++;
dec=0;
cent++;
}
if((uni==9) && (dec==9) && (cent==9))
{
uni=0;
dec=0;
cent=0;
}
/*Contador_piezas(len[cent],len[dec],len[uni]); pause(5000);*/
contador=contador +1;
}
T0IF = 0;
TMR0 = 0xFF;
}
VOID calculate()
{
CHAR key;
INT8 pos;
pos = 0;
while(pos<4)
{
key = calc_getkey();
if((calc_testkey(key)) && (PORTC!=0x10))//CAMBIO C POR D
{
if(pos != MAX_DISPLAY_CHAR - 6)
{
number[pos++] = key;
number[pos] = 0;
calc_display(number);
mensajes(number);
pause(2000);
}
}
}
PORTC=0x10;//CAMBIO C POR D
pos=0;
pause(5000);//super inportante para que me escriba array
}
VOID Contador_piezas(CHAR uni,CHAR dec, CHAR cent)
{
pause(5000);
clearscreen();
wrdata(uni);
pause(2000);
wrdata(dec);
pause(2000);
wrdata(cent);
lcd_init();
pause(2000);
}
VOID mensajes(CHAR *buf)
{
//**************************************************************
**********************
//*******************AVERIA*************************************
**********************
//**************************************************************
**********************
if((buf[0] == '1') && (buf[1] == '0') && (buf[2] == '0') && (buf[3] == 'A'))
{
CHAR cod[] = "Av.";
calc_display(cod);
serie("\n");
serie('A');
limpia_buf(buf);
}
if((buf[0] == '1') && (buf[1]=='0') && (buf [2] == '1') && (buf [3] == 'A'))
{
CHAR cod[8] = "ATASCOS";
calc_display(cod);
serie('B');
limpia_buf(buf);
}
//**************************************************************
**********************
//*******************CAMBIOS************************************
***********************
//**************************************************************
**********************
if((buf[0] == '2') && (buf[1] == '0') && (buf[2] == '0') && (buf[3] == 'B'))
{
CHAR cod[14] = "CAMBIO REFER.";
calc_display(cod);
serie('C');
limpia_buf(buf);
}
if((buf[0] == '2') && (buf[1]=='0') && (buf [2] == '1') && (buf [3] == 'B'))
{
CHAR cod[10] = "ETALONADO";
calc_display(cod);
serie('D');
limpia_buf(buf);
}
//********************************************************************
************
//********************************************************************
***************
if((buf[0] == '3') && (buf[1]=='0') && (buf [2] == '1') && (buf [3] == 'C'))
{
CHAR cod[9] = "FALTA MAT";
calc_display(cod);
serie('E');
limpia_buf(buf);
}
if((buf[0] == '3') && (buf[1]=='0') && (buf [2] == '2') && (buf [3] == 'C'))
{
CHAR cod[12] = "FALTA ASIST.";
calc_display(cod);
serie('F');
limpia_buf(buf);
}
if((buf[0] == '3') && (buf[1]=='0') && (buf [2] == '3') && (buf [3] == 'C'))
{
CHAR cod[14] = "FALTA PERSONAL";
calc_display(cod);
serie('P');
limpia_buf(buf);
}
if((buf[0] == '4') && (buf[1]=='0') && (buf [2] == '0') && (buf [3] == 'D'))
{
CHAR cod[14] = "PARADA CALIDAD";
calc_display(cod);
serie('N');
limpia_buf(buf);
}
if((buf[0] == '5') && (buf[1]=='0') && (buf [2] == '1') && (buf [3] == 'E'))
{
CHAR cod[6] = "AJUSTE";
calc_display(cod);
serie('X');
limpia_buf(buf);
}
if((buf[0] == '5') && (buf[1]=='0') && (buf [2] == '5') && (buf [3] == 'E'))
{
CHAR cod[8] = "DESCANSO";
calc_display(cod);
serie('Ñ');
limpia_buf(buf);
}
if((buf[0] == '5') && (buf[1]=='0') && (buf [2] == '7') && (buf [3] == 'E'))
{
CHAR cod[9] = "BOCADILLO";
calc_display(cod);
serie('G'); limpia_buf(buf);
}
//********************************************************************
**************************
//*********************OPERARIOS**************************************
***************************
// if((buf[0] == '0') && (buf[1]=='0') && (buf [2]== '1') && (buf [3] == 'F'))
// {
// CHAR cod[31] = "JAVIER";
// calc_display(cod);
// limpia_buf(buf);
// }
// if((buf[0] == '0') && (buf[1]=='0') && (buf [2]== '2') && (buf [3] == 'F'))
// {
// CHAR cod[31] = "CARLES";
// calc_display(cod);
// limpia_buf(buf);
// }
}
VOID limpia_buf(CHAR *buf)
{
INT i=0; for(i=0;i<=MAX_DISPLAY_CHAR;i++)
{ buf=' ';}
}
BOOL calc_testkey(CHAR key)
{
if((key >= '0') && (key <= 'F'))
return TRUE;
else
return FALSE;
}
CHAR calc_getkey(VOID)
{
CHAR mykey;
while((mykey = keypadread()) == 0x00);
return mykey;
}
VOID calc_display(CHAR *buf)
{
INT8 i; clearscreen();
for(i=0; buf != 0; i++)
{
wrdata(buf);
}
}
VOID pause(INT num)
{
while(num--) {}
}
VOID serie(char con)
{
init_comms();
input = con;
putch(input);
pause(1000);
ult_comms();
}

FUE SACADO DE UN TRABAJO "Control productivo basado en micro controladores para la industria."
Aqui el link del trabajo: https://upcommons.upc.edu/bitstream/handle/2099.1/3760/54360-1.pdf?sequence=1&isAllowed=y
Si alguien tuviera el proyecto no me vendría mal que me lo compartieran :D

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7749
Re:Necesito ayuda con este codigo en C
« Respuesta #1 en: 29 de Mayo de 2020, 23:22:52 »
Pero no mostras cual es el error, solo decis que la compilacion fallo, pero usualmente te indica donde.


Y:

Citar
HITECH PICC Toolsuite PIC COMPILER (PICC.EXE)

Es tan viejo que no tiene ni sentido ponerse a renegar... intenta portarlo a una version mas nueva como XC8. Y tambien tenes varias librerias agregadas que no estan en el codigo y posiblemente puedan tener errores.
« Última modificación: 29 de Mayo de 2020, 23:26:08 por KILLERJC »