📄 uart.c
字号:
/*--------------------------------------------------------------------*-
Uart.C (V1.00)
-*---------------------------------------------------------------------*/
/*
* Copyright (c) 2006,吴水林
* All rights reserved
*
* 文件名称: Uart.C
* 文件标识:
* 摘 要: 串行口
*
* 当前版本: V1.0 * 取代版本:
* 作 者: wsl * 修 改:
* 版本信息: 2006-09-14 * 修改信息:
*/
//***********************************************************************
#include <string.h>
#include"main.H"
#include"Port.H"
#include"SCH51.H"
#include "MMI.h"
#include"Uart.h"
#include"LedDisp.h"
void uart_send_byte(const unsigned char val);
/*-----------------------------------------------------------------------*-
* 函数名称: Uart_Init()
* 参 数: BaudRate 波特率
* 返 回:
* 函数功能: 串行口初始化
*
* 说 明:
*
* 当前版本: V1.0 * 取代版本:
* 作 者: wsl * 修 改:
* 版本信息: 2006-09-14 * 修改信息:
-*-----------------------------------------------------------------------*/
void Uart_Init(const eBaudRate Value)
{
TMOD &= 0x0f;
TMOD |= 0x20;
TH1 = Value;
TL1 = Value;
PCON &= 0x7f;
SCON = 0x50;
TR1 = 1;
ES = 1;
}
/*-----------------------------------------------------------------------*-
* 函数名称: Uart_ISR()
* 参 数: xx
* 返 回: xx
* 函数功能: 串行口中服函数
*
* 说 明:
*
* 当前版本: V1.0 * 取代版本:
* 作 者: wsl * 修 改:
* 版本信息: 2006-09-14 * 修改信息:
-*-----------------------------------------------------------------------*/
void UartInterruptServer(void) interrupt 4
{
ES = 0;
RI = 0;
ES = 1;
}
/******************************************************************************
* Function Name : uart_send_byte
* Parameter : val
* Return Value : void
* Description : The UART send byte as raw date
* Created : 2005.6.1 by wangsw
* Modified : -
******************************************************************************/
void uart_send_byte(const unsigned char val)
{
bit bES;
bES = ES;
ES = 0;
SBUF = val;
while(!TI);
TI = 0;
ES = bES;
}
/*-----------------------------------------------------------------------*-
* 函数名称: send_sec_msg()
* 参 数: xx
* 返 回: xx
* 函数功能: 向PC发送秒信息
*
* 说 明:
*
* 当前版本: V1.0 * 取代版本:
* 作 者: wsl * 修 改:
* 版本信息: 2006-09-14 * 修改信息:
-*-----------------------------------------------------------------------*/
void send_sec_msg(void)
{
uart_send_byte(now.sec / 10 + 0x30);
uart_send_byte(now.sec % 10 + 0x30);
uart_send_byte(0x0d);
uart_send_byte(0x0a);
}
/******************************************************************************
* Function Name : uart_send_string
* Parameter : pData, len
* Return Value : void
* Description : The UART send string,when len = 0,auto detect string len
* Created : 2005.6.1 by wangsw
* Modified : -
******************************************************************************/
void uart_send_string(unsigned char *pData, unsigned char len)
{
bit bES;
unsigned char i, j;
bES = ES;
ES = 0;
if(len)
{
i = len;
while(i--)
{
SBUF = *pData++;
while(!TI);
TI = 0;
}
}
else
{
i = strlen(pData);
while(i--)
{
j = *pData++;
if(j == 0x0A)
{
SBUF = 0x0D;
while(!TI);
TI = 0;
}
SBUF = j;
while(!TI);
TI = 0;
}
}
ES = bES;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -