Ola amigos,
Alguem tem um programa bem básico em linguagem C que use a interrupção serial
Moderadores: 51, guest2003, Renie, gpenga
/************************************************/
/* void interrupt void IntSerial( ) */
/************************************************/
extern unsigned char byte_rx ;
void serial (void) interrupt SERIAL using BANK_2
{
if ( RI )
{
byte_rx = SBUF ;
/// trata byte recebido aqui
RI = 0 ;
}
}
/*************************************************************************
FUNCAO: int_serial() Interrupção
PARAMETROS: NENHUM
RETORNO: NENHUM
DESCRICAO: Transmitir e receber dados pela serial, a recepção é
armazenada em buffer.
**************************************************************************/
void int_serial(void) interrupt 4
{
static int ind;
if (TI) // Se tem byte para ser enviado em txbuf
{
TI = 0; // Zero o flag TI
SBUF = txbuf; // Movo o byte de txbuf para o SBUF
ES = 0; // Desabilito a interrupção serial
while(!TI) // Espero o byte ser transmitido
WatchdogReset();
TI = 0; // Zero o flag TI
ES = 1; // Habilito a interrupção serial
}
if (RI) // Se chegou dado pela serial
{
RI = 0; // Zero o flag RI
if(SBUF == ESC)
{
FlagEsc = 1;
}
else
{
Buf[ind] = SBUF; // copio o dado em SBUF para o buffer
TI = 1;
if(Buf[ind] == '\r' || ind == MAX_BUF_CMD) // se byte recebido igual a \r ou ind = MAX_BUF_CMD
{
sizebuf = strlen(Buf)-1; // Pego o tamanho do Buffer menos 1, o \r
WatchdogReset();
FlagRx = 1; // Seto o flag de recepção
ind = -1; // Zero o ind para da próxima vez escrever
} // no inicio do Buffer
ind++; // incremento o indice "ind"
}
}
}
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante