#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; // } // //}