历史上的今天
返回首页

历史上的今天

今天是:2025年05月18日(星期日)

正在发生

2018年05月18日 | AVR USART接收中断程序

2018-05-18 来源:eefocus

使用AVR的USART进行自发自收(将发送引脚RXD短接到接收引脚TXD),发出数据:0,1,2。。。数据,能接收到自己发出的数据:0,1,2。。。使用LED作出简单指示。 
USART自发自收,使用PB口的LED指示接收到的数据,观察是否与发送的数据一致。

#include

#define DISP_PORT PORTB

#define DISP_DDR  DDRB


/*

程序功能:初始化UART为:8位,9.6K,接收中断

注意事项:基于7.3728M晶振  

程序名称:UART初始化程序

*/

void uart0_init (void)

{

    UCSRB = 0x00;   //disable while setting baud rate

    UCSRA = 0x00;   //U2X = 0,不加倍数率

    UCSRC = 0x86;   //固定的

    /*  设置帧格式 : 8 个数据位 , 2 个停止位 */

    //UCSRC = (1<

    UBRRL = 47;     //set baud rate lo,波特率为9.6K   

    //UBRRL=(fosc/16/(baud+1))%256; fosc是晶振,baud为波特率

    UBRRH = 0x00;   //set baud rate hi

    UCSRB = 0x98;   //接收中断允许,接收缓冲自动清空,接收允许  

}

/*程序名称:UART接收中断服务程序*/

#pragma interrupt_handler uart0_rx_isr:12

void uart0_rx_isr(void)

{

  DISP_PORT = UDR;//显示接收到的数据

                  //如:接收到"1",显示0X31

//delay50ms(1);

}


void mcu_init(void)

{

    CLI(); 

    uart0_init();

    MCUCR = 0x00;

    GICR  = 0x00;

    TIMSK = 0x00;   //timer interrupt sources

    SEI();          //re-enable interrupts

}

void main()

{

    uint8 counter=0;


    mcu_init();


    DISP_DDR=0xFF;


    while(1)

    {

        UDR=counter++;          //发送数据,数据为变量counter

        while(!(UCSRA&0x40));   //等待发送结束

         //Bit 6 – TXC: USART  发送结束

//发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时

//TXC 置位。执行发送结束中断时 TXC 标志自动清零,

//也可以通过写 1 进行清除操作。

        UCSRA|=0x40;            //清除发送结束标志位 

        delay50ms(4);

    }

}



推荐阅读

史海拾趣

优先(苏州)半导体公司的发展小趣事

宝士曼第三代半导体研发生产项目位于苏州东山大道旁,占地50亩,计划建设生产、研发、办公等楼宇。项目整体将分二期建成,总建筑面积约70000平方米。已经封顶的4号楼建筑面积超11600平方米,主要用于第三代半导体器件专用封装设备的研发生产。在施工过程中,宝士曼对环保和施工细节提出了更高的要求,要求地面每5平方米的高度误差要小于3毫米,并在施工中做到“工完场清”,最大程度减少对今后生产的影响。这种对细节的严格要求体现了宝士曼对产品质量和环保责任的重视。

Eurofarad公司的发展小趣事

Eurofarad,作为Exxelia Technologies旗下的知名品牌,自1965年成立以来,就专注于电子元件的设计和制造。在创立初期,Eurofarad凭借对电子技术的深入研究和对市场需求的敏锐洞察,迅速推出了多款高性能、高质量的电子元件产品。这些产品在市场上获得了广泛的认可,为Eurofarad的后续发展奠定了坚实的基础。

E. Dold & Söhne KG公司的发展小趣事

在电子行业快速发展的背景下,E. Dold & Söhne KG公司始终紧跟科技潮流,致力于技术创新。公司投入大量资源研发新型电子元件和系统,以满足市场对于高性能、高可靠性产品的需求。通过不断的技术创新,E. Dold & Söhne KG公司在行业内树立了良好的口碑,成为众多知名企业的合作伙伴。

Amidon Associates Inc公司的发展小趣事

随着公司实力的不断增强,E. Dold & Söhne KG公司开始积极拓展海外市场。公司先后在多个国家和地区设立了分支机构或办事处,与当地企业开展合作,共同开发市场。此外,公司还积极参与国际展会和交流活动,与国际同行交流技术和管理经验,不断提升自身的竞争力。

COMPUTAR公司的发展小趣事

随着技术的不断进步和市场需求的扩大,CBC株式会社开始寻求更广阔的发展空间。1960年,CBC香港公司成立,这标志着CBC的镜头产品开始走向国际市场。香港作为当时亚洲的金融中心和贸易枢纽,为CBC提供了宝贵的国际资源和市场机遇。通过香港公司的努力,CBC的镜头产品逐渐在国际市场上获得认可。

Galaxy ( Bel )公司的发展小趣事

随着摄影和摄像技术的不断发展,市场对镜头性能的要求也越来越高。为了满足这一需求,CBC株式会社于1985年成功研制出第一款非球面高速镜头。这款镜头采用了先进的非球面设计,有效减少了像差和畸变,提高了成像质量。非球面高速镜头的诞生,不仅为CBC赢得了更多的市场份额,也为整个光学行业树立了新的技术标杆。

问答坊 | AI 解惑

一种低功耗的热释电人体感应模块

GH-718人体感应模块 [■应用范围           ■ 安防产品             ■ 人体感应玩具         ■ 人体感应灯具    ...…

查看全部问答>

xj4312示波器电路图

xj4312示波器电路图…

查看全部问答>

“2010年全国职业院校技能大赛”高职组“嵌入式产品开发竞赛”

1.竞赛目的         促进校企合作,引导企业参与赛项设计、提供技术支持和后援保障,推动工学结合人才培养模式的改革与创新,引导高职教育在嵌入式技术高速发展背景下的相应专业领域的教学改革与专业调整。检验高职学生在嵌 ...…

查看全部问答>

如何用无线网卡将摄像头采集到的数据传到服务器上

用的立宇泰的2440,现在USB无线网卡可以上网(连到实验室的无线路由上),摄像头能实时采集图像,也能抓一帧图片保存在开发板上,现在想把采集到的数据上传到实验室的服务器上,应该如何实现呢,本人新手,希望大家指教.…

查看全部问答>

evc3.0中,如何用模拟器来调试编译好的应用程序

本人刚开始接触evc,不知道怎么用模拟器调试应用程序,下面的信息是我按Ctrl+F5后得到的图片,望各位帮忙介绍一下 Access denied or unable to locate some local and remote output files. Please reset the device and rebuild your project. ...…

查看全部问答>

关于JLINK

                                 自己画了个板子,焊好之后无法下载程序,提示错误Bad JTAG communication。请高手指点。…

查看全部问答>

关于430串口中断的问题

本人初用430串口,有如下问题请教:   1. 不知在哪种情况下产生接收中断,书上也没明确说,是否接收到一个低电平就中断,我在实验时在P3.5加低电平没有中断产生;   2. 发送中断要做些什么事?因为写发送缓冲都是在其它非中断程序里写的。 ...…

查看全部问答>

LPC1343开发板出售中......(有兴趣的可以看一下)

谁对LPC的开发板感兴趣了,我可以出售或者是交换。。。。。。。。…

查看全部问答>

不同型号的DSP,仿真器该怎么搞定呢?

本人比较菜,对硬件懂的不多,最近想自己做个6416最小系统板,手里有个合众达SEED-560plus的仿真器,以前是用在642试验箱上的,不知道可否用在6416上呢?假如能用,该怎么用呢?是在电脑上装上驱动就可以吗?望大侠指教一二啊…

查看全部问答>