单片机 PIC16F688 问题,串口通讯问题 数据接收 怎么接收不到?感觉没有进入中断,各位大神新年快乐,求帮忙
时间:10-02
整理:3721RD
点击:
void init(void) //初始化
{
TRISC=0x25; //0b00100101
PORTC=0x00;
TRISA=0X38;
PORTA=0X00;
//ADCON0=0X98;
//ANSEL=0X40;
//OPTION=0X87;
//INTCON=0XC0;
//PIE1=0X00;
//PIR1=0;
OPTION=0X0E;
SYNC=0; //异步接收模式
SPEN=1; //串行端口使能
CREN=1; //使能接收
RX9=0; //接收8位数据 可能是此处有问题,示波器显示数据格式:起始位(0)+数据位(8位)+校验位(0)+停止位(1)
ABDEN=1; //启动自动波特率
BRGH=1; //高速波特率打开
BRG16=1; //选择16位波特率发生器
SPBRG=0XCF; //异步波特率设置为9600
GIE=1; //开启全局中断
PEIE=1; //开启外设中断
RCIE=1; //接收中断
}
void interrupt usart(void)
{
unsigned char recdata;
if(RCIE&&RCIF)
{
recdata=RCREG; //后面需完善
RCIE=0; //
if(recdata==start_data)
{
RC_lable=1;
k=0;
num=0;
}
if(((recdata==0xC6)||(recdata==0x56)||(recdata==0x66))&&(num>=3))
{
RC_lable=0;
}
if(RC_lable==1)
{
DATA[k++]=recdata;
num++;
}
}
}
{
TRISC=0x25; //0b00100101
PORTC=0x00;
TRISA=0X38;
PORTA=0X00;
//ADCON0=0X98;
//ANSEL=0X40;
//OPTION=0X87;
//INTCON=0XC0;
//PIE1=0X00;
//PIR1=0;
OPTION=0X0E;
SYNC=0; //异步接收模式
SPEN=1; //串行端口使能
CREN=1; //使能接收
RX9=0; //接收8位数据 可能是此处有问题,示波器显示数据格式:起始位(0)+数据位(8位)+校验位(0)+停止位(1)
ABDEN=1; //启动自动波特率
BRGH=1; //高速波特率打开
BRG16=1; //选择16位波特率发生器
SPBRG=0XCF; //异步波特率设置为9600
GIE=1; //开启全局中断
PEIE=1; //开启外设中断
RCIE=1; //接收中断
}
void interrupt usart(void)
{
unsigned char recdata;
if(RCIE&&RCIF)
{
recdata=RCREG; //后面需完善
RCIE=0; //
if(recdata==start_data)
{
RC_lable=1;
k=0;
num=0;
}
if(((recdata==0xC6)||(recdata==0x56)||(recdata==0x66))&&(num>=3))
{
RC_lable=0;
}
if(RC_lable==1)
{
DATA[k++]=recdata;
num++;
}
}
}
。本帖子已结帖