×
单片机 > 单片机程序设计 > 详情

AVR简单的串口通信程序

发布时间:2020-05-28 发布时间:
|
本例子是学习AVR的串口通信时候编写的一个简单的串口通信的程序,运行的时候先向串口发送一个数据0x12,然后等待接收,当PC机发送一个数据到单片机,单片机就对这个数据进行加1处理,然后发回到PC机显示。以下是串口通信时候的界面和串口通信的源程序。

 

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

/************AVR  USART串口调试****************/            

/************ClimberWin 2008.6.29**************/

/*CPU:ATMEGA32L  4MHZ 外部晶振(熔断位需要先配置好外部晶振)*/

/*说明:AVR串口是通过UDR发送出去的,类似于51单片机的SBUF*/

/*程序功能:能够通过串行数据发送给PC机0x12数据,接收上位机数据并且+1后发送回上位机*/

#include         //AVR I/O口定义头文件

#include      // 延时头文件调用

#include // 中断头文件调用

 

#define uchar unsigned char

//引脚定义

#define AVR_RXD                0     //PD0   RXD

#define AVR_TXD                1     //PD1   TXD

//常量定义

#define BAUDRATE     9600     //波特率定义

 

uchar UART_MID;        //定义一个缓存区数据临时存储地址

 

 

/*******************串口接收中断服务程序*************************/

SIGNAL(SIG_USART_RECV) //串口中断服务程序

{

       UART_MID=UDR;   // 从缓冲器中读取数据到UART_MID,临时存放

    UDR=UART_MID+1; //+1后发送回去数据

             

}

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

 

void init_USART(void)//USART 初始化

{

 

    //USART 9600 8, n,1  PC上位机软件(超级终端等)也要设成同样的设置才能通讯

    UCSRC = (1<

    //异步,8位数据,无奇偶校验,一个停止位,无倍速

    // UBRR=(F_CPU/BAUDRATE/16-1)

    UBRRL= (F_CPU/BAUDRATE/16-1)%256;

    UBRRH= (F_CPU/BAUDRATE/16-1)/256;

 

    UCSRA = 0x00; //工作在异步正常模式下 U2X=0

    UCSRB = (1<

    //使能接收中断,使能接收,使能发送

}

int main(void)

{

    

    DDRD  =(1<

    PORTD =0xFF;              

       init_USART();      //初始化串口

       UDR=0X12;         //向串口发送数据

    sei();                    //中断使能(avr/interrupt.h 中调用)

    while (1)

    {

     //等待接收,接收后跳转到中断程序             

    }

}

关键字:AVR  串口通信 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址