ATMega8 中断方式UART测试程序

发布者:SHow111time最新更新时间:2017-12-18 来源: eefocus关键字:ATMega8  中断方式  UART 手机看文章 扫描二维码
随时随地手机看文章

#include
#include
#include

#define uchar unsigned char
#define uint unsigned int

uchar g_bTxdPos=0;     //发送定位计数器

uchar g_bTxdLen=0;     //等待发送字节数
uchar g_bRxdPos=0;     //接收定位计数器
uchar g_bRxdLen=0;     //等待接收字节数

uchar g_aSendBuf[16];     //发送数据绶冲区
uchar g_aRecvBuf[16];     //接收数据缓冲区

//接收中断
SIGNAL(SIG_UART_RECV)
{
    uchar c=UDR; 
    if(g_bRxdLen>0)
    {
        g_aRecvBuf[g_bRxdPos++]=c;
        g_bRxdLen--;
    }
}

//发送中断
SIGNAL (SIG_UART_TRANS)
{
    if(--g_bTxdLen>0)
        UDR=g_aSendBuf[++g_bTxdPos];
}

//是否接收完成
uchar IsRecvComplete(void)
{
    return g_bRxdLen==0;
}

//从发送缓冲区发送指定长度数据
void SendToUart(uchar size)
{
    g_bTxdPos=0;
    g_bTxdLen=size;
    UDR=g_aSendBuf[0];
    while(g_bTxdLen>0);
}

//接收指定长度数据到接收缓冲区
void RecvFromUart(uchar size,uchar bwait)
{
    g_bRxdPos=0;
    g_bRxdLen=size;
    if(bwait)
        while(g_bRxdLen>0);
}

