《双单片机串口通信原理+程序》由会员分享,可在线阅读,更多相关《双单片机串口通信原理+程序(5页珍藏版)》请在金锄头文库上搜索。
1、一、 实验目的掌握单片机串口通信的设计方法,了解双单片机通信的原理。二、 实验内容(含程序)编写发送方和接受方单片机程序,让发送方单片机向接受方单片机循环发送几个两位十六进制数,并将发送的数显示在发送方和接受方的数码管上,要求串行口采用方式 1 进行通信,选用定时器T1 作为波特率发生器,T1 工作方式 2,通信的波特率位 9600。硬件连接:发送发程序:#include#define uint unsigned intuchar table=0xaa,0xB5,0xdd,0xa8,0xba,0xcc,0xf4,0xb0; /要发送的数据void delay(uint x)uint i,j;f
2、or(i=x;i0;i-)for(j=110;j0;j-);void main()uchar i=0;TMOD=0x20;TH1=0xfd;TL1=0xfd;SM0=0;SM1=1;TR1=1;EA=1;ES=1;while(1) SBUF=tablei;P1=tablei;while(!TI);TI=0;i+;if(i=8)i=0;delay(800);接收方程序:#include #define uchar unsigned charuchar a;void main()TMOD=0x20;TH1=0xfd;TL1=0xfd;REN=1;TR1=1;SM0=0;SM1=1;EA=1;ES=
3、1;while(1);void ser() interrupt 4RI=0;a=SBUF;P1=a;三、 实验结果及分析本实验需要完成两个程序,发送方和接受方的,但是并没有要求加入奇偶校验,因此难度不大,从实验结果可以明显看出,当发送方数码管显示要发送的数值时,接受方数码管也几乎同时显示出此数值,证明接受无误,实验结果正确。两个单片机都使用串口方式 1 进行通信,并且必须保证两单片机通信波特率完全一致,否则接受不到正确的数。在发送数据时,向 SBUF 中写入一个数据后,使用“while(!TI) ;”等待是否发送完毕,因为当发送完毕后,TI 被硬件置 1,然后才退出“while(! TI) ;”接下来在将 TI 手动清零,同理,在接受数据时,在中断服务程序中也需要将接受中断标志位 RI 置零。