i have succesfully upload hex file in pic18f4455 from Hid bootloader.exe but now i have incresed my code and found some error
when i complie(Routine exceeds pages boundried 4096 ) and also in valid org 4104 here is code plz help me to complie it fro hid bootloader
Code: Select all
////////////////////PORT(RELAY) DEFINATION//////////////////
#define EXT_USB PORTB.F0 // External usb
#define FANSW PORTB.F1 // Printer
#define HUBSW PORTB.F2 // Hub swith
#define DC_C PORTB.F4 // FAN\DC-DC swith
#define MDM PORTB.F3 // Modem switch swith
#define BARSW PORTD.F5 // SIG PAD
#define SIGSW PORTD.F6 // Thumb SACNNER
////////////////////ERR_INDICATION DEFINATION//////////////////
#define LED_1 PORTD.F0 // LED1
#define LED_2 PORTD.F1 // LED2
#define LED_3 PORTD.F2 // LED3
#define LED_4 PORTD.F3 // LED
#define BUZZ PORTD.F4 // BUZZER
//////////////////////////////////////////////////////////////////
/////////////////////////////////functoion initialize/////////////////////
void send_port(unsigned char *cmd);
void EXTRACT_CLI(unsigned char inv_comma);
void CMD_OR_REPORT_RING(void);
void REC_AND_SKIPDA(void);
void All_dvc_on();
void EXTRACT_CMD();
void All_dvc_off();
void Reset_all() ;
void init_set();
void Reset_Serial_Variables(void) ;
void Battery_status();
Command(unsigned char cmd);
///////////////////////////SIG PAD function///////////////////
void SIG_ON();
void SIG_OFF();
void SIG_RST();
//////////////////////////BAR CODE function/////////////////
void BAR_ON();
void BAR_OFF();
void BAR_RST();
////////////////////////globel varible//////////////////////////////////
unsigned char k,chk_s=0,process_msg;
unsigned char timeout_count;
unsigned char serial_data[245];
unsigned char serial_data_1[20];
unsigned int serial_data_counter,serial_data_counter_1;
unsigned char timer2_counter;
unsigned int serial_timeout,skip_length;
unsigned char new_msg_type;
unsigned char WR_buffer[64], RD_buffer[64];
unsigned char CMD[64];
//unsigned char ATGF[]="AT+CMGF=1";
unsigned char cli_no[12];
unsigned char volt_value[15];
//unsigned char AT[]="AT";
unsigned char general;
float adc_value,volt,R_volt;
unsigned char temp,smscheck=0;
unsigned char SMS_DAT[64];
unsigned char SMS_DAT_1[64];
unsigned char CODE_VER[]="QAT_MB_01";
//**************************************************************************************************
// Main Interrupt Routine
//**************************************************************************************************
void interrupt()
{
HID_InterruptProc();
if(PIR1.RCIF)
{
PIR1.RCIF=0;
if(serial_data_counter<=255)
{
if (Usart_Data_Ready())// If data is received
serial_data[serial_data_counter++] = Usart_Read();
}
if(serial_data_counter>255)
{
if (Usart_Data_Ready())// If data is received
serial_data_1[1] = Usart_Read();
}
// serial_data[serial_data_counter++]=RCREG; //recieved data
T2CON.TMR2ON=0;//STOP TIMER 2
TMR2=0x00;
PR2=255;
timer2_counter=0;
serial_timeout=0;
T2CON.TMR2ON=1;
} ///////////
if (PIR1.TMR2IF)
{
PIR1.TMR2IF=0;
T2CON.TMR2ON=0;
timer2_counter++;
if(timer2_counter>=timeout_count)
{
serial_timeout=1;
}
T2CON.TMR2ON=1;
}
}//~
//**************************************************************************************************
//**************************************************************************************************
// Initialization Routine
//**************************************************************************************************
void Init_Main()
{
//--------------------------------------
// Disable all interrupts
//--------------------------------------
INTCON = 0; // Disable GIE, PEIE, TMR0IE,INT0IE,RBIE
INTCON2 = 0xF5;
INTCON3 = 0xC0;
T2CON=0x7B;
RCON.IPEN = 0; // Disable Priority Levels on interrupts
PIE1 = 0;
PIE2 = 0;
PIR1 = 0;
PIR2 = 0;
// ADCON1 |= 0x0F;
// Configure all ports with analog function as digital
//--------------------------------------
// Ports Configuration
//--------------------------------------
TRISA = 0xFF;
TRISB = 0x00;
TRISC = 0xFF;
TRISD = 0x00;
TRISE = 0x07;
LATA = 0;
LATB = 0;
LATC = 0;
LATD = 0;
LATE = 0;
//--------------------------------------
// Clear user RAM
// Banks [00 .. 07] ( 8 x 256 = 2048 Bytes )
//--------------------------------------
}
//**************************************************************************************************
///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//**************************************************************************************************
// Main Program Routine
//**************************************************************************************************
void main() org 0x1000
{
unsigned char i, ch,ch1,a=0,chk_s=0,b=0;
serial_data[0]='\0';
Init_Main();
init_set();
DC_C =1;
Delay_ms(100);
HID_Enable(&RD_buffer, &WR_buffer);
Delay_ms(100);
All_dvc_on() ;
i=0;
Delay_ms(500);
a=0;
ch1=0;
send_port("WELLCOME");
ADCON1 = 0x0a; // Configure analog inputs and Vref
TRISA = 0xFF;
serial_data_counter=0;
while (1)
{
timeout_count=100;
Delay_ms(50);
k = HID_Read();
if(k!=0)
{
ch1=1;
}
else
ch1=0;
i = 0;
if(ch1) ///if any char recived
{
// if(RD_buffer[0]==128 && RD_buffer[1]==129)
if(strncmp(RD_buffer,"MB",2) == 0) //or chnge code MB to 127,128
{
PIE1.RCIE=0;
ch1=0;
ch = RD_buffer[2];
Command(ch); ///execute command
PIE1.RCIE=1;
smscheck=0;
}
else if (strncmp(RD_buffer,"REQ-CODE",8) == 0)
{
send_port("CODE VER=");
send_port(CODE_VER);
}
else
send_port("WRONG PASSWORD");
}
}
}
////////////////////////////////////reset_all/////////////////////////////////
void Reset_all()
{
Delay_ms(200);
SIGSW =1;
Delay_ms(100);
BARSW =1;
//Delay_ms(100);
//DC_C =0;
Delay_ms(3000);
Delay_ms(3000);
Delay_ms(3000);
SIGSW =0;
Delay_ms(3000);
//Delay_ms(3000);
BARSW =0;
Delay_ms(200);
send_port("ALL RESET DONE");
}
//**************************************************************************************************
//***************************************************************************************
/////////////////////////////////////all device on////////////////////////////////////////
void All_dvc_on()
{
DC_C =1;
Delay_ms(100);
HUBSW =0;
Delay_ms(100);
SIGSW =0;
Delay_ms(1000);
BARSW =0;
Delay_ms(100);
send_port("All devices ON");
}
/////////////////////////////////////all device off////////////////////////////
void All_dvc_off()
{
SIGSW =1;
Delay_ms(500);
BARSW =1;
Delay_ms(500);
//DC_C =0;
//Delay_ms(100);
send_port("All devices OFF");
}
/////////////////////////////////////////////////////////////////////////////
void send_port(unsigned char *cmd)
{
unsigned char cmd_len,loop;
cmd_len=strlen(cmd);
for(loop=0;loop<cmd_len;)
WR_buffer[loop]=*(cmd+loop++);
WR_buffer[loop]='\0';
while (!HID_Write(&WR_buffer, 64));
WR_buffer[0]='\0';
}
//////////////////////////////////////////////
///////////////////////////////////commad///////////////////////////////////
Command(unsigned char cmd)
{ char i=0,cch=0;
switch (cmd)
{
case 10: // on all
{
All_dvc_on(); //all device on
break;
}
case 11:
{
SIG_ON(); //SIG PAD switch on
break;
}
case 12:
{
BAR_ON(); //BAR CODE on
break;
}
case 20:
{
All_dvc_off();
break;
}
case 21:
{
SIG_OFF();
break;
}
case 22:
{
BAR_OFF();
break;
}
case 30:
{
Reset_all(); // reset all
break;
}
case 31:
{
SIG_RST(); //SIG PAD reset
break;
}
case 32:
{
BAR_RST();
break;
}
case 44: // shutdown
{
// send_port("Request for Battery status");
Battery_status();
break;
}
case 77: // shutdown
{
send_port("CODE VER=");
send_port(CODE_VER);
break;
}
default:
{
send_port("COMMAND NOT FOUND");
break;
}
} /////switch statemnet clocsed
}
//////////////////////////////send vaule///////////////////////////////////
//************************************************************************
///////////////////////////////////////////////////////////////////////////////
void init_set()
{
T2CON=0x7B;
PIE1.RCIE=0; /////////disabble serial interuptt
INTCON.PEIE=1; ///periphrial interuupt
PIE1.TMR2IE=1; ///enable timer 2 interupt
INTCON.GIE=1; ///globel interuptt enable
T2CON.TMR2ON=0;
PIR1.RCIF=0;
// PIE1.TXIE=0;
}
///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
void EXTRACT_DATA()
{
unsigned int tempp;
unsigned int countt,i=0,a=0,b=0;
tempp=0;
general=0;
for(tempp=0; tempp<=skip_length ; tempp++) //Dont read +92 in sms and 0 in RING
{
WR_buffer[general++]=serial_data[tempp];
if(general==64)
{
Delay_ms(50);
while (!HID_Write(&WR_buffer, 64));
general=0;
}
}
WR_buffer[general]='\0';
Delay_ms(50);
while (!HID_Write(&WR_buffer, 64));
WR_buffer[0]='\0';
}
////////////////////////////////////////////////////////////
void Battery_status()
{
char temp1,temp2;
char i;
Delay_ms(500);
adc_value = Adc_Read(2); // Get results of AD conversion
volt = adc_value*0.005;
R_volt=100*(volt/5);
temp1=R_volt/10 ;
volt_value[0] =temp1+48;
temp2=(R_volt-(temp1*10))*10;
volt_value[1]=(temp2/10)+48;
volt_value[2]=0x25;
volt_value[3]='\0';
if(R_volt>=100)
{
volt_value[1]=1;
volt_value[2]=0;
volt_value[3]=0;
volt_value[4]='\0';
}
// sprintf(volt_value,"%2.3f", R_volt);
send_port("Battery Voltage=");
send_port(volt_value);
}
/////////////////////SIG PAD ON/OFF/// ///////////////////
void SIG_ON()
{
SIGSW=0;
send_port("SIG PAD ON"); //SIG PAD on
}
void SIG_OFF()
{
SIGSW =1;
send_port("SIG PAD OFF"); //SIG PAD OFF
}
void SIG_RST()
{
SIGSW =1;
Delay_ms(4000);
Delay_ms(4000);
Delay_ms(3000);
SIGSW=0;
Delay_ms(3000);
send_port("SIG PAD RESET DONE");
}
///******************************************************
/////////////////////BAR CODE ON/OFF/// ///////////////////
void BAR_ON()
{
BARSW =0;
send_port("BAR CODE ON"); //BAR CODE on
}
void BAR_OFF()
{
BARSW=1;
send_port("BAR CODE OFF"); //BAR CODE OFF
}
void BAR_RST()
{
Delay_ms(500);
BARSW =1;
Delay_ms(1000);
Delay_ms(2000);
Delay_ms(3000);
BARSW=0;
Delay_ms(500);
send_port("BAR CODE RESET DONE");
}
/////////////////////////////////////////////////////
Edited by Administrator: Added Code Tag!