51单片机串口通信程序。。含详细例子

51单片机串口通信程序。。含详细例子

ID:9218188

大小:394.95 KB

页数:20页

时间:2018-04-23

51单片机串口通信程序。。含详细例子_第1页
51单片机串口通信程序。。含详细例子_第2页
51单片机串口通信程序。。含详细例子_第3页
51单片机串口通信程序。。含详细例子_第4页
51单片机串口通信程序。。含详细例子_第5页
资源描述:

《51单片机串口通信程序。。含详细例子》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、51单片机串口通信1./*打开串口调试程序,将波特率设置为9600,无奇偶校验晶振11.0592MHz,发送和接收使用的格式相同,如都使用字符型格式,在发送框输入hello,ILoveMCU,在接收框中同样可以看到相同字符,说明设置和通信正确*/#include/*主程序*/voidmain(void){SCON=0x50;/*SCON:模式1,8-bitUART,使能接收*/TMOD=0x20;/*TMOD:timer1,mode2,8-bitreload*/TH1=0xFD;/*TH1:reloadvaluefor9600baud@11.0592MHz*/TL1

2、=0XFD;TR1=1;/*TR1:timer1run*/EA=1;/*打开总中断*/ES=1;/*打开串口中断*/while(1)/*主循环不做任何动作*/{}}voidUART_SER(void)interrupt4//串行中断服务程序{unsignedcharTemp;//定义临时变量if(RI)//判断是接收中断产生{RI=0;//标志位清零Temp=SBUF;//读入缓冲区的值P1=Temp;//把值输出到P1口,用于观察SBUF=Temp;//把接收到的值再发回电脑端}if(TI)//如果是发送标志位,清零TI=0;}2.51单片机与电脑串口通信的C程序,最好是中断方式的

3、#include#includeunsignedcharch;bitread_flag=0;voidinit_serialcom(void)//串口通信初始设定{SCON=0x50;//UART为模式1,8位数据,允许接收TMOD=0x20;//定时器1为模式2,8位自动重装PCON=0x80;//SMOD=1;TH1=0xFD;//Baud:19200fosc="11".0592MHzTL1=0XFD;IE=0x90;//EnableSerialInterruptTR1=1;//timer1runTI=1;}//向串口发送一个字符voidsen

4、d_char_com(unsignedcharch){SBUF=ch;while(TI==0);TI=0;}voidserial()interrupt4using3//串口接收中断函数{if(RI){RI=0;ch=SBUF;read_flag=1;//就置位取数标志}}main(){init_serialcom();//初始化串口while(1){if(read_flag)//如果取数标志已置位,就将读到的数从串口发出{read_flag=0;//取数标志清0send_char_com(ch);}}}3.//单片机串行口发送/接收程序,每接收到字节即发送出去//和微机相接后键入的字

5、符回显示在屏幕上//可用此程序测试#include#defineXTAL11059200//CUP晶振频率#definebaudrate9600//通信波特率voidmain(void){unsignedcharc;TMOD=0x20;//定时器1工作于8位自动重载模式,用于产生波特率TH1=(unsignedchar)(256-(XTAL/(32L*12L*baudrate)));TL1=(unsignedchar)(256-(XTAL/(32L*12L*baudrate)));//定时器0赋初值SCON=0x50;PCON=0x00;TR1=1;IE=0x00;

6、//禁止任何中断while(1){while(RI==0);RI=0;c=SBUF;//从缓冲区中把接收的字符放入c中SBUF=c;//要发送的字符放入缓冲区while(TI==0);TI=0;}}4.///////////////////////////////////////////////////////////////////////////E51Pro.c//Easy51Pro编程器主程序,负责通讯,管理编程操作/////////////////////////////////////////////////////////////////////////#include<

7、E51Pro.h>BYTEComBuf[18];//串口通讯数据缓存,发送和接收都使用UINTnAddress;//ROM中地址计数UINTnTimeOut;//超时计数ProWorkpw;//编程器一般操作voidDelay_us(BYTEnUs)//微秒级延时<255us{TH0=0;TL0=0;TR0=1;while(TL0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。