欢迎来到天天文库
浏览记录
ID:51794067
大小:135.50 KB
页数:4页
时间:2020-03-15
《基于proteus的51单片机仿真实例六十二、串口发送和接收字符串实例.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于proteus的51单片机仿真实例六十二、串口发送和接收字符串实例标签: proteus 单片机 串口 实例 字符 2010-02-1923:301、在上一实例中,我们利用proteus中自带的虚拟终端实现了单片机通过串口向主机发送字符串的功能。本例中我们加入串口接收字符的功能 2、为了实现单片机通过终端接收字符的功能,我们需要在电路中再加入一路虚拟终端,新加入的这一路虚拟终端连接到单片机的串行接收端口RXD上,在仿真运行后,在该终端输入字符,然后将字符发送到单片机的串行接收端,3、在keilc51中新建工程ex50,编写如下程序代码,编译并生成ex50.hex文件//
2、实例50:利用虚拟中断实现串口数据的发送和接收//#include //包含头文件//毫秒级延时函数voiddelay(unsignedintx){ unsignedchari; while(x--) { for(i=0;i<120;i++); }}//字符发送函数voidputchar(unsignedchardata1) { SBUF=data1; //将待发送的字符送入发送缓冲器 while(TI==0); //等待发送完成 TI=0; //发送
3、中断标志请0}//字符串发送函数voidputstring(unsignedchar*dat){ while(*dat!=' ') //判断字符串是否发送完毕 { putchar(*dat); //发送单个字符 dat++; //字符地址加1,指向先下一个字符 delay(5); }}//主函数voidmain(void){ unsignedcharc=0; SCON=0x50; //串口方式1,允许接收 TMOD=0x20; //T1工作于方式2 PCON=0x00
4、; //波特率不倍增 TL1=0xfd; //波特率设置 TH1=0xfd; // EA=1; //开总中断 ES=1; //开串口接收中断 //TI=0; TR1=1; //定时器开启 delay(200); putstring("Receivingfrom8051...r"); //串口向终端发送字符串,结尾处回车换行 putstring("----------------------r"); del
5、ay(50); while(1) { }}//voidrevdata(void)interrupt4{ unsignedchartemp; if(RI==0)return; //如果没有接收中断标志,返回 ES=0; //关闭串口中断 RI=0; //清串行中断标志位 temp=SBUF; //接收缓冲器中的字符 putchar(temp); //将接收的字符发送出去 ES=1; //开启串口中断}4、在proteus中新建仿真文件ex50.dsn,电路原理图如
6、下所示5、将ex50.hex文件载入at89c51中,启动仿真,在vertualterminal1中输入字符,vertualterminal中会即时显示出输入的字符。下图是程序运行结果。分享举报
7、23次阅读
8、0个评论
此文档下载收益归作者所有