当前位置:首页 > 单片机 > 单片机
[导读]接收采用中断实现 #include unsigned char error=0x00;//错误数据帧,丢弃 bit Q=0;//一次数据帧接收完成标志位 unsigned char message[10]; //数据信息缓存区 unsigned char j=0x00;//数据信息的长度 void

接收采用中断实现
#include
unsigned char error=0x00;//错误数据帧,丢弃
bit Q=0;//一次数据帧接收完成标志位
unsigned char message[10]; //数据信息缓存区
unsigned char j=0x00;//数据信息的长度

void interrupt isr(void)//接收中断处理
{
if(RCIF&&RCIE)
{
if(FERR)//监测是否有帧错误
{
error=RCREG;
}
if(OERR)
{
CREN=0 ;
CREN=1 ;//接收模块被复位重置,OERR清零
}
message[j]=RCREG;//保存每一次接收到的数据
++j;
if(j>10)
{
Q=1;//10个数据字节接收完成标志
j=0;
}
}
}
void usart_init()//串口初始化
{
INTCON=0 ;// 关闭所有的中断
TRISC6=1 ;
TRISC7=1 ;
SPBRG=51;//波特率9600,6M时钟
BRGH=1;//高速波特率
SYNC=0;
SPEN=1;//异步串口工作方式
TXEN=1;//USART工作于发送器方式

TXIE=0;//发送不需要中断处理
RCIE=1;//接收需要中断处理
CREN=1;//激活接收器
PEIE = 1;
GIE = 1;
}
void putch(unsigned char byte)//发送一个字节的数据
{
TXREG = byte;
while(TRMT==0)
{
asm("nop");
}
return;
}
void main()//将上位机发送的数据通过串口显示
{
usart_init();
while(1)
{
if(Q==1)
{
Q=0;
for(j=0;j<10;++j)
putch(message[j]);
}
}
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