串口通信的定时器实现方法

本文探讨了如何在串口通信中使用定时器,详细介绍了串口通信的定时器实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

串口通信的定时器实现方法


之前使用了IO控制+软件延时的方法,模拟了串口的工作,更为重要的是了解了串口的工作原理.现在将使用定时器+中断来实现延时从而实现对延时更加精确的把控.

在这里首先提一下我们选择的定时器工作模式为 8位自动重装载 .因为避免了每次对定时器初始值的装载,所以时间也会相对准确些.
然后将提一下定时器初始值的计算方法.(这里以波特率BaudRate = 4800 为例进行计算);
当波特率为4800时,单片机的接受速率为  1/4800 s/bit, 所以定时器每隔 1/4800 s就要进入一次中断并且发送一位数据.定时器的初始值计算方法为     (256 - 初始值)* 12/11.0592M(晶振频率)  =  1/4800   ;所以可以求出初始值N;

下面给出我自己试验是的代码.是在晶振12.0M下波特率为4800下实现的;
/* 
	串口通信的定时器实现方式 
	通过定时器1,波特率4800
*/
#include <reg52.h>
#include <intrins.h>

sbit UartTransfer = P3^1;  //单片机接受
unsigned char myData,flag;
void Delay500ms();
void main()
{ 	
	ET1 = 1;				//打开定时器中断
	EA = 1;					//打开总中断
	TMOD &= 0x0f;
	TMOD |= 0x20;
	TH1 = TL1 = 0x30;  		//定时器的配置	
	flag = 0;				//标志位置零
	UartTransfer = 1;
	_nop_();	   
	_nop_();	
	while(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值