用定时器 t0 或 t1 模拟串行口程序

用定时器 t0 或 t1 模拟串行口程序

ID:9366523

大小:52.50 KB

页数:9页

时间:2018-04-29

用定时器 t0 或 t1 模拟串行口程序_第1页
用定时器 t0 或 t1 模拟串行口程序_第2页
用定时器 t0 或 t1 模拟串行口程序_第3页
用定时器 t0 或 t1 模拟串行口程序_第4页
用定时器 t0 或 t1 模拟串行口程序_第5页
资源描述:

《用定时器 t0 或 t1 模拟串行口程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/*************************************************************************用定时器T0或T1模拟串行口程序。最高波特率(12clock):   本程序收、发波特率相同。   11.059MHz--最高波特率收:9600, 最低波特率:300     30.000MHz--最高波特率收:28800 最低波特率:300     40.000MHz--最高波特率收:38400 最低波特率:300        ...使用说明:   1

2、.本程序使用一个定时器和任意2个I/O口模拟一个串行口。   2.1位起始位,8位数据位,1位停止位。发数据位时先发低位。   3.支持半双工通讯。收、发波特率相同。   4.应把定时器中断优先级设置为最高级。   5.本程序每接收一个字节后就把它放到一个队列缓冲区中(也可使用环行缓冲区),      待缓冲区满后,将缓冲区中的内容原样发回。这是为了测试多字节连续收发的      能力和简化程序。实际应用中应防止缓冲区溢出。    6.由接收转换到发送时要先调用 soft_send_enable();

3、      由发送转换到接收时要先调用 soft_receive_enable()。   7.发送最后一个字节后如果要立刻转为接收,必须等待最后一个字节后发送完毕          while(rs_f_TI==0) ; //等待最后一个字节发送完毕**************************************************************************编程说明:----------------发送:   由接收转换到发送时要先调用soft_send_enab

4、le(),它为发送做初始化的工作。以后就可以调用rs_send_byte()启动发送一个字节的过程。   发送口平时为高电平,rs_send_byte()函数使发送口变为低电平开始发送起始位;同时设置和启动定时器,为发送数据位在预定的时刻产生定时器中断。发送数据位和停止位都在定时器的中断服务程序中进行。   中断服务程序中处理4种情况:发送数据位、发送停止位、发送完毕、处理错误。----------------接收:   由发送转换到接收时要先调用soft_receive_enable(),它为接收做

5、初始化的工作。定时器以3到4倍波特率的频率产生中断(参见rs_TEST0的定义)检测PC机发送的起始位。一旦检测到起始位,立刻把定时器产生中断的频率调整到与波特率相同,准备在下一个定时器中断中接收第1个数据位。   中断服务程序中处理以下情况:   1.收到的是PC机发送的起始位:调整定时器产生中断的频率与波特率相同。   2.收到第8位数据位:存储接收到的字节。   3.收到第1--7位数据位:存储到收、发移位暂存器。   4.收到停止位:调用soft_receive_enable(),检测PC机发

6、出的下一个起始位。   5.处理出错的情况。**************************************************************************/#includesfr16 DPTR=0x82;typedef unsignedchar INT8U;typedef unsignedint INT16U;#define YES  1#define NO   0//定义使用哪个定时器,只可定义一个  //#defineTIMER_0#defi

7、neTIMER_1//定义串口收、发送管脚。 sbitrs_TXD=P2^1;sbitrs_RXD=P2^0;//根据定时器确定参数 #ifdefTIMER_0   #defineTMOD_AND_WORD  0xF0;   #defineTMOD_TIME_MODE 0x01;   #defineTMOD_COUNT_MODE0x05;     //设置计数模式位    sbit TCON_ENABLE_TIMER=TCON^4;   sbit TCON_TFx=TCON^5;          /

8、/中断标志位    sbit IE_ETx=IE^1;              //中断允许位为ET0    sbit IP_PTx=IP^1;              //中断优先级    sfrrs_timerL=0x8A;             //TL0   sfrrs_timerH=0x8C;             //TH0#endif#ifdefTIMER_1   #defineTMOD_AND_WORD  0x0F;   #def

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

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

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