51单片机-串口通信(电脑向串口助手发送数据不接收)

80C52中的串口通过SCON寄存器配置波特率位可变的,因此,需要通过计算定时器1的参与,在定时器配置过程中选择定时器的相关寄存器TMOD来配置定时器的模式为模式2(8位自动重装定时器,如上图,TL1为计数器,TH1为保存重装的值,TL1当从0计数到255时,接下来就会产生溢出,溢出时,硬件就会自动触发一个中断事件,其标志位TF1就会被置1,去执行相应的中断服务函数,)在触发时间发生的过程中,此时TH1会被装载TL1上一次保留的数据,也就是说在原来的计数周期上继续计数,保持一个连续性,例如,我们用十进制计数,当TL1记满为10,此时TL1继续累计到11(溢出了),就会触发一个中断事件,TL1的这个数值10就会被保存到TH1中,然后,TL1在执行的时候就会从10开始计数。就相当于TH1的值装入了TL1,然后接下来的重装值就会从TH1重新加载,一般情况下,TL1和TH1的值一样,(前几个实验我们的定时器0配置是采用的16位没有重装的,每一次进入中断还要把初始值恢复配置的初始值,如下图代码0 = 0x66;        //设置定时初值
    TH0 = 0xFC;        //设置定时初值  ,,还要重新赋初值),而自动重装就时自动完成,无需人工干预,硬件自动完成。方便的一批(Whappy个人理解,如有不好请各路神仙指教)

/*定时器中断函数模板
void Timer0_Rountine(void)  interrupt 1
{
	static unsigned int T0Count ;  //Timer0_Rountine(void) 函数结束之后T0Count保留其原来的值
	
	TL0 = 0x66;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	
	T0Count++;
	if(T0Count >= 1000)
	{
		T0Count = 0;
		P2_0 = ~P2_0;
	}	
}
*/

(电脑向串口助手发送数据不接收)

main.c

#include <REGX52.H>
#include "Delay.h"

unsigned char Sec;

//软件生成
//void UartInit(void)		//9600bps@11.0592MHz
//{
//	PCON |= 0x80;		//使能波特率倍速位SMOD
//	SCON = 0x50;		//8位数据,可变波特率
//	TMOD &= 0x0F;		//清除定时器1模式位
//	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
//	TL1 = 0xFA;		//设定定时初值
//	TH1 = 0xFA;		//设定定时器重装值
//	ET1 = 0;		//禁止定时器1中断
//	TR1 = 1;		//启动定时器1
//}


//通过PCON设置SMOD设置串口通信的波特率(通过数据手册观察发现只能选择定时器1,因此,我们需要配置定时器1)
void UART_Init()
{
	//串口配置
	SCON = 0X50;
	PCON |= 0X80;
	
	//定时器1的配置
	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x20;		//设置定时器模式
	TL1 = 0xFA;		//设置定时初值
	TH1 = 0xFA;		//设置定时初值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//定时器0开始计时
	
}

void UART_SendByte(unsigned char Byte)
{
	SBUF = Byte;  //写入数据后,硬件自动把TI置1,我们必须手动清零
	while(!TI) ;  //检测数据是否写入成功,没写入成功TI一直时0,就会一直执行空语句,直到接受数据
	TI = 0; //软件置位
}
	
void main(void)
{
	UART_Init();  	//串口初始化
	while(1)
	{	
	   	UART_SendByte(Sec);
		Sec++;
		Delay1ms(1000);
	}
}

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值