单片机IO口模拟串口程序发送+接收.doc

单片机IO口模拟串口程序发送+接收.doc

ID:51931182

大小:52.50 KB

页数:9页

时间:2020-03-19

单片机IO口模拟串口程序发送+接收.doc_第1页
单片机IO口模拟串口程序发送+接收.doc_第2页
单片机IO口模拟串口程序发送+接收.doc_第3页
单片机IO口模拟串口程序发送+接收.doc_第4页
单片机IO口模拟串口程序发送+接收.doc_第5页
资源描述:

《单片机IO口模拟串口程序发送+接收.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、前一阵一直在做单片机的程序,由于串口不够,需要用IO口来模拟出一个串口。经过若干曲折并参考了一些现有的资料,基本上完成了。现在将完整的测试程序,以及其中一些需要总结的部分贴出来。程序硬件平台:11.0592M晶振,STC单片机(兼容51)/****************************************************************在单片机上模拟了一个串口,使用P2.1作为发送端*把单片机中存放的数据通过P2.1作为串口TXD发送出去*******************

2、********************************************/#include#include#includetypedefunsignedcharuchar;inti;ucharcodeinfo[]={0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};sbitnewTXD=P2^1;//模拟串口的发送端设为P2.1voi

3、dUartInit(){SCON=0x50;//SCON:serailmode1,8-bitUARTTMOD

4、=0x21;//T0工作在方式1,十六位定时PCON

5、=0x80;//SMOD=1;TH0=0xFE;//定时器0初始值,延时417us,目的是令模拟串口的波特率为2400bpsfosc=11.0592MHzTL0=0x7F;//定时器0初始值,延时417us,目的是令模拟串口的波特率为2400bpsfosc=11.0592MHz//TH0=0xFD;//定时器0初始值,延时417us,目的是令模

6、拟串口的波特率为2400bpsfosc=18.432MHz//TL0=0x7F;//定时器0初始值,延时417us,目的是令模拟串口的波特率为2400bpsfosc=18.432MHz}voidWaitTF0(void){while(!TF0);TF0=0;TH0=0xFE;//定时器重装初值fosc=11.0592MHzTL0=0x7F;//定时器重装初值fosc=11.0592MHz//TH0=0xFD;//定时器重装初值fosc=18.432MHz//TL0=0x7F;//定时器重装初值fosc=1

7、8.432MHz}voidWByte(ucharinput){//发送启始位ucharj=8;TR0=1;newTXD=(bit)0;WaitTF0();//发送8位数据位while(j--){newTXD=(bit)(input&0x01);//先传低位WaitTF0();input=input>>1;}//发送校验位(无)//发送结束位newTXD=(bit)1;WaitTF0();TR0=0;}voidSendata(){for(i=0;i

8、WByte(info[i]);}}voidmain(){UartInit();while(1){Sendata();}}##############################################################################/****************************************************************模拟接收程序,这个程序的作用从模拟串口接收数据,然后将这些数据发送到实际串口*在单片机上模拟了一个串口,

9、使用P3.2作为发送和接收端*以P3.2模拟串口接收端,从模拟串口接收数据发至串口***************************************************************/#include#include#includetypedefunsignedcharuchar;//这里用来切换晶振频率,支持11.0592MHz和18.432MHz//#defineF18_432#defineF11_0592uchartm

10、pbuf2[64]={0};//用来作为模拟串口接收数据的缓存struct{ucharrecv:6;//tmpbuf2数组下标,用来将模拟串口接收到的数据存放到tmpbuf2中ucharsend:6;//tmpbuf2数组下标,用来将tmpbuf2中的数据发送到串口}tmpbuf2_point={0,0};sbitnewRXD=P3^2;//模拟串口的接收端设为P3.2voidUartInit(){SCON=0x50;//SC

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

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

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