void Transmite_Bit_ABATK2(char c)
{
// Data
if((c&0x01)==0){
output_high(OUT_DATA);
}
else{
output_low(OUT_DATA);
}
// Clock
delay_us(250);
output_low(OUT_CLOCK);
delay_us(250);
output_high(OUT_CLOCK);
}
void Transmite_Byte_ABATK2(char c)
{
int i;
char bt,paridad=0;
for(i=0;i<4;i++)
{
bt=(c>>i)&0x01;
Transmite_Bit_ABATK2(bt);
paridad+=bt;
}
bt=~(paridad&0x01);
Transmite_Bit_ABATK2(bt);
}
void output_Code_ABATK2(void){
int i;
char c,LCR=0x0B;
// transmite cabecera de 10 ceros
for(i=0;i<10;i++) Transmite_Bit_ABATK2(0);
// identificador de TX pista2
Transmite_Byte_ABATK2(0x0B);
// bytes de code
for(i=0;i<nextCodeChar;i++)
{
c=(Code[i]-'0') & 0x0F;
LCR=LCR^c;
Transmite_Byte_ABATK2(c);
}
// identificador fin
Transmite_Byte_ABATK2(0x0F);
LCR=LCR^0x0F;
// transmite LCR
Transmite_Byte_ABATK2(LCR);
// transmite cola de 10 ceros
for(i=0;i<10;i++) Transmite_Bit_ABATK2(0);
}