1 WDT disable
2 its true
New thing "bootloader"
#include <htc.h>
#define _XTAL_FREQ 4000000
#define BASEADRESS 0x0009
#define BASEADRESSL 0x09
#define BASEADRESSH 0x00
#define SET 0x01
unsigned char ProgramData[]={0x16,0x83,0x13,0x03,0x01,0x86,0x30,0xFF,0x12,0x83,0x13,0x03,0x00,0x86,0x30,0x03\
,0x00,0xF2,0x30,0x8A,0x00,0xF1,0x30,0x56,0x00,0xF0,0x0B,0xF0,0x2F,0xE4,0x0B,0xF1\
,0x2F,0xE4,0x0B,0xF2,0x2F,0xE4,0x2F,0xEB,0x12,0x83,0x13,0x03,0x01,0x86,0x30,0x03\
,0x00,0xF2,0x30,0x8A,0x00,0xF1,0x30,0x56,0x00,0xF0,0x0B,0xF0,0x2F,0xF4,0x0B,0xF1\
,0x2F,0xF4,0x0B,0xF2,0x2F,0xF4,0x2F,0xFB,0x2F,0xDA,0x01,0x83,0x12,0x0A,0x11,0x8A\
,0x2F,0xD7};
void led(){
TRISB=0x00;
while(1){
PORTB=0xFF;
__delay_ms(500);
PORTB=0x00;
__delay_ms(500);
}
}
void WritePM(unsigned char dath,unsigned char datl,unsigned char addrh,unsigned char addrl){
//unsigned char addr;
unsigned char datal=datl;
unsigned char datah=dath;
//addr=&datal;
EEADR=addrl;
EEADRH=addrh;
EEDATA=datal;
EEDATH=datah;
EECON1bits.EEPGD=1; // EEPGD bits set 1000 0000 =0x80
EECON1bits.WREN=1; // WREN bit set 0000 0100 =0x4
INTCONbits.GIE=0; // GIE clear 0111 1111 =0x7F
EECON2=0x55;
EECON2=0xAA;
EECON1bits.WR=1; //WR bit set 0000 0010 =0x2
//asm("BSF EECON1,1"); //not define WR
asm("NOP");
asm("NOP");
//asm("BCF EECON1,2");
INTCONbits.GIE=1;//GIE set 1000 0000 =0x80
EECON1bits.WREN=0;//WREN bit clear 1111 1011 =0xFB
return;
}
void FillPrgMem(unsigned char *ptr,unsigned int sizeofprogram){
unsigned char addrrh=BASEADRESSH;
unsigned char addrrl=BASEADRESSL-1;
unsigned char flag1=0;
unsigned char flag2=0;
unsigned int loopcalculate=sizeofprogram;
while(loopcalculate){
addrrl++;
if(addrrl==0xFF){
flag1=SET;
addrrh++;
}
if(addrrh==0xFF){
flag2=SET;
}
WritePM(*ptr,*(ptr+1),addrrh,addrrl);
if(flag1==SET){
addrrl=0x00;
}
if(flag2==SET){
addrrh=0x00;
}
ptr=ptr+0x02;
loopcalculate--;
}
}
void main(void) {
/**/
void (*start)(void);
FillPrgMem(ProgramData,88);
start=BASEADRESS;
start();
}
I am trying write bootloader and again I have some problem.
I need your proposal
I am still working on this code.