Вт янв 29, 2019 11:34:47
void usart_Tx(void* buf,BYTE size)
{
BYTE i,j;
UINT16 k;
char* ptr = (char*)buf;
TRAN; // установить признак передачи для переключения переходника TTL-RS485
PIE1bits.RCIE = 0; // запретить прерывание от приемника USART
for(i = 0; i < size; i++)
{
TXREG1 = ptr[i]; // запись байта в буфер передатчика USART
while(!PIR1bits.TXIF); // ожидание опустошения буфера
for(j = 0; j < 255; j++) // временная выдержка для достижения скорости передачи
k++;
}
REC; // установить признак приема для переключения переходника TTL-RS485
PIE1bits.RCIE = 1; // разрешить прерывание от приемника USART
}
char* ptr = (char*)usart_rx_buf;
// количество данных для передачи
void tx_str(BYTE cnt)
{
PIE1bits.TXIE = 1;
TRAN; // установить признак передачи для переключения переходника TTL-RS485
PIE1bits.RCIE = 0; // запретить прерывание от приемника USART
totalElementstoSend = cnt;
sendPointer = 0;
REC; // установить признак приема для переключения переходника TTL-RS485
PIE1bits.RCIE = 1; // разрешить прерывание от приемника USART
}
void usart_Tx_Int(void)
{
BYTE i,j;
UINT16 k;
TXREG = ptr[sendPointer];
while(!PIR1bits.TXIF); // ожидание опустошения буфера
for(j = 0; j < 255; j++) // временная выдержка для достижения скорости передачи
k++;
sendPointer++;
if (sendPointer >= totalElementstoSend)
PIE1bits.TXIE = 0;
PIR1bits.TXIF = 0;
}
Чт янв 31, 2019 10:05:11
А что ещё нужно ?Auratos писал(а):Вроде все передается,