void EUSART1_TX(unsigned char txData)
{
while(0 == PIR3bits.TX1IF)
{
}
TX1REG = txData; // Registro de Transmisión
}
char EUSART1_Rx()
{
return RC1REG; // Registro de recepcion
}
void SYSTEM_Initialize(void)
{
PIN_MANAGER_Initialize();
OSCILLATOR_Initialize();
EUSART1_Initialize();
}
void main(void)
{
// initialize the device
SYSTEM_Initialize();
uint8_t firstbyte = 0u;
uint8_t secondbyte = 0u;
uint16_t myint16 = 0x63C2; //25538
firstbyte = myint16 & 0xFF;
secondbyte =(myint16 >> 8 )& 0xFF;
EUSART1_TX(firstbyte);
EUSART1_TX(secondbyte);
}
void EUSART1_Write(char txData)
{
while(0 == PIR3bits.TX1IF)
{
}
TX1REG = txData; // Write the data byte to the USART.
}
unsigned char EUSART1_RX(){
return RC1REG; //Registro de Recepción
}
uint16_t UART_GetUInt16()
{
uint16_t lo = EUSART1_RX(); //firstbyte
uint16_t hi = EUSART1_RX(); //secondbyte
return (hi << 8 ) | lo;
}
void SYSTEM_Initialize(void)
{
PIN_MANAGER_Initialize();
OSCILLATOR_Initialize();
EUSART1_Initialize();
}
void main(void)
{
// initialize the device
SYSTEM_Initialize();
TRISAbits.TRISA0=0; //Limpio puerto para visualizar dato
TRISAbits.TRISA1=0; //Limpio puerto que me servirá como señalización
for (int i=0; i<16; i++) { //Recorremos el arreglo para leer cada bit
PORTAbits.RA0=UART_GetUInt16()>>i; //Por aquí sale el dato bit a bit
__delay_ms(1000); //Retardo para poder visaluzar el dato
}
PORTAbits.RA1=1; //LED que indica que se mostraron los 16 bits
__delay_ms(1000);
}
Mi problema es que cuando quiero visualizar el dato recibido solo tengo el segundo byte (dos veces)
Tu transmisor no tiene un loop infinito ---- Empecemos por ahi...Si, una disculpa por no ponerlo. Ya lo hice, pero obtengo el mismo resultado.
¿ Como lo ves ? Ya que el codigo no muestra nada.Lo estoy armando físico. La salida de RA0 es por donde visualizo el dato con un maravilloso LED.
Ademas no comprendo el porque realizarlo 16 veces.Como quiero visualizar el dato bit a bit con un LED recorro mi dato 16 veces para poder visualizarlo.
Como quiero visualizar el dato bit a bit con un LED recorro mi dato 16 veces para poder visualizarlo.