欢迎来到天天文库
浏览记录
ID:61499348
大小:93.71 KB
页数:4页
时间:2021-02-07
《单片机串口通信.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、单片机串口通信–RS232最基本的:1.异步串行通信方式2.几个参数需要设置:a)波特率(使用定时器)b)校验位、数据位、停止位(选择串口通信模式)3.编写中断服务程序。切记,RI与TI需要软件清零。几个关键寄存器:PCON:关注SMOD位。SCON:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI其中,SM0、SM1:串行口工作方式选择位:SM0、SM1 工作方式 功能描述 波特率 00 方式0 8位移位寄存器 fosc/12 01 方式1 10位UART 可变 10 方式2 11位UARTfosc/64或fosc/32 11 方式
2、3 11位UART 可变REN:接收允许控制位。TI与RI由软件清零。然后就是定时器相关的寄存器,如TMOD,TH1和TL1的初值设定,启动定时器TR1,开启中断EA,ES。常用波特率除值表:最简例程:发送(发送完成之后TI=1):#include#includevoiddelay(unsignedinti);//函数声明charcodeMESSAGE[]="小茉莉,太阳出来了(liao)。";unsignedinta;voidmain(void){SCON=0x40;//串口工作模式1,即SM0=0,SM1=1TMOD
3、=0
4、x20;//定时器工作方式2TH1=0xFD;//reloadvalue9600、数据位8、停止位1。效验位无(11.0592)TL1=0xFD;TR1=1;//开启定时器1ES=1;//开串口中断EA=1;//开总中断while(1){a=0;while(MESSAGE[a]!=' '){SBUF=MESSAGE[a];while(!TI);//等特数据传送(TI发送中断标志)。当一个字节发送完毕后系统进入中断。TI=0;//清除数据传送标志//RI与TI都需要手动清除a++;//下一个字符}delay(10000);}}/*****************
5、*********************************延时处理程序**************************************************/voiddelay(unsignedinti){unsignedcharj;for(i;i>0;i--)for(j=200;j>0;j--);}接收(接收到数据后RI=1):#include#includesbitBEEP=P1^5;unsignedcharb;voidmain(void){SCON=0x50;//REN=1允许串行接受状态,串口工作
6、模式1TMOD
7、=0x20;//定时器工作方式2TH1=0xFD;//波特率9600(11.0592M)TL1=0xFD;TR1=1;ES=1;//开串口中断EA=1;//开总中断BEEP=1;//低电平触发蜂鸣器b=0xff;while(1){BEEP=b;}}voidser()interrupt4{RI=0;b=SBUF;}收发:#includebitFlag;unsignedcharReData,SenData;voidmain(void){SCON=0x50;TMOD
8、=0x20;//定时器工作方式2TH1=0xFD;//波特率9600
9、、数据位8、停止位1。效验位无(11.0592M)TL1=0xFD;TR1=1;ES=1;//开串口中断EA=1;//开总中断Flag=0;while(1){if(Flag==1){SBUF=SenData;//SUBF接受/发送缓冲器while(TI==0);TI=0;Flag=0;}}}/****************************************************串口中断程序******************************************************/voidser_int(void)interru
10、pt4using1{RI=0;//清除RI接受中断标志ReData=SBUF;//SUBF接受/发送缓冲器SenData=ReData;Flag=1;}
此文档下载收益归作者所有