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

📄 uart0.c

📁 我用ARM写的一些东西
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16 
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			Chenxibing
** Modified date:		2005-01-17
** Version:
** Descriptions:		UART0通讯实验,中断方式,使用FIFO。
**
********************************************************************************************************/
#include "config.h"

/*********************************************************************************************************
** 函数名称 :IRQ_UART0()
** 函数功能 :串口0接收中断服务程序
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/

uint8 RecDat0[20];
uint8 rcv_new0;
uint8 rcv_i0,snd_i0,RecLen0;
void __irq IRQ_UART0 (void)
{
	uint8 i,IIR;
	//i=0;
	while (((IIR=U0IIR)&0x01)==0)
	{
		switch(IIR&0x0e)
		{
			case 0x02:
			break;
			case 0x04:
				U0IER=U0IER&(~0x01);
				for(i=0;i<4;i++)
				RecDat0[rcv_i0++]=U0RBR;
				
				U0IER=U0IER|(0x01);	
			break;
			case 0x0c:
				U0IER=U0IER&(~0x01);
				for (i=0;i<4;i++)
				{
					
					if ((U0LSR&0x01)==0x01)
						RecDat0[rcv_i0++]=U0RBR;
				}
				snd_i0=rcv_i0;
				RecLen0=rcv_i0;
				rcv_i0=0;		
				rcv_new0=1;
				U0IER=U0IER|(0x01);
			break;
			default:
			break;
			
		}
	
	}
	

	VICVectAddr = 0x00;			// 中断处理结束
}

/*
*********************************************************************************************************
** 函数名称 :UART0_SendByte()
** 函数功能 :向串口0发送1字节数据
** 入口参数 :dat	要发送的数据
** 出口参数 :无
*********************************************************************************************************
*/
void UART0_SendByte (uint8 dat)
{
	U0THR = dat;	// 要发送的数据
}

/*
*********************************************************************************************************
** 函数名称 :UART0_SendBuf()
** 函数功能 :向串口发送8字节数据
** 入口参数 :dat	要发送的数据
** 出口参数 :无
*********************************************************************************************************
*/
void UART0_SendBuf (void)
{
	uint8 i;
	
	for (i=0; i<snd_i0; i++)
		UART0_SendByte(RecDat0[i]);
	while ((U0LSR & 0x20) == 0);	// 等待数据发送完毕
}


/*void send(void)
{
		if(rcv_new==1)
		{
			rcv_new=0;
			UART0_SendBuf();
		}
}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -