#include <reg52.h>
unsigned char idata count_R; unsigned char idata count_T; unsigned char idata TRANS_buffer[8]; void main() {
TMOD = 0x20; TH1=0xfd; TL1=0xfd; //设置定时器1 工作方式2; TR1=1; //启动定时器1; SCON=0x50; //串口方式1 ET1=0; //禁止T1中断 ES=1; EA=1; //开中断 count_R=0; count_T=0; while(1); }
void communication_AURT (void) interrupt 4 //串口中断 { if(TI) { TI=0; if(count_T>=8) count_T=1; else { SBUF=TRANS_buffer[count_T]; count_T++; } } if(RI) { RI=0; TRANS_buffer[count_R]=SBUF; count_R++; if(count_R>=8) //接收完8个字节后,回送 { count_R=0; count_T=1; SBUF=TRANS_buffer[0]; } } }
/**************************************************************/ 51串口程序 该程序在单独运行时,没有发现问题。 但是放在我的主程序里面,接收的数据总是顺序错乱。 主程序里面有一个T0中断,已经屏蔽,串口为高优先级。 请高手帮忙分析一下 |