Я пытаюсь отправить сообщение в последовательный порт Docklight, но все время получаю ноль. Я использую PIC18F45K80 с XC8 MPLAB X. Все кажется правильным в моем коде, но я предполагаю, что я не прав. Как я могу это исправить?
#include <xc.h>
#include "PIC.h"
// INITIAL PIN SETUP
void PIN_MANAGER_Initialize(void)
{
/**
LATx registers
*/
LATE = 0x00;
LATD = 0x00;
LATA = 0x00;
LATB = 0x00;
LATC = 0x00;
/**
TRISx registers
*/
TRISE = 0x07;
TRISA = 0x08;
TRISB = 0x01;
TRISC = 0b00010000;
TRISD = 0xEF;
PORTC = 0b00010010 ;
/**
ANSELx registers
*/
ANCON0 = 0x00;
ANCON1 = 0x00;
/**
WPUx registers
*/
WPUB = 0x00;
INTCON2bits.nRBPU = 1;
}
// INITIAL SETUP SPI
void SPI_Initialize(void)
{
// SMP Middle; CKE Idle to Active;
SSPSTAT = 0x00;
// SSPEN enabled; WCOL no_collision; CKP Idle:High, Active:Low; SSPM FOSC/4; SSPOV no_overflow;
SSPCON1 = 0x30;
// SSPADD 0;
SSPADD = 0x00;
}
// INITIAL SETUP EUSART
void EUSART_Initialize(void)
{
// ABDOVF no_overflow; TXCKP async_noninverted_sync_fallingedge; BRG16 16bit_generator; WUE disabled; ABDEN disabled; RXDTP not_inverted;
BAUDCON1 = 0x08;
// SPEN enabled; RX9 8-bit; RX9D 0; CREN disabled; ADDEN disabled; SREN disabled;
RCSTA1 = 0x80;
// TX9 8-bit; TX9D 0; SENDB sync_break_complete; TXEN enabled; SYNC asynchronous; BRGH hi_speed; CSRC master_mode;
TXSTA1 = 0xA4;
//
SPBRG1 = 0x19;
//
SPBRGH1 = 0x00;
}
void SYSTEM_Initialize(void)
{
PIN_MANAGER_Initialize();
SPI_Initialize();
EUSART_Initialize();
}
void main(void)
{
int i;
unsigned char data[] = "HELLO";
{
SYSTEM_Initialize();
while (1)
{
for (i=0 ; i < 5; i++)
{
while(TXIF == 0);
TXREG = data[i];
}
__delay_ms(25);
}
}
}
Я бы хотел получить серийный номер через контакт
#define RSOUT PORTBbits.RB5
#define RSTEST TRISBbits.TRISB5 = 0
так как я не хочу, чтобы Rx был подключен.