一个关于89c52的t2波特率发生器程序

在网上找了很久 没什么比较合适的代码 啃了半天手册 并且问了老师和前辈(感谢前辈老师不嫌弃我问这么简单的问题 现在想起来觉得太羞耻了)终于写出了 主要是波特率那边算来算去不对 现在终于会算了!!!!(太感动了)

这里是9600波特率 12mhz的晶振 经过串口助手写的

#include "reg52.h"	
sfr T2MOD=0XC9;
unsigned char command =0x00;
void T2_Init()
{
	T2MOD|=0X02;
	T2CON=0X34;
	TH2=RCAP2H=0XFF;
	TL2=RCAP2L=0XD9;
	SCON=0X50;
	TR2=1;
	ES=1;
	EA=1;
	}

void Send_Byte(unsigned char dat)
{
	SBUF=dat;
	while(TI==0);
	TI=0;
	}

void Receive()interrupt 4
{
   if(RI==1)
   {
    RI=0;
   	command=SBUF;
	Send_Byte(command+1);
   		}
	
	}
void main()
{
	T2_Init();
	Send_Byte(0x03);
	Send_Byte(0x04);
	while(1);
	}

  注 在烧录完后记得重新冷启动才能收到数据

附波特率计算公式 (出自芯片手册)如11.0592mhz的就代入11059200 我就在这里少了m就算错了

猜你喜欢

转载自www.cnblogs.com/lulu-gogogo/p/12551534.html