您的位置 首页 基础

AVR简略的串口通讯程序

本例子是学习AVR的串口通信时候编写的一个简单的串口通信的程序,运行的时候先向串口发送一个数据0x12,然后等待接收,当PC机发送一个数据到…

本比如是学习AVR串口通讯时分编写的一个简略的串口通讯的程序,运转的时分先向串口发送一个数据0x12,然后等候接纳,当PC机发送一个数据到单片机,单片机就对这个数据进行加1处理,然后发回到PC机显现。以下是串口通讯时分的界面和串口通讯的源程序。

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

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

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

/*CPU:ATMEGA32L 4MHZ 外部晶振(熔断位需求先装备好外部晶振)*/

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

/*程序功用:可以经过串行数据发送给PC机0x12数据,接纳上位机数据而且+1后发送回上位机*/

#include <avr/io.h> //AVR I/O口界说头文件

#include // 延时头文件调用

#include interrupt.h> // 中止头文件调用

#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)

{

//等候接纳,接纳后跳转到中止程序

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/267267.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部