//***********************************************************************

//                        包含文件

//***********************************************************************


#include

#include

#define         F_CPU        16000000                // 单片机主频为16MHz,用于延时子程序,熔丝位必须设置到外部高频晶振才行

#include

#include

#include

#include            //中断信号头文件

#include "Config.h"


//***********************************************************************

//                        定义变量区

//***********************************************************************

uint   tx_count=200,tx_flag=0xff;

static uchar A1,A2,A3;                                  

uchar usart_rx_data=0xff;



//***********************************************************************

//                        IO端口初始化

//***********************************************************************


void system_init()

{

    LED = 0xFF;                                 //数据口为输出


    LEDDDR=0xFF;                                                //设置为输出

}


//*************************************************************************

//   将收到的串口数据显示到LED发光二极管,可以根据自己的情况更改

//*************************************************************************


void Display_Uart(uint Data_Rev)

{


        LED = Data_Rev;

}



void usart_init()

{

  UCSR0A=0x00;                                 //单倍速模式


  UCSR0B=0x98;                                 //接收中断允许,发送结束和寄存器空中断关闭,采用查询发送模式                               


  UCSR0C=(1<异步通信无校验,8位数据1位停止位


  UBRR0H=baud_h;                               //写波特率的值


  UBRR0L=baud_l; 

}


//*************************************************************************

//                数据处理函数

//*************************************************************************

void data_do(uchar temp_d)

{

     uchar A2t;


         A1=temp_d/100;                                 //分出百,十,和个位


         A2t=temp_d%100;


         A2=A2t/10;


         A3=A2t%10;

}


//*************************************************************************

//                串口相关中断服务子程序

//*************************************************************************

                                //数据发送结束中断向量

ISR(USART0_TX_vect)             //中断服务程序

{

   delay_ms(10);                            //相关操作

}


                                    //数据接收结束中断向量

ISR(USART0_RX_vect)             //中断服务程序

{

    usart_rx_data=UDR0;             //将接收到的数据取出

        Send_SingleChar(usart_rx_data); //接收到的数据再发回电脑,显示在串口调试助手上

}

                                    //数据寄存器空中断向量


void Send_SingleChar(uchar usart_tx_data)

{

        while(!(UCSR0A&(1<

        UDR0=usart_tx_data;                                        //写入发送数据


        while(!(UCSR0A&(1<

        UCSR0A|=(1<

}


//*************************************************************************

//                        主程序

//*************************************************************************

int main(void)

{

  uchar i;


  system_init();                             //系统初始化


  usart_init();                              //usart串口初始化配置


  for(i=1;i<=200;i++)

  {

          Send_SingleChar(i);                                                 //发送01到200

  }


  SREG|=0x80;                               //开启全局中断


  while(1);


}


关键字:DMAVR-L  USART  串口发送  接收数据 引用地址:DMAVR-L的USART串口发送与接收数据示例程序

上一篇:Atmega128a的4位独立键盘控制程序
下一篇:一个单片机IO口与74HC573及数码管显示应用

推荐阅读

从当前的形势来看,我们到了讨论动力电池产业和电动汽车厂家们的博弈问题了,在一个健康的市场里面,是存在一个比较好的零整关系,是存在一个博弈过程,能够建立均衡,各方都有相对合理的利润来持续发展。 电池企业的利润      从全球来看,现在电池的供应目前已经进一步趋向于电池企业挑客户的阶段,这个趋势不仅仅是国内才有的。从总量来看,这个...
人们开发自动驾驶汽车,希望能够每年减少美国 4 万起交通事故。不过,实现这一目标至少需要数年,甚至数十年的时间。如今自动驾驶汽车事故频发,人们不经疑惑:如何应对机器人以及人工智能的全球性测验?公众不愿意参与其中该怎样解决?是否可以避免车祸? 目前公开的数据仍非常有限。自动驾驶是一个竞争十分激烈的领域,公司大都不愿意主动分享太多细节...
北京时间10月14日凌晨,苹果正式发布了iPhone 12系列四款机型,跟之前爆料的一样,iPhone 12 Pro和iPhone 12 Pro Max都加入了此前iPad Pro曾率先采用的基于dToF技术的激光雷达扫描仪,这也意味着苹果在ToF技术应用上的进一步加码,而此举或将加速引爆整个ToF市场。虽然,目前不少旗舰智能手机已经部署了ToF 3D摄像头,但是基本都是基于iToF技术,...
电流探头的应用十分广泛,其基本原理是流经导线的电流会在周围产生磁场,电流探头把磁场转化成相应的电压信号,通过和示波器配合,观察对应的电流波形。广泛应用于开关电源、马达驱动器、电子整流计、LED照明、新能源等领域。PRBTEK为您讲述常见的电流探头的分类、原理、重要技术指标,并通过实例分析了解探头之间的差别,让大家能够对探头有个基本的了解...

史海拾趣

问答坊 | AI 解惑

有用过Android的朋友吗,该怎么学

如题。Android挺火的,不知道如何入手。请教了…

查看全部问答∨

关于在WIN CE设备上的TTS(语音合成)技术开发包的两个问题,请教大家!

QUESTION1:微软的speech SDK5.1是否支持wince的各种平台? QUESTION2: 在wince上做TEXT TO SPEECH一般都有哪些免费或者是收费的SDK啊? 请各位多多指教,有什么看法和意见都可以留下来我参考,先谢谢各位! 关于在WIN CE设备上的TTS(语音合成 ...…

查看全部问答∨

关于在水表中用GPRS传输数据请教

我是GPRS的新手,公司想把GPRS用于三表行业,不知道有没有朋友做这方面开发的,我想问一下这种数据传输是不是采用TCP方式传,要用 SIM卡吗?…

查看全部问答∨

负的AVss怎么处理?

我用dsPIC30F2012做一个A/D转换,正参考电压接在Vref+上,负参考电压接在Vref-上,VCC经过滤波后接在了AVDD上,现在AVss不知如何处理,因为要求转换的电压是有负电压的,我能不能直接将AVss接地。A/D转换的参考电压选用的是Vref+和Vref-。请前辈高 ...…

查看全部问答∨

请问mpc860cpu 狗复位的等待时间是多少

请问mpc860cpu 狗复位的等待时间是多少,如何配置这个时间…

查看全部问答∨

求助,世纪风628的驱动软件

我的世纪风配套的光盘丢了,找不到了,谁能帮我想办法解决一下,在什么地方能找到驱动软件?谢谢了…

查看全部问答∨

开发一个PDA问题

  要开发一个PDA   的应用程序,这PDA支持   Windows   Mobile   5.0   用 vs2005  ,只能用   vc.net     吗?     vb ...…

查看全部问答∨

STM8S的硬SPI通不过

选择HSI做为主时钟,16MHz void CLK_Init(void) {     CLK_DeInit();     CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); } //SPI初始化 void SPI_MyInit(void) {     SPI_DeInit();     ...…

查看全部问答∨

求xilinx高手指点

 刚开始学xilinx,现在有很大问题解决不了,求高手指点,能不能留个QQ,在论坛里交流不方便,贴图很麻烦。QQ:707587938谢谢 …

查看全部问答∨

【问TI】LM3S系列IQmath如何使用?

以前编程序,用到数学公式中的三角函数,开方函数..公式的时候,自己使用泰勒展开并取到5阶.以前的IQmath用在DSP上比较多,许多的使用文档都是基于TMS320F281xx处理器的,现在好像IQmath能用在LM3S芯片上.麻烦问下TI专家,IQmath如何使用,其中的cmd文件如 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved