#include ‹pic.h›
void Send_Boot(void);
char flag=0;//Флаг разрешения отправки Boot
char Buf;
void interrupt uart_input(void)
{
Buf=RCREG;
if (Buf==0xA0) flag=1;
}
main()
{
RCSTA=0b10010000;
TXSTA=0b00100100;
SPBRG=12;
INTCON=0b11000000;
RCIE=1;
PORTA=0x00;
CMCON=0b00000111;
TRISA=0x00;
TRISB=0b00100110;
STATUS=0x00;
RB4=1;
while(RB5!=0)
continue;//ожидание нажатия кнопки выполнения данной функции
RB4=0; //выход управляющий подачей напряжения зарядки
Send_Boot(); //функция запуска Boot
}
void Send_Boot(void)
{
char boot1[ 16 ]={0xA5,0x5A,0xA5,0xA5,0xE6,0x89,0x46,0x14,0xD1,0x9 0,0xFF,0x9A,0xFE,0x9B,0xE6
,0x0C};
char boot2[ 16 ]={0x09,0x00,0xE6,0x8A,0xBF,0x04,0xD1,0x90,0xE6,0x0 A,0xF0,0x0E,0xE6,0x8A,0xAF
,0x04};
char boot3[ 16 ]={0xB5,0x4A,0xB5,0xB5,0xE6,0x00,0x40,0x00,0xE1,0x0 0,0xF7,0xF0,0x00,0x02,0xE1
,0x50};
char boot4[ 16 ]={0xF7,0xF0,0x01,0x02,0xE6,0x03,0x03,0x00,0xE1,0x0 0,0xF7,0xF0,0x00,0xF6,0xE1
,0x50};
char boot5[ 16 ]={0xF7,0xF0,0x01,0xF6,0xE6,0xF0,0x80,0x00,0x74,0xF 0,0xE0,0xEF,0xB7,0x48,0xB7
,0xB7};
int i;
while(TXIF!=1)
continue;
TXREG=0x55;
//ждем H'A0'
while(flag!=1)
continue;
for(i=0;i‹16;i++)
{
while(TXIF!=1)
continue;
TXREG=boot1[ i ];
}
for(i=0;i‹16;i++)
{
while(TXIF!=1)
continue;
TXREG=boot2[ i ];
}
for(i=0;i‹16;i++)
{
while(TXIF!=1)
continue;
TXREG=boot3[ i ];
}
for(i=0;i‹16;i++)
{
while(TXIF!=1)
continue;
TXREG=boot4[ i ];
}
for(i=0;i‹16;i++)
{
while(TXIF!=1)
continue;
TXREG=boot5[ i ];
}
flag=0;
while(RB5!=1)
continue;
} |