[an error occurred while processing this directive]
|
u16_t безнаковое 16 бит
s16_t знаковое 16 бит
static u16_t GetTxFreeSz(void) {
s16_t d = ucTXWrNdx - ucTXRdNdx;
if (d < 0) {
d += TXBUFSIZE;
}
return TXBUFSIZE - d;
}
void rsPutByte(BYTE byte) {
u8_t WrNdxBkp;while(GetTxFreeSz() < 1){};
WrNdxBkp = ucTXWrNdx;
ucTXBuffer[ WrNdxBkp++] = byte;
WrNdxBkp &= TXBUFSIZE - 1;
ucTXWrNdx = WrNdxBkp;
IE2 |= UTXIE1;
}
#pragma vector = UART1TX_VECTOR
__interrupt void usart1_tx(void) {
_EINT();
TXBUF1 = ucTXBuffer[ucTXRdNdx++];
ucTXRdNdx &= TXBUFSIZE - 1;
if(ucTXRdNdx == ucTXWrNdx) {
IE2 &= ~UTXIE1;
}
}
E-mail: info@telesys.ru