/******************************************************************
UART.C file
作者:wangchaofeng
建立日期: 2007-06-28
修改日期: 2007-06-28
Copyright(C) isbit 2007-2017
All rights reserved
*******************************************************************/
#include "W79E4051.H"
#include "UART.h"
#include "mytype.h"
#define INBUF_LEN 4 //数据长度
UINT8 inbuf1[INBUF_LEN]={00,01,02,03};
UINT8 display_buffer[10]={00,01,02,03,04,05,06,07};
UINT8 checksum,count3;
bit read_flag=0;
UINT8 Sending;
code UINT8 HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
UINT8 uart_Rx_Data_Temp;
UINT8 Sending;
bit uart_Receive_Bit;
/************************************************************************
/ 外部函数位置main.c
/
*************************************************************************/
void Delay_ms(UINT16 count);
/**************************************************************************
/函数名称:InitUART
/入口参数:none
/出口参数:none
/函数功能:串口初始化函数,使用10M晶体
/
/BR=2^Smod/32 x fosc/12(256-x)
/ 定时器初值为0xf5
***************************************************************************/
void InitUART(void) //串口初始化函数,使用
{
EA=0;
TMOD&=0x0F;
TMOD|=0x20; //定时器1工作在模式2
SCON=0x50; //串口工作在模式1
TCON=0x05;
TH1=0xf4; ////Baud:4800 fosc=11.0592MHz 0xF4 16M --0XEF 12M --0XF3
TL1=0xf4;
PCON=0x80; //串口波特率加倍smod=1;
ES=1; //串行中断允许
TR1=1; //启动定时器1
REN=1; //允许接收
EA=1; //允许中断
}
/**************************************************************************
/函数名称:SerialPort
/入口参数:none
/出口参数:none
/函数功能:中断源4
/
***************************************************************************/
#if 0
void SerialPort(void) interrupt 4
{
if(RI) //收到数据
{
RI=0; //清中断请求
}
else //发送完一字节数据
{
TI=0;
Sending=0; //清正在发送标志
}
}
#endif
/*------------------------------------------------------------------------------
uart中断
------------------------------------------------------------------------------*/
#if 1
void Uart0_Isr(void) interrupt 4
{
ES=0;
if (RI)
{
RI = 0;
uart_Rx_Data_Temp= SBUF;
uart_Receive_Bit = 1;
}
else
{
TI = 0;
Sending=0; //清正在发送标?
}
ES=1;
}
#endif
/**************************************************************************
/函数名称:SendToComport
/入口参数:none
/出口参数:none
/函数功能:往串口发送一字节数据
/
***************************************************************************/
void SendToComport(UINT8 d) //往串口发送一字节数据
{
Sending=1;
SBUF=d;
while(Sending);
}
/**************************************************************************
/函数名称:prints
/入口参数:none
/出口参数:none
/函数功能:发送一个字符串
/
***************************************************************************/ |