[an error occurred while processing this directive]
|
void UART_Int() interrupt 4
{
if (TI == 1)
{
TI = 0;
if (cntSendByte != 0)
{
switch (outSymbolSelect)
{
case 0: SendByte(outStatus, 0); break;
case 1: SendByte(outSymbol, NStim); break;
}
}
else UART_Contact = 0;
}
else
{RI = 0; UART_Decoder(SBUF);}
}
void UART_Decoder(unsigned char InByte)
{
switch (InByte)
{
case 5: UART_Contact = 1; SendByte(outStatus, 0); break;
case 10: PushStSt = 1; break;
case 42: PushStSt = 0; break;
}
}
void SendByte(unsigned char a, b)
{
switch (a)
{
case outSymbol:
{
outSymbolSelect = 1;
switch (cntSendByte)
{
case 0: cntSendByte = 2; UART_Contact = 1; SBUF = a; break;
case 2: cntSendByte--; SBUF = b; break;
case 1: cntSendByte = 0; SBUF = 0x60; break;
}
break;
case outStatus:
{
outSymbolSelect = 0;
switch (cntSendByte)
{
case 0: cntSendByte = 4; UART_Contact = 1; SBUF = a; break;
case 4: cntSendByte--; SBUF = StatusSys[0]; break;
case 3: cntSendByte--; SBUF = StatusSys[1]; break;
case 2: cntSendByte--; SBUF = StatusSys[2]; break;
case 1: cntSendByte = 0; SBUF = 0x60; break;
}
break;
}
}
По прерыванию RI я передаю значение буфера SBUF в ф-цию void UART_Decoder(unsigned char InByte). Если это 5, то передаю значения в ф-цию void SendByte(unsigned char a, b), которая отправляет некоторые значения в UART.