Здравствуйте! Такая проблема: мне нужно передавать данные на ПК. Использую драйвер 485 интерфейса ADM485ARZ и преобразователь интерфейсов Меркурий-221.
Приём на ПК контролирую программой RS232 PRO v3.30. Обмен происходит на скорости 2400. Асинхронная передача, 8 бит данных, без чётности, один стоповый бит.
Вот схема...
Вот код...
Код
/*-------------------------------------------------------------------------*/
//Head...
/*-------------------------------------------------------------------------*/
#include <htc.h>
#include <pic16f689.h>
#define _XTAL_FREQ 20000000
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & CP_OFF & CPD_OFF & BOREN_ON & IESO_ON & FCMEN_ON);
/*-------------------------------------------------------------------------*/
void main()
{
//Init hard...
/*-------------------------------------------------------------------------*/
//UART...
TXSTA = 0b00000000;
RCSTA = 0b10000000;
SPBRG = 129;
TXEN = 1;
/*-------------------------------------------------------------------------*/
//INT...
INTCONbits.GIE = 0;
/*-------------------------------------------------------------------------*/
//Work cicle...
START:
/*-------------------------------------------------------------------------*/
if (TRMT == 1)
{
TXREG = 0xAB; //Test TX!
};
__delay_ms(500);
/*-------------------------------------------------------------------------*/
//End work cicle.
goto START;
};
В результате отправляю "AB", а ПК принимает "F0F0F0F0"...
Перепроверял... наверняка я что-то упускаю из вида или просто не знаю, т.к. я первый раз делаю такой обмен...
Подскажите, в чём дело. Спасибо!