串口通信的IO控制与软件延时实现方法
2018-01-11 21:55
225 查看
串口通信的IO控制与软件延时实现方法
在这里想要记录一下stc89c51单片机串口通信的通过IO控制与软件延时的实现方法.因为一开始直接学习了使用定时器的串口通信方法,所以有很多概念并不是十分的理解,所以在这里,希望通过这篇也是自己的第一篇博客来记录这些要学习的概念.(没有提前构思好语言,有点语无伦次)发送数据时候是先发送一位起始位, 再发送待发送的8位数据位(这里要注意的是数据位是先发送低位再发送高位),最后再发送一位停止位.
首先要搞懂的概念是波特率,这个东西大概就是每秒发送的位数.所以我们通过计算就可以通过软件延时来模拟数据位的发送.
下面以1200波特率为例.
1/1200 = 8.33*e-4 sec = 8.33*e-4 * 1*e6 us = 833 us;
每一位延时833us秒实现下面程序的实现.
void main() { UartTransfer = 1; _nop_(); while(1) { UartTransfer = 0; //UartStart; Delay833us(); UartTransfer = 1; Delay833us(); UartTransfer = 0; Delay833us(); UartTransfer = 0; Delay833us(); UartTransfer = 0; Delay833us(); UartTransfer = 0; Delay833us(); UartTransfer = 0; Delay833us(); UartTransfer = 1; Delay833us(); UartTransfer = 0; Delay833us(); UartTransfer = 1; //UartStop Delay833us(); Delay500ms(); } }上面通过一位一位的发送可以在串口助手上收到字符'A';
void Uart_Byte(unsigned char myData) { unsigned char tmp = myData , i; UartTransfer = 0; //UartStart; Delay833us(); for(i=0;i<8;i++) { UartTransfer = tmp&0x01; Delay833us(); tmp >>= 1; } UartTransfer = 1; //UartStop Delay833us(); Delay500ms(); }
void main() { UartTransfer = 1; _nop_(); while(1) { Uart_Byte('t'); Uart_Byte('m'); Uart_Byte('d'); Uart_Byte('j'); Uart_Byte('w'); Uart_Byte('s'); Uart_Byte('q'); Uart_Byte('\n'); } }
相关文章推荐
- 运用软件延时方法控制P1口亮灯实验
- VB中实现延时(等待)的几种方法
- 在批处理文件里面如何控制延时执行指令(也就是实现sleep)
- C#如何实现方法的版本控制?
- 用css来控制图片大小显示的实现方法与代码
- 在VB中实现延时(等待)的几种方法
- VSS实现版本控制管理的一些使用方法
- VB中实现延时(等待)的几种方法
- VC++中对对话框中控件的控制的一种实现方法(适合初学者看)
- Delphi开发环境下利用Spcomm控件实现PC机与单片机之间串口通信的方法
- 实现子窗体控制父窗体的方法
- 软件登录的几种实现方法
- .Net中VSS实现版本控制管理的方法
- FlashGet远程控制自动下载的软件与方法
- VSS实现版本控制管理的一些使用方法
- 关于实施RUP软件过程控制的方法和标准[只是一个个人总结]
- C# 2005 简短方法实现软件仅打开一个实例的方法
- 在C#中实现软件自动升级(方法2)
- .NET平台下基于webservice,通过获取硬件cpu序列号和随机字符串序列号实现软件加密的一种方法。
- 侠诺千兆多WAN网吧路由器,实现带宽管理,流量控制,限制所需要的P2P软件