PIC18F25K80이 내장 된 보드 용 라이브러리를 몇 개 프로그래밍하고 있습니다. 지금은 UART 라이브러리를 프로그래밍하려고하는데 모든 것을 시도했지만 char 문자열을 보낼 때 제대로 작동하지 않습니다.PIC18F25K80 USART를 통해 보내는 문자열이 작동하지 않습니다.
나는 XC8 컴파일러를 사용하고 있는데 나는 도서관에 다음 코드가 있습니다. (난 당신이 코드에서 그와 관련된 어떤 것도 볼 수 없습니다 그 이유는, 아직 중단을 프로그램하지 않은
void UARTsend(char data){
UARTbusy();
TXREG1 = data;
}
void UARTsendTEXT(unsigned char *text){
while(*text != '\0'){
UARTsend(*(text++));
}
}
char UARTbusy(){
return TXSTA1bits.TRMT;
}
그리고 주 파일이 코드 :
int main() {
UARTconfig(_BR_19200, _RxINT_OFF, _TxINT_OFF, _8BIT);
unsigned char data[20] = "ABCDEFGHIJ";
while(1){
if(UARTrxREAD() == 'a'){
UARTsendTEXT(data);
}
}
return 0;
}
내가 칠 때, 'A', 문자열이 대신 문자열을 보는 전송되어야, 내가 처음이자 마지막 편지를 받고, 때로는 첫 번째 글자
솔직히 말해서 코드에 대한 근본적인 문제라고 생각합니다. 그러나 생각할 수있는 모든 것을 시도했지만 아무 것도 효과가 없었습니다. 그래서 여기 누군가가 저를 도울 수 있습니다.
편집 :
void UARTconfig(unsigned int BaudRate, unsigned int RxINT, unsigned int TxINT, unsigned int BIT){
int br_data;
//Clock configuration at 16MHz
OSCCONbits.IRCF = 0b111;
//9-bit transmit enable bit.
if(BIT == 1) {
RCSTA1bits.RX9 = 1; //Reception 9-bit.
TXSTA1bits.TX9 = 1; //Transmission 9-bit.
}
else {
RCSTA1bits.RX9 = 0; //Reception 8-bit.
TXSTA1bits.TX9 = 0; //Transmission 8-bit.
}
//Enable serial port.
RCSTA1bits.SPEN = 1;
//Enable continuous reception.
RCSTA1bits.CREN = 1;
//Setting asynchronous mode.
TXSTA1bits.SYNC = 0;
//Enable transmission
TXSTA1bits.TXEN = 1;
//Setting Rx/Tx pins as output.
TRISC7 = 0;
TRISC6 = 0;
//Baud rate configuration
BAUDCON1bits.BRG16 = 1; //16bit Baud Rate generator
TXSTA1bits.BRGH = 0; //Low speed BR.
switch(BaudRate){
case 0:
br_data=415;
break;
case 1:
br_data=103;
break;
case 2:
br_data=51;
break;
case 3:
br_data=16;
break;
case 4:
br_data=8;
}
SPBRGH1:SPBRG1 = br_data;
}
들여 쓰기를 수정하고 C 태그를 추가하는 편집을 제출했습니다.이 질문은 질문의 가시성을 높이는 데 매우 중요하다고 생각합니다. 불행하게도 5 개의 태그 만 허용되므로 태그 하나를 희생해야했습니다. 나는 "usart"를 선택했다. 다른 것을 원한다면 내 변경 사항을 취소 할 수 있습니다. –
'UARTbusy(); '가 필요합니다. –
죄송합니다. UARTbusy()를 잊어 버렸습니다; char UARTbusy() { return TXSTA1bits.TRMT; } –