📄 uart0.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 + -