Galera,
estou tentando comunicar o pic com o computador, já desenvolvi o hardware e tenho o software que desenvolvi no Visual Basic, mas nunca consigo receber ou enviar o mesmo dado. ALguém tem um exemplo para me passar ?
Abaixo meu código :
Uso o MPLAB C18 :
#include <p18cxxx.h>
#include "usart.h"
#include "displayLCD.h"
#include <stdio.h>
#include <stdlib.h>
/************************************************DEFINES**********************************************/
#pragma config FOSC=HS
#pragma config CPUDIV=OSC1_PLL2
#pragma config WDT=OFF
#pragma config PWRT=ON
#pragma config BOR=ON
#pragma config BORV=1
#pragma config PBADEN=OFF
#pragma config LVP=OFF
/*******************************************************************************************************/
void main (){
char A=0;
ConfiguraLCD();
TRISC = 0b10111111;
//Configura como oscilador externo - 20Mhz
OSCCONbits.SCS0 = 0;
OSCCONbits.SCS1 = 0;
//Define TX como transmissor (saída)
TRISCbits.TRISC6 = 0;
//Define RX como receptor (entrada)
TRISCbits.TRISC7 = 1;
OpenUSART(USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_BRGH_LOW,31);
baudUSART(BAUD_8_BIT_RATE &
BAUD_AUTO_OFF &
BAUD_WAKEUP_OFF);
while (1)
{ PosicaoCursorLCD(1,1);
EscreveFraseRomLCD("Funcionando");
// while(DataRdyUSART());
// A=ReadUSART();
// EscreveFraseRomLCD(A);
// while(BusyUSART());
// putcUSART('A');
//
// PosicaoCursorLCD(2,1);
// EscreveFraseRomLCD("A");
//
// Delay10KTCYx(250); // Delay 10000*250 Ciclos
//Delay10KTCYx(250); // Delay 10000*250 Ciclos
//Delay10KTCYx(250); // Delay 10000*250 Ciclos
//Delay10KTCYx(250); // Delay 10000*250 Ciclos
//Delay10KTCYx(250); // Delay 10000*250 Ciclos
//
// while(BusyUSART());
// putcUSART('B');
// PosicaoCursorLCD(3,1);
// EscreveFraseRomLCD("B");
// Delay10KTCYx(250); // Delay 10000*250 Ciclos
//Delay10KTCYx(250); // Delay 10000*250 Ciclos
//Delay10KTCYx(250); // Delay 10000*250 Ciclos
//Delay10KTCYx(250); // Delay 10000*250 Ciclos
//Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
A=4;
while(BusyUSART());
PosicaoCursorLCD(4,1);
EscreveFraseRomLCD("Caraca");
putsUSART(~'AAAAAAA');
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
Delay10KTCYx(250); // Delay 10000*250 Ciclos
}
}
//
///** FIM DO ARQUIVO main.c ***************************************************************/
/** V E C T O R R E M A P P I N G ******************************************/
// Rotina necessária para o compilador C18 saber onde é o início do vetor de
// "reset".
// ATENÇÃO: Copiar esta parte do código dentro do arquivo "main.c" dos
// projetos usados com o Bootloader USB-HID para gravação in-circuit.
extern void _startup (void); // See c018i.c in your C18 compiler dir
#pragma code REMAPPED_RESET_VECTOR = 0x1000
void _reset (void)
{
_asm goto _startup _endasm
}
#pragma code // Diretiva que retorna a alocação dos endereços
// da memória de programa para seus valores padrão
/** F I M D A S E Ç Ã O D E V E C T O R R E M A P P I N G *************/
Att