其他分享
首页 > 其他分享> > 51_串口

51_串口

作者:互联网

 

#ifndef __USART_H_
#define __USART_H_
#include <reg51.h>



void Usart_Init(void);
void uart_send_byte(unsigned char i);


#endif

  

#include "USART.h"

#define Crystal_Frequency  12000000UL		 //使用12M晶体
#define BAUD_9600 4800UL		//波特率定义为9600
/***************************************************
*								串口初始化子函数
*				T1工作在方式2,波特率9600,开串口中断
****************************************************/
void Usart_Init(void)
{
	//	EA=0; 					//暂时关闭中断
	TMOD=0x20;	 //定时器1工作在模式2,自动重装模式
	SCON=0x50;	  //串口工作在模式1
	TH1=256-Crystal_Frequency /(BAUD_9600*12*16);  //计算定时器重装值
	TL1=256-Crystal_Frequency /(BAUD_9600*12*16);
   // TH1=0XF3;		    //计数器初始值设置,注意波特率是4800的
	//TL1=0XF3;
	PCON|=0x80;    //串口波特率加倍
	//ES=1;         //串口中断允许
	TR1=1;        	//启动定时器1	
    //REN=1;         //允许接受
	//EA=1;          //允许中断
}

/***************************************************
*								串口发送字节子函数
*			
****************************************************/
void uart_send_byte(unsigned char i)
{
		SBUF = i;	//送入发送缓冲寄存器
		while(TI == 0);		//判断发送是否完成
		TI = 0;						//清除中断标志
}

/***************************************************
*								串口接受中断函数
*			
****************************************************/
//void uart(void) interrupt 4
//{
//   unsigned char uart_buf;  //接受中断缓冲器
//   if(RI)	 //是否到数据
//   {
//   	RI=0;	 //清中断请求
//	uart_buf=SBUF;
//	}
//
//}

  

 

标签:9600,uart,void,51,中断,串口,波特率
来源: https://www.cnblogs.com/54programer/p/15953152.html