SOFTWARE UART1 TX
Protocolo: Start D0 D1 D1 D3 D4 D5 D6 D7 Stop Stop
--|_____|x x x x x x x x |---------|
9600bps
NOTA: Ajuste o Delay se necessário.
Autor: Antonio Marcos AGI.
SerialTX = pode ser qualquer I/O, configurable output.
NOTA: no meu caso utilizei em um PIC18
*******************************************************/
void Soft_UART1_WriteData(unsigned char t)
{ unsigned char a;
GIE_bit = 0; // Desliga interrupção global
SerialTX = 0; // Start
Delay_us(1042); // Time
for(a=0; a<=7; a++) // Rotaciona 8 bits de saida
{
if(t.f0 == 1)
{
SerialTX = 1;
} else
{
SerialTX = 0;
}
t>>=1;
Delay_us(1042); // Time
}
SerialTX = 1; // Dois Stop bit
Delay_us(2084); // time
GIE_bit = 1; // Liga interrupção global
}
Espero que ajude, quem estiver precisando ter outras seriais TX, onde há apenas uma.
Eu utilizo para onde não há disponibilidade e maiores recursos de hardware e onde o custo é importante como foi no meu caso.
Se precisar para outras frequencias de baud rate, a formula é: 1/F = time baud rate.
