文档详情

51单片机主从之间的简单串口通信.doc

发布:2018-12-05约2.51千字共5页下载文档
文本预览下载声明
/******************51单片机主从通信******************************** FileName:tongxin.c Author:沧海麒麟 Date:2011.05. Version :1.0 Description:适用于 */ /*主机发送函数*/ #includereg52.h #define uchar unsigned char #define uint unsigned int uchar i=0; uchar const Dat[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00, 0x0f}; //待发送数据 /********************************* 延时函数 **********************************/ void delay(){ uint j; for(j=0;j31000;j++); } /********************************* 主函数 **********************************/ void main(){ TMOD=0x20; //将T1设为工作方式2 TH1=0xFD; TL1=0xFD; PCON=0x00; TR1=1; //启动T1 SCON=0xd0; //串行口设为工作方式3, 允许接收 EA=1; ES=1; //开中断 ACC=Dat[i]; CY=P; TB8=CY; P0=ACC; SBUF=ACC; //发送数据 delay(); while(1); } /**************************** 发送中断服务函数 *****************************/ void trs() interrupt 4 using 1 { uchar Dat1; if(TI==0) { //接收中断 RI=0; Dat1=SBUF; //清除中断标志,接收数据 if(Dat1==0) { //收到回送正确标志 i++; ACC=Dat[i]; CY=P; TB8=CY; P0=ACC; SBUF=ACC; //启动发送下一个数据 delay(); if(i==9) { EA=0; ES=0;//数据发送完毕 while(1) { P0=0xaa; delay(); P0=0x55; delay(); P0=0x00; delay(); } } } else { ACC=Dat[i]; //收到回送错误标志 CY=P; TB8=CY; P0=ACC; SBUF=ACC; //重发上一个数据 delay(); } } else TI=0; } /*从机接收函数*/ #includereg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar i=0; uchar Dat[16] _at_ 0x40; /********************************* 主函数 **********************************/ void main(){ TMOD=0x20; //将T1设为工作方式2 TH1=0xFD; TL1=0xFD; PCON=0x00; TR1=1; //启动T1 SCON=0xd0; //串行口设为工作方式3, 允许接收 ES=1;EA=1; //开中断 while(1); } /*************
显示全部
相似文档