单片机的串口接收和发送数据的程序编写_第1页
单片机的串口接收和发送数据的程序编写_第2页
单片机的串口接收和发送数据的程序编写_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机的串口接收和发送数据的程序编写#includeconfig.h*串*口1的波特率*/T1作波特率发生器/在波特率加倍情况下#defineBAUD_57600256-(OSC_FREQ/192L)/57600L/254FF#defineBAUD_28800256-(OSC_FREQ/192L)/28800L/254FE#defineBAUD_19200256-(OSC_FREQ/192L)/19200L/253FD#defineBAUD_14400256-(OSC_FREQ/192L)/14400L/252FC#defineBAUD_9600256-(OSC_FREQ/192L)/9600

2、L/250FA#defineSYS_Fosc11059200L/晶振频率uint32_tCOMM_BAUD_RATE=9600;/串口波特率#defineOSC_FREQ11059200/11059200staticINT8USend_buf10=0;staticINT8URecv_buf10=0;staticINT8USendDataLen=0;staticINT8UResendDataLen=0;/*函数名:串口初始化功能描述:STC10L08XE单片机串口初始化函数返回函数:none其他说明:none*/voidUartIni(void)TMOD=0 x20;/设置T1为波特率发生器SC

3、ON=0 x50;/0101,00008位数据位,无奇偶校验PCON=0 x00;/PCON=0;TH1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);/设置为9600波特率TL1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);TR1=1;/定时器1打开REN=1;/串口1接收使能ES=1;/串口1中断使能EA=1;/串口接受函数初始化1voidUartIni1(void)SCON=0 x50;/8-bitvariableUARTTMOD=0 x20;/SetTimer1as8-bitautoreloadmodeTH1=TL1=-(SYS_F

4、osc/12/32/COMM_BAUD_RATE);/Setauto-reloadvauleTR1=1;/Timer1startrunES=1;/EnableUARTinterruptEA=1;/Openmasterinterruptswitch/*名称:*功能:*入口参数:无出口参数:无说明:*/voidUart_Isr()interrupt4using1if(RI)/*功能描述:串口发送一字节数据sbuf=data接受data=sbuf入口参数:DAT:带发送的数据返回值:none其他说明:none*/voidUart_PutByte(uint8_tDAT)ES=0;TI=0;DAT=SB

5、UF;while(TI=0);TI=0;ES=1;/*/-功能描述:串口接受一帧数据/-隶属模块:内部/-参数说明:/-返回说明:/-注:无/*/voidSendCmd(INT8Ulen)INT8Ui=0;for(i=0;ilen;i+)/数据Uart_PutByte(Send_bufi);/*/-功能描述:求和校验/-隶属模块:/-参数说明:/-返回说明:/-注:和校验的思路如下/发送的指令,去掉起始和结束。将中间的6个字节进行累加,最后取反码/接收端就将接收到的一帧数据,去掉起始和结束。将中间的数据累加,再加上接收到的校验/字节。刚好为0.这样就代表接收到的数据完全正确。/*/voidDo

6、Sum(INT8U*Str,INT8Ulen)INT16Uxorsum=0;INT8Ui;for(i=0;i8);*(Str+i+1)=(INT8U)(xorsum&0 x00ff);/*/-功能描述:串口向外发送命令包括控制和查询/-隶属模块:外部/-参数说明:CMD:表示控制指令,请查阅指令表,还包括查询的相关指令/feedback是否需要应答0:不需要应答,1:需要应答/data传送的参数/-返回说明:/-注:/*/voidUart_SendCMD(INT8UCMD,INT8Ufeedback,INT16Udat)Send_buf0=0 xff;/保留字节Send_buf1=0 x06;

7、/长度Send_buf2=CMD;/控制指令Send_buf3=feedback;/是否需要反馈Send_buf4=(INT8U)(dat8);/datahSend_buf5=(INT8U)(dat);/datalDoSum(&Send_buf0,6);/校验SendCmd(8);/发送此帧数据/*功能描述:串口发送字符串数据入口参数:*DAT:字符串指针返回值:none其他说明:API供外部使用,直观!*/voidPrintCom(uint8_t*DAT)while(*DAT)Uart_PutByte(*DAT+);/*功能描述:串口发送字符串数据直接发送hex文件OxOf等价于0f入口参数:*DAT:字符串指针返回值:none其他说明

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论