- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用定时器_T0_或_T1_模拟串行口程序.doc
/*************************************************************************用定时器 T0 或 T1 模拟串行口程序。最高波特率(12 clock):??? 本程序收、发波特率相同。
??? 11.059MHz -- 最高波特率 收: 9600,? 最低波特率:300?? ??? 30.000MHz -- 最高波特率 收: 28800? 最低波特率:300?? ??? 40.000MHz -- 最高波特率 收: 38400? 最低波特率:300?? ?????? ...使用说明:??? 1. 本程序使用一个定时器和任意 2 个 I/O 口模拟一个串行口。??? 2. 1位起始位,8位数据位,1位停止位。发数据位时先发低位。??? 3. 支持半双工通讯。收、发波特率相同。??? 4. 应把定时器中断优先级设置为最高级。??? 5. 本程序每接收一个字节后就把它放到一个队列缓冲区中(也可使用环行缓冲区),?????? 待缓冲区满后,将缓冲区中的内容原样发回。这是为了测试多字节连续收发的?????? 能力和简化程序。实际应用中应防止缓冲区溢出。? ??? 6. 由接收转换到发送时要先调用? soft_send_enable ();?????? 由发送转换到接收时要先调用? soft_receive_enable ()。??? 7. 发送最后一个字节后如果要立刻转为接收,必须等待最后一个字节后发送完毕?????????? while ( rs_f_TI == 0)? ;? // 等待最后一个字节发送完毕**************************************************************************编程说明:----------------发送:??? 由接收转换到发送时要先调用 soft_send_enable (), 它为发送做初始化的工作。以后就可以调用 rs_send_byte () 启动发送一个字节的过程。??? 发送口平时为高电平,rs_send_byte ()函数使发送口变为低电平开始发送起始位; 同时设置和启动定时器,为发送数据位在预定的时刻产生定时器中断。发送数据位和停止位都在定时器的中断服务程序中进行。??? 中断服务程序中处理 4 种情况:发送数据位、发送停止位、发送完毕、处理错误。----------------接收:??? 由发送转换到接收时要先调用 soft_receive_enable (), 它为接收做初始化的工作。定时器以 3 到 4 倍波特率的频率产生中断(参见 rs_TEST0 的定义)检测 PC机发送的起始位。一旦检测到起始位,立刻把定时器产生中断的频率调整到与波特率相同,准备在下一个定时器中断中接收第 1 个数据位。??? 中断服务程序中处理以下情况:??? 1. 收到的是 PC 机发送的起始位: 调整定时器产生中断的频率与波特率相同。??? 2. 收到第 8 位数据位: 存储接收到的字节。??? 3. 收到第 1--7 位数据位: 存储到收、发移位暂存器。??? 4. 收到停止位: 调用 soft_receive_enable(),检测 PC 机发出的下一个起始位。 ??? 5. 处理出错的情况。**************************************************************************/
#i nclude reg52.hsfr16?DPTR = 0x82;
typedef?unsigned char?INT8U;typedef?unsigned int?INT16U;
#define?YES?? 1#define?NO??? 0
//定义使用哪个定时器, 只可定义一个?? //#define TIMER_0#define TIMER_1
//定义串口收、发送管脚。? sbit rs_TXD = P2^1;sbit rs_RXD = P2^0;
//根据定时器确定参数? #ifdef TIMER_0??? #define TMOD_AND_WORD?? 0xF0;??? #define TMOD_TIME_MODE? 0x01;??? #define TMOD_COUNT_MODE 0x05;????? //设置计数模式位? ??? sbit? TCON_ENABLE_TIMER = TCON^4;??? sbit? TCON_TFx = TCON^5;?????????? //中断标志位? ??? sb
您可能关注的文档
最近下载
- 《SJ20941-2005-锂离子蓄电池通用》.pdf
- 五年级语文上册部编版1—4单元主题阅读(知识梳理+阅读).docx VIP
- 人教版《劳动教育》六上 劳动项目一 《使用洗衣机》 课件.pptx
- 06G101-6独立条形基础、桩承台.pdf
- 四年级语文上册部编版1—4单元主题阅读(知识梳理+阅读).pdf VIP
- 第6讲水和溶液-全国初中化学竞赛试题精编教师版.doc VIP
- 养老机构院感培训.pptx VIP
- 【中国现代文学史(朱栋霖版】805页全套课件.ppt
- NCT一级模拟测试题及答案.doc
- Siemens西门子工业SINUMERIK ONE 最终调试步骤 SINUMERIK ONE 最终调试步骤使用手册.pdf
文档评论(0)