⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 《时间触发嵌入式系统设计模式》一书中的合作式调度器的算法
💻 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 + -