PIC16F877A
Куда может пропадать байт 0x55?
unsigned short pid[17]={0x44,0x42,0xA4,0x26,0x8D,0x27,0x9F,0xC4,0x24,
0x21,0x69,0x9A,0xA4,0x33,0x62,0x55,0x99};
unsigned short i=0,k=0,v=0,t=0;
void main()
{
ADCON1=0x07;
CMCON=0x07;
OPTION_REG=0X07;
INTCON=0XC0;
PIE1=0X21;
TXSTA=0X24; //BRGH=1
RCSTA=0X80;
SPBRG=103; //скорость 2404 бот.с
TRISA=0;
PORTA=0;
T1CON=0X30;
while(1)
{
if(k==0)
{
RCSTA.SPEN=0; //отк. модуль USART
TRISC.RC6=0; //пин выхода USART как обычный цифровой выход
k=1;
v=1;
PORTA.RA0=~PORTA.RA0; //контроль работы кода
RCSTA.SPEN=1; //вкл. модуль USART
INTCON.T0IE=1; //разрешает прерывание по переполнению от таймера 0
TMR0=0;
}
}
}
//================================================== ============================
void interrupt()
{
if(PIR1.TXIF==1&&v==0)
{
TXREG=pid[i++]; //передача 17 байт из массива pid[17]
if(i==17)
{
i=0;
k=0;
PIE1.TXIE=0;
}
}
//================================================== ============================
if(INTCON.T0IF==1&&v==1)
{
INTCON.T0IF=0;
t++;
if(t==10)
{
t=0;
v=0;
INTCON.T0IE=0;
PIE1.TXIE=1; //начать передачу данных USART
}
}
}
Если не отключать модуль USART в регистре RCSTA.SPEN=0 то байт не пропадает.