51系列串口通讯例程.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51系列串口通讯例程

51系列串口通讯例程.rar serial.c, //?题目:串口初始化C代码? ?? //?要求:? ?? //?1.波特率1200bps,无奇偶校验,停止位1,数据位8? ?? //?2.定时器T1做波特率发生器? ????? //?软件模拟测试说明:? ?? //?1.这个测试采用查询方式进行串口通讯? ?? //?2.将软件仿真环境的晶震设为11.0592?MHz? ?? //?3.软件模拟全速运行,?观察波特率是1200bps? ?? //?4.在串口1中输入数字或字母,可观察到通讯是否有误。? ?????? //#pragma?src? ????? #include?REG51.H? ????? //串口初始化? ?? void?serial_init(void)??? {??? ???//ET1??=?0;?????//CLR???0ABH??????;禁止T1中断? ?? ???TMOD?=?0x20;??//MOV???89H,#20H??;timer?1?mode?2:?8-Bit?reload(定时器T1?模式2:?8位自动初值重装)? ?? ???TH1??=?0xE8;??//MOV???8DH,#0E8H? ?? ???TL1??=?0xE8;??//MOV???8BH,#0E8H?;1200bps,?11.059? ?? ???TR1??=?1;?????//SETB??8EH???????;启动定时器1? ?? ???SCON?=?0x50;??//?mode?1:?10-bit?UART,?enable?receiver(模式1:?10位异步发送/接收,?使能接收允许位) ???//SM1??=?1;?????//?????? ??????;串行口?模式1? ?? ???//SM0??=?0;? ?? ???//REN??=?1;?????//????????????????;允许串行中断接收? ? ???SM2??=?1;?????//SETB??O9DH??????;收到有效的停止位时才将RI置1? ???ES???=?1;?????//SETB??0ACH??????;允许串行中断?? ?? ???EA???=?1;?????//SETB??0AFH??????;总中断开? ?? }??? //中断方式处理串口数据? ?? void?serial(void)?interrupt?4?using?1??? {??? ????if(RI)??? ????{??? ???????//?RI?=?0;? ?? ??????//?串口接收,?采用临时缓冲? ?? ????}??? #if?0? ?? ???if(TI)??? ???{??? ??????//?TI?=?0;? ?? ??????//?串口发送,?没有必要使用中断方式? ?? ???}??? #endif? ?? }??? //?查询方式接收串口数据? ?? unsigned?char?getchar(void)??? {??? ???while(!RI);//?没有收到串口数据则一直等待? ?? ???RI=0;??? ???return?SBUF;??? }??? //?查询方式发送串口数据? ?? void?putchar(unsigned?char?ch)??? {??? ???SBUF=ch;??? ???while(!TI);??? ???TI=0;??? }??? code?unsigned?char?HEX_TAB?[]=0123456789ABCDEF;??? void?puthex(unsigned?char?ch)??? {??? ???unsigned?char?i,j;??? ???i=ch4;??? ???j=ch0x0f;??? ???putchar(HEX_TAB[i]);??? ???putchar(HEX_TAB[j]);??? }??? 51系列串口通讯例程.rar test.c //?采用查询方式进行串口通讯的例子? ?? //?采用这种方式的弊端:?? ?? //?1.如果对方没有发送数据,则本机无限等待,而不能做其它事情? ?? //?2.如果对方发送数据而本机正做其它事情,那么有可能丢失数据。? //?因此实际上串口接收常采用中断方式,串口发送则不需要。? ?? #include?REG51.H? ?? extern?void?serial_init(void);??? extern?unsigned?char?getchar(void);??? extern?void?putchar(unsigned?char?ch);??? extern?void?puthex(unsign

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档