描述:
各位大神,小弟想写一个PIC18F46K22的串口程序,目标是通过串口住手输入数值,单片机把得到的值返回回来。用的晶振是12M,捣鼓了两天了就是不对,对照手册把各个参数也设置了也还是不对,望给位大神指导一下吧。
#include <pic18f46k22.h>
#pragma config FOSC=HSMP,PLLCFG=ON,PRICLKEN = OFF,FCMEN = OFF,IESO = OFF,PWRTEN = ON,BOREN = SBORDIS,WDTEN = OFF,MCLRE = EXTMCLR
#define uchar unsigned char
#define uint unsigned int
void main(void)
{
ANSELC=0;
TRISC=0xff;
BAUDCON1bits.BRG16=0;
RCSTA1bits.SPEN = 1;/*使能串口(将RX和TX引脚配置为串口引脚)*/
TXSTA1bits.SYNC = 0;/*异步模式*/
SPBRG1 =77; //我这里选择的是8位高速的,12000000/16/9600-1=77。要是把BRGH换为0,12000000/9600/64-1=18,但是结果也不对,不知到是不是我理解错了。
TXSTA1bits.BRGH= 1;/*速度模式:高速*/
RCSTA1bits.CREN = 1;/*接收使能*/
TXSTA1bits.TXEN = 1;/*发送使能*/
while(1)
{
if (PIR1bits.RC1IF==1)
{
TXREG1=RCREG1;
}
}
}