int main( void )
{
    uchar i;

  //uart初始化
    //接收使能、发送使能、接收中断允许、发送中断允许
    UCSRB=(1<    UBRRL=25;     // baud=9600   UBRR=CK/(baud*16) -1   

    sei();//总中断允许
    
    while(1)
    {
        //异步接收16字节数据
        RecvFromUart(16,0);

        //等待接收完成
        while(!IsRecvComplete());
        
        //将接收到的数据复制到发送缓冲区
        for(i=0;i<16;i++)
              g_aSendBuf=g_aRecvBuf;
        
        //发送回接收到的数据
        SendToUart(16);
    }
}


关键字:ATMega8  中断方式  UART 引用地址:ATMega8 中断方式UART测试程序

上一篇:ATMega8 PWM 功能(T/C 1)测试程序
下一篇:TLC549串行A/D转换器实验

推荐阅读最新更新时间:2024-03-16 15:49

基于Atmega8的实用车载空调控制器电路
  电子设备在汽车中的广泛应用被认为是汽车技术发展进程中的一次革命。随着汽车电子技术的发展和汽车控制单元的增加,汽车电子技术正朝着集中化、智能化、网络化和模块化方向发展。车内CAN/LIN总线网络的使用使得车内各个控制单元的数据可以共享,从而使在汽车嵌入式计算平台上采用多变量多目标的综合协调控制成为可能。另一方面,网络化拓展了汽车的服务领域,为汽车的移动通信、移动办公、娱乐、导航定位和远程诊断与维修提供了技术基础,逐步形成了汽车、家庭、社会一体化的互动体系。汽车嵌入式计算平台在该一体化体系中担当重要角色。   本文介绍了车载嵌入式计算平台,它为完成汽车辅助驾驶和安全监控、远程诊断和维修、在线/离线导航定位、娱乐、与家庭互动等各项
[单片机]
基于<font color='red'>Atmega8</font>的实用车载空调控制器电路
我的DIY红外半双工通信手持式掌机
实用单片机做有些小东西,由于空间有限,或单片机IO口有限,不想使用显示屏。那么怎么知道单片机的运行状态呢?本制作实现了ATMEGA16与 ATMEGA8之间通过红外双向收发。用ATMEGA16和LCD1602做成手持式掌机,ATMEGA8作为运行设备,掌机通过红外可以对运行设备进行读写操作。使运行设备更加简化,省却了显示部件、按键、通信数据线。 找来一个外壳,仅仅是使用外壳 这就是用来开孔的工具,一把锉 外壳底部 裁好的孔,刚好放下1602 开关 还有按键 按键的位置用一小块板子焊接按键 屏幕装好的样子 一个双面绿色万能板,质量挺好的,买的时候好像挺贵的,不过这么大的板子只用到了前半部分,后半部分没有用
[单片机]
我的DIY红外半双工通信手持式掌机
C8051F330串口UART0示例程序
//**************************************************************************** // 功能:C8051F330串口UART0示例程序 //**************************************************************************** //使用F330,串口为P0.4(TX0),P0.5(RX0); //----------------------------------------------------------------------------- // UART0.c //--------
[单片机]
STM32 Uart及其配置
重要的事情要说三遍,这个通信口,非常重要!非常重要!非常重要! Uart = Universal Asynchronous Receiver/Transmitter,通用异步接收器/发送器,它的特点就在于它的名字,通用,很多地方都用到;异步,它没有同步时钟;接收器/发送器:能收能发,全能小超人。 一般用在上位机(比如PC,比如中控等)与单片机的通信,单片机与模块间的通信,单片机与单片机的通信等等,主要用于两个不同设备间的通信,总之,它很通用! 它的主要特点除了它的名字之外,还要明白几个:1.一对一;2.全双工;3.传输距离不长,15m以内,长了干扰啊,还得取决于硬件设计电路; PC如何与单片机通信呢? PC相关
[单片机]
STM32 <font color='red'>Uart</font>及其配置
STM32之 UART4 和UART5所遇到的问题
最近在写一个人机界面,由于硬件同事布板的问题,必须要用到串口4,先开始我还觉得没什么,就是把USART1改成4以及改下开启时钟和配置引脚。 但是事实证明我的想法是多么愚蠢,调了整整2天,UART4发送很好,但是就是在接收时死活的卡在中断之前,就会进入HardFaultException B HardFaultException。真是百思不得其解,我就一步步调试跟踪,也没有发现任何问题,UART4的配置都是正确的,引脚也都没问题。这两天真是调试的快崩溃了。在网上查询该问题,大家也都没有答案,有些人甚至直接说UART4不能用,说心里话我不相信,别个STM那么大的公司,会推出不能用的功能? 在我最无助的时候
[单片机]
基于FPGA的UART控制器的多模块设计与实现
异步串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于微机和外设的数据交换。实现串口通信主要需要完成两部分工作:   将串口电平转换为设备电路板的工作电平,即实现RS-232电平和TTL/CMOS电平的转换;   接收并且检验串行的数据,将数据变成并行的并提供给处理器处理。   实现RS-232电平和TTL/CMOS电平转换可以用接口芯片来实现,实现数据的串行到并行转换用的是UART,它们是实现串行通信必不可少的两个部分。虽然目前大部分处理器芯片中都集成了UART,但是一般FPGA芯片却没有这个特点,所以使用FPGA作为处理器可以有两个选择,第一个选择是使用UART芯片进行串并转换,第二个选择是在FPGA内部实现
[工业控制]
ATmega88简单引脚设置
// 熔丝位 F7 DC F9 FF // pb0 或 pd7 低 为故障 -》》 PD5输出低 PC0 PC1 PC2输出高电平 //PD3为高电平 应急 -》》 PD6 30% //PD2为低电平 正常 -》》 PD6 拨码开关 //pb6高 -- PB2低 #include iom88v.h #include macros.h unsigned char yingji_sign; unsigned char normal_sign; unsigned char pwm_1; unsigned char pwm_2; unsigned char pwm_3; unsigned char pwm_4; unsig
[单片机]
一种基于ATmega8单片机的串行编程器
通常进行单片机实验和开发,编程器是必不可少的。仿真、调试完的程序要借助编程器写入单片机的存储器中,随着单片机技术的发展出现了MTP(可多次编程)存储器技术和ISP(在系统可编程)技术,这样就可以省去昂贵的仿真器,只要通过计算机接口和一条串行下载线就可直接在目标芯片上编程。ATmega8就是一种具有MTP与ISP功能的单片机,他也是AVR单片机中价格性能比最高的单片机,因此研究他的串行编程特性对利用他的上述功能来开发应用单片机有很高的实用价值。 1 ATmega8的体系结构与主要性能特点 ATmega8是ATMEL公司在2002年推出的一款新型的AVR高档单片机,他的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路,具备AVR高
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved