cc2530串口UART0通信实验
- 格式:doc
- 大小:35.00 KB
- 文档页数:4
基于CC2530的ZigBee无线串口通信设计作者:李艳丽吴莉来源:《电子技术与软件工程》2015年第12期摘要分析了基于ZigBee协议的无线传感器网络的关键技术和特点。
在ZigBee技术和无线数据传输的实现方法的基础上,搭建了基于CC2530单片机系统的汇聚网关及节点,最终实现设备终端与PC机之间的数据通信。
【关键词】ZigBee CC2530 串口通信1 ZigBee技术ZigBee技术它是一种短距离、低数据速率、低功耗、低成本的双向无线通信技术。
ZigBee技术适用于短距离的无线控制系统,为自动控制和远程控制领域的技术发展提供了有效的协议标准。
主要应用领域有农作物生长及环境监控、物流管理及应用、医疗监控设施、交通管理和监督以及军事侦察等。
1.1 ZigBee技术的无线传输的优势ZigBee、蓝牙以及IEEE802.11B标准都是工作在2.4G频段的无线通信标准,表1中标明了三种标准的特点及应用范围。
蓝牙技术的数据传输速率较低,传输距离最短,因此,可以应用于如手机与手机之间少量数据的传输。
其缺点是系统的抗干扰能力不强和高成本的制造费用。
IEEE802.11B最高数据传输速率最高,数据传输距离,支持无线上网笔记本、电脑、手机等使用WiFi功能实现上网。
ZigBee协议是一种短距离无线传感器网络与控制协议,主要优势在于传输控制信息时,数据量相对来说较小,特别适用于电池供电的系统。
1.2 ZigBee技术的特点ZigBee技术具有如下优点:(1)可靠性高。
(2)成本低、功耗小。
(3)高安全性。
2 硬件设计2.1 CC2530的内部结构CC2530单片机是一款支持IEEE 802.15.4协议并且能够兼容51内核的无线射频单片机。
[3]它是TI公司推出的第二代ZigBee平台和SoC解决方案。
内部集成了高性能的RF收发器、工业标准的8051内核、256K的ROM和8K的RAM。
能够支持5种工作模式,满足了对系统的低功耗要求;例如在接收模式时电流损耗为24mA,发送模式时为29mA。
无线通信技术综合训练实验指导书 ICC2530 基础实验五ADC 实验ADC 支持多达 14 位模数转换,有效位数(ENOB)多达 12 位。
ADC 包含一个具有多达 8 个独 立配置通道的模拟多路转换器,一个参考电压发生器,并且通过 DMA 将转换结果写入存储器。
具 有多种运行模式。
本实验学习 ADC 的一般设置和运行,由 CPU 存取的 ADC 控制和状态寄存器的 使用方法。
一、实验目的通过本实验的学习,熟悉 CC2530 芯片 ADC 模拟数字转换的配置和使用方法。
1. 2. 3. 4. 5. 了解 CC2530 芯片 ADC 原理; 熟悉 CC2530 芯片 ADC 相关寄存器配置和使用方法; 掌握 CC2530 芯片片内温度检测方法; 掌握 CC2530 芯片 1/3VDD 电源电压检测方法; 掌握 CC2530 芯片 VDD 电源电压检测方法。
二、实验内容1. 2. 在 CC2530 节点开发板上, 使用 ADC 进行片内温度单次采样, 将采集的电压值转换为温度 值并显示在 LCD 上; 在 CC2530 节点开发板上, 使用 ADC 进行电源电压单次采样, 将采集的电压值显示在 LCD 上。
三、实验条件1. 2. 3. 4. 5. 6. 用户 PC 机 (装有 Microsoft Windows XP 系统) 正确安装 IAR Embedded Workbench for 8051 集成开发环境; CC2530 节点开发板(插有 CC2530 模块,带 LCD 模块)1 块; CC Debugger 多功能调试器 1 个; USB 连接线; 杜邦线若干; 5V 电源 1 个。
四、实验原理1. ADC 概况 CC2530 芯片 ADC 结构框图如图 3-5-1 所示。
图 3-5-1ADC 结构框图第 69 页实验五 ADC 实验ADC 的主要特征如下: ADC 转换位数可选,8 到 14 位; 8 个独立的输入通道,单端或差分输入; 参考电压可选为内部、外部单端、外部差分或 AVDD5; 中断请求产生; 转换结束时 DMA 触发; 温度传感器输入; 电池电压检测。
zigbee基础应用(五)uart串口通信#include <iocc2530.h>#include <string.h>#define uint unsigned int#define uchar unsigned char//定义控制灯的端口#define LED1 P1_0#define LED2 P1_1void initUART0(void);void InitialAD(void);void UartTX_Send_String(uchar *Data,int len);uchar Recdata[30]="hello zigbee!\n";uchar RXTXflag = 1;uchar temp;uint datanumber = 0;uint stringlen;/************************************************************** **串口发送字符串函数*************************************************************** */void UartTX_Send_String(uchar *Data,int len){int j;for(j=0;j<len;j++){U0DBUF = *Data++;while(UTX0IF == 0);UTX0IF = 0;}}#if 0/************************************************************** **初始化串口0函数*************************************************************** */void initUART0(void){CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振while(CLKCONSTA & 0x40); //等待晶振稳定CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZPERCFG = 0x00; //位置1 P0口P0SEL = 0x3c; //P0用作串口P2DIR &= ~0XC0; //P0优先作为UART0 U0CSR |= 0x80; //串口设置为UART方式U0GCR |= 11;U0BAUD |= 216; //波特率设为115200UTX0IF = 1; //UART0 TX中断标志初始置位1U0CSR |= 0X40; //允许接收IEN0 |= 0x84; //开总中断,接收中断}/************************************************************** **串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.*************************************************************** */#pragma vector = URX0_VECTOR__interrupt void UART0_ISR(void){URX0IF = 0; //清中断标志temp = U0DBUF;}#else/************************************************************** **初始化串口0函数*************************************************************** */void initUART0(void){CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振while(CLKCONSTA & 0x40); //等待晶振稳定CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZPERCFG = 0x00; //位置1 P0口P0SEL = 0x3c; //P0用作串口P2DIR &= ~0XC0; //P0优先作为UART0 U0CSR |= 0x80; //串口设置为UART方式U0GCR |= 11;U0BAUD |= 216; //波特率设为115200UTX0IF = 1; //UART0 TX中断标志初始置位1U0CSR |= 0X40; //允许接收// IEN0 |= 0x84; //开总中断,接收中断}/************************************************************** **主函数*************************************************************** */void main(void){P1DIR = 0x03; //P1控制LEDLED1 = 1;LED2 = 1; //关LEDinitUART0();stringlen = strlen((char *)Recdata);UartTX_Send_String(Recdata,stringlen);while(1){if(RXTXflag == 1) //接收状态{if( URX0IF == 1){LED2=0; //接收状态指示URX0IF = 0; //清中断标志temp = U0DBUF;if((temp!='#')&&(datanumber<50)) //’#‘被定义为结束字符,最多能接收50个字符{Recdata[datanumber++] = temp;}else{RXTXflag = 3; //进入发送状态}if(datanumber == 50){RXTXflag = 3;}temp = 0;LED2=1; //接收状态指示}}if(RXTXflag == 3) //发送状态{UartTX_Send_String("send:",5);LED2 = 1; //关LED2LED1 = 0; //发送状态指示U0CSR &= ~0x40; //不能收数UartTX_Send_String(Recdata,datanumber); UartTX_Send_String("\n",1);U0CSR |= 0x40; //允许接收RXTXflag = 1; //恢复到接收状态datanumber = 0; //指针归0LED1 = 1; //关发送指示memset(Recdata, 0, sizeof(Recdata));}}}#endif。
实验四UART串口通信学院:研究生院学号:1400030034姓名:张秋明一、实验目的及要求设计一个UART串口通信协议,实现“串<-->并”转换功能的电路,也就是“通用异步收发器”。
二、实验原理UART是一种通用串行数据总线,用于异步通信。
该总线双向通信,可以实现全双工传输和接收。
在嵌入式设计中,UART用来主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。
UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。
其中各位的意义如下:起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
资料位:紧接着起始位之后。
资料位的个数可以是4、5、6、7、8等,构成一个字符。
通常采用ASCII码。
从最低位开始传送,靠时钟定位。
奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。
可以是1位、1.5位、2位的高电平。
由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
波特率:是衡量资料传送速率的指标。
表示每秒钟传送的符号数(symbol)。
一个符号代表的信息量(比特数)与符号的阶数有关。
例如资料传送速率为120字符/秒,传输使用256阶符号,每个符号代表8bit,则波特率就是120baud,比特率是120*8=960bit/s。
这两者的概念很容易搞错。
三、实现程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity uart isport(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_rx: in std_logic; --RS232接收数据信号;rs232_tx: out std_logic --RS232发送数据信号;); end uart;architecture behav of uart iscomponent uart_rx port(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_rx: in std_logic; --RS232接收数据信号clk_bps: in std_logic; --此时clk_bps的高电平为接收数据的采样点bps_start:out std_logic;--接收到数据后,波特率时钟启动置位rx_data: out std_logic_vector(7 downto 0); --接收数据寄存器,保存直至下一个数据来到rx_int: out std_logic --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送);end component;component speed_select port(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号clk_bps: out std_logic; --此时clk_bps 的高电平为接收或者发送数据位的中间采样点bps_start:in std_logic --接收数据后,波特率时钟启动信号置位);end component;component uart_tx port(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_tx: out std_logic; --RS232接收数据信号clk_bps: in std_logic; --此时clk_bps 的高电平为接收数据的采样点bps_start:out std_logic;--接收到数据后,波特率时钟启动置位rx_data: in std_logic_vector(7 downto 0); --接收数据寄存器,保存直至下一个数据来到rx_int: in std_logic --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送模块,使得串口正在进行接收数据的时候,发送模块不工作,避免了一个完整的数据(1位起始位、8位数据位、1位停止位)还没有接收完全时,发送模块就已经将不正确的数据传输出去);end component;signal bps_start_1:std_logic;signal bps_start_2:std_logic;signal clk_bps_1:std_logic;signal clk_bps_2:std_logic;signal rx_data:std_logic_vector(7 downto 0);signal rx_int:std_logic;beginRX_TOP: uart_rx port map(clk=>clk,rst_n=>rst_n,rs232_rx=>rs232_rx,clk_bps=>clk_bps_1,bps_start=>bps_start_1,rx_data=>rx_data,rx_int=>rx_int);SPEED_TOP_RX: speed_select port map(clk=>clk,rst_n=>rst_n,clk_bps=>clk_bps_1,bps_start=>bps_start_1);TX_TOP:uart_tx port map(clk=>clk, --系统时钟rst_n=>rst_n, --复位信号rs232_tx=>rs232_tx, --RS232发送数据信号clk_bps=>clk_bps_2, --此时clk_bps 的高电平为发送数据的采样点bps_start=>bps_start_2,--接收到数据后,波特率时钟启动置位rx_data=>rx_data, --接收数据寄存器,保存直至下一个数据来到rx_int=>rx_int --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送模块,使得串口正在进行接收数据的时候,发送模块不工作,避免了一个完整的数据(1位起始位、8位数据位、1位停止位)还没有接收完全时,发送模块就已经将不正确的数据传输出去);SPEED_TOP_TX: speed_select port map(clk=>clk,rst_n=>rst_n,clk_bps=>clk_bps_2,bps_start=>bps_start_2);end behav;-----------------------------------------------------------------------------------------------------------------------3个子模块------------------------------------------------------------------------------异步接收模块-------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity uart_rx isport(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_rx: in std_logic; --RS232接收数据信号clk_bps: in std_logic; --此时clk_bps的高电平为接收数据的采样点bps_start:out std_logic;--接收到数据后,波特率时钟启动置位rx_data: out std_logic_vector(7 downto 0); --接收数据寄存器,保存直至下一个数据来到rx_int: out std_logic --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送模块,使得串口正在进行接收数据的时候,发送模块不工作,避免了一个完整的数据(1位起始位、8位数据位、1位停止位)还没有接收完全时,发送模块就已经将不正确的数据传输出去); end uart_rx;architecture behav of uart_rx issignal rs232_rx0: std_logic;signal rs232_rx1: std_logic;signal rs232_rx2: std_logic;signal rs232_rx3: std_logic;signal neg_rs232_rx:std_logic;signal bps_start_r:std_logic;signal num:integer;signal rx_data_r:std_logic_vector(7 downto 0); --串口接收数据寄存器,保存直至下一个数据到来beginprocess(clk,rst_n)beginif (rst_n='0')thenrs232_rx0<='0';rs232_rx1<='0';rs232_rx2<='0';rs232_rx3<='0';elseif (rising_edge(clk)) thenrs232_rx0<=rs232_rx;rs232_rx1<=rs232_rx0;rs232_rx2<=rs232_rx1;rs232_rx3<=rs232_rx2;end if;end if;neg_rs232_rx <=rs232_rx3 and rs232_rx2 and not(rs232_rx1)and not(rs232_rx0);end process;process(clk,rst_n)beginif (rst_n='0')thenbps_start_r<='0';rx_int<='0';elseif (rising_edge(clk)) thenif(neg_rs232_rx='1') then--接收到串口数据线rs232_rx 的下降沿标志信号bps_start_r<='1'; --启动串口准备数据接收rx_int<='1';--接收数据中断信号使能else if((num= 15) and (clk_bps='1')) then --接收完有用数据信息bps_start_r<='0'; --数据接收完毕,释放波特率启动信号rx_int<='0';--接收数据中断信号关闭end if;end if;end if;end if;bps_start<=bps_start_r;end process;process(clk,rst_n)beginif (rst_n='0')thenrx_data_r<="00000000";rx_data<="00000000";num<=0;elseif (rising_edge(clk)) thenif(clk_bps='1')thennum<=num+1;case num iswhen 1=>rx_data_r(0)<=rs232_rx;--锁存第0bitwhen 2=>rx_data_r(1)<=rs232_rx;--锁存第0bitwhen 3=>rx_data_r(2)<=rs232_rx;--锁存第0bitwhen 4=>rx_data_r(3)<=rs232_rx;--锁存第0bitwhen 5=>rx_data_r(4)<=rs232_rx;--锁存第0bitwhen 6=>rx_data_r(5)<=rs232_rx;--锁存第0bitwhen 7=>rx_data_r(6)<=rs232_rx;--锁存第0bitwhen 8=>rx_data_r(7)<=rs232_rx;--锁存第0bitwhen 10=>rx_data<=rx_data_r;when 11=>num<=15;when others=>null;end case;if(num=15) thennum<=0;end if;end if;end if;end if;end process;end behav;---------------------------------波特率控制模块-----------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity speed_select isport(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号clk_bps: out std_logic; --此时clk_bps的高电平为接收或者发送数据位的中间采样点bps_start:in std_logic--接收数据后,波特率时钟启动信号置位或者开始发送数据时,波特率时钟启动信号置位);end speed_select;architecture behav of speed_select issignal cnt:std_logic_vector(12 downto 0);signal clk_bps_r:std_logic;constant BPS_PARA:integer:=5207;constant BPS_PARA_2:integer:=2603;beginprocess(clk,rst_n)beginif (rst_n='0')thencnt<="0000000000000";elseif (rising_edge(clk)) thenif((cnt=BPS_PARA)or(bps_start='0')) thencnt<="0000000000000"; --波特率计数器清零elsecnt<=cnt+'1';--波特率时钟计数启动end if;end if;end if;end process;process(clk,rst_n)beginif (rst_n='0')thenclk_bps_r<='0';elseif (rising_edge(clk)) thenif(cnt=BPS_PARA_2) thenclk_bps_r<='1'; --clk_bps_r高电平为接收数据位的中间采样点,同时也作为发送数据的数据改变点elseclk_bps_r<='0'; --波特率计数器清零end if;end if;end if;clk_bps<=clk_bps_r;end process;end behav;---------------------------------异步发送模块-------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity uart_tx isport(clk : in std_logic; --系统时钟rst_n: in std_logic; --复位信号rs232_tx: out std_logic; --RS232接收数据信号clk_bps: in std_logic; --此时clk_bps的高电平为接收数据的采样点bps_start:out std_logic;--接收到数据后,波特率时钟启动置位rx_data: in std_logic_vector(7 downto 0); --接收数据寄存器,保存直至下一个数据来到rx_int: in std_logic --接收数据中断信号,接收数据期间时钟为高电平,传送给串口发送模块,使得串口正在进行接收数据的时候,发送模块不工作,避免了一个完整的数据(1位起始位、8位数据位、1位停止位)还没有接收完全时,发送模块就已经将不正确的数据传输出去); end uart_tx;architecture behav of uart_tx issignal rx_int0: std_logic;signal rx_int1: std_logic;signal rx_int2: std_logic;signal neg_rx_int:std_logic;signal bps_start_r:std_logic;signal num:integer;signal tx_data:std_logic_vector(7 downto 0); --串口接收数据寄存器,保存直至下一个数据到来beginprocess(clk,rst_n)beginif (rst_n='0')thenrx_int0<='0';rx_int1<='0';rx_int2<='0';elseif (rising_edge(clk)) thenrx_int0<=rx_int;rx_int1<=rx_int0;rx_int2<=rx_int1;end if;end if;neg_rx_int <=not(rx_int1)and (rx_int2);end process;process(clk,rst_n)beginif (rst_n='0')thenbps_start_r<='0';tx_data<="00000000";elseif (rising_edge(clk)) thenif(neg_rx_int='1') then--接收到串口数据线rs232_rx的下降沿标志信号bps_start_r<='1'; --启动串口准备数据接收tx_data<=rx_data;--接收数据中断信号使能else if((num= 15) and (clk_bps='1')) then --接收完有用数据信息bps_start_r<='0'; --数据接收完毕,释放波特率启动信号end if;end if;end if;end if;bps_start<=bps_start_r;end process;process(clk,rst_n)beginif (rst_n='0')thenrs232_tx<='1';num<=0;elseif (rising_edge(clk)) thenif(clk_bps='1')thennum<=num+1;case num iswhen 1=>rs232_tx<='0';when 2=>rs232_tx<=tx_data(0);--发送第1bitwhen 3=>rs232_tx<=tx_data(1);--发送第2bitwhen 4=>rs232_tx<=tx_data(2);--发送第3bitwhen 5=>rs232_tx<=tx_data(3);--发送第4bitwhen 6=>rs232_tx<=tx_data(4);--发送第5bitwhen 7=>rs232_tx<=tx_data(5);--发送第6bitwhen 8=>rs232_tx<=tx_data(6);--发送第7bitwhen 9=>rs232_tx<=tx_data(7);--发送第8bitwhen 10=>rs232_tx<='1';when 11=>num<=15;when others=>null;end case;if(num=15) thennum<=0;end if;end if;end if;end if;end process;end behav;四、实验步骤1、建立新工程UART,选择芯片,型号为cyclone ii EP2C35F484C8。
/*********************头文件*************************************************/
#include
#include
/*********************宏定义*************************************************/
#define uint unsigned int
#define uchar unsigned char
//----------------LED控制端口------------------------------------------------//
#define GLED P1_0// 绿色LED定义
#define RLED P1_1// 红色LED定义
//----------------按键输入端口-----------------------------------------------//
#define KEY1 P0_0
/*********************全局变量**********************************************/
unsigned char Uart0_Rx;
unsigned char Text_Data[]="海舟物联网教育!\r\n";
/*********************函数声明***********************************************/
void Delay(uint);
void Init_LED(void);
void Init_Uart0(void);
void Init_Sysclk(void);
void Uart0_TX_Data(unsigned char *Data,int len);
/******************************************************************************
*函数名称: void Delay(uint n)
*函数功能: 软件延时函数
*入口参数:
*出口参数:
*备 注:
******************************************************************************/
void Delay(uint n)
{
uint i;
for(i=0;i
/******************************************************************************
精选文档
—
2
*函数名称: void Init_Uart0(void)
*函数功能: Uart0初始化设置
*入口参数:
*出口参数:
*备 注:
******************************************************************************/
void Init_Uart0(void)
{
PERCFG = 0x00; // 位置1 P0口
P0SEL = 0x3c; // P0_2,P0_3用作串口
P2DIR &= ~0XC0; // P0优先作为UART0
U0CSR |= 0x80; // UART方式
U0GCR |= 8;
U0BAUD |= 59; // 波特率设为9600bps
UTX0IF = 0; // UART0 TX中断标志初始置位0
U0CSR |= 0X40; // 允许接收
IEN0 |= 0x84; // 开总中断,接收中断
}
/******************************************************************************
*函数名称: void Uart0_TX_Data(unsigned char *Data,int len)
*函数功能: 串口0发送一组数据
*入口参数:
*出口参数:
*备 注:
******************************************************************************/
void Uart0_TX_Data(unsigned char *Data,int len)
{
int j;
for(j=0;j
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
/******************************************************************************
*函数名称: void Init_Sysclk()
*函数功能: 设置系统时钟
*入口参数:
*出口参数:
*备 注:
精选文档
—
3
******************************************************************************/
void Init_Sysclk(void)
{
CLKCONCMD &= ~0x40; // 设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); // 等待晶振稳定
CLKCONCMD &= ~0x47; // 设置系统主时32MHZ
}
/******************************************************************************
*函数名称: void Init_LED(void)
*函数功能: 初始化LED
*入口参数:
*出口参数:
*备 注:
******************************************************************************/
void Init_LED(void)
{
P1DIR = 0x03; // P1.0 P1.1设置为输出
RLED = 1; // 初始化LED状态
GLED = 1;
}
/******************************************************************************
*函数名称: void main(void)
*函数功能: 主函数
*入口参数:
*出口参数:
*备 注:
******************************************************************************/
void main(void)
{
Init_Sysclk(); // 初始化系统时钟
Init_Uart0(); // 串口0设置
Init_LED(); // 初始化LED
while(1)
{
Uart0_TX_Data(Text_Data,17);
Delay(50000);
Delay(50000);
Delay(50000);
}
}
精选文档
—
4
/******************************************************************************
*函数名称: void UART0_ISR(void)
*函数功能: Uart0中断服务子程序
*入口参数:
*出口参数:
*备 注:
******************************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //清中断标志
Uart0_Rx = U0DBUF;
}
/*********************结束*************************************************/