基于ATmega16单片机的USART串口通信测试程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/***************************************************************************** 编译环境:ICC AVR。

文件名:基于ATmega16单片机的USART串口通信测试程序

功能:利用ATmega16的USART,从TXD异步串出数据,将TXD与RXD短接,从RXD输入,通过PC口

送到一个LED数码管显示,实现了自发自收的过程?

作者:赵国朋

班级:鹏程001

时间:2013年04月5日

修改:无

备住:一.硬件接口电路描述

1.晶振:8MHz

2.MCU的PC口与共阴极数码管相接

3.TXD与RXD相接

TXD --- RXD

/*****************************************************************************/ #include //包含单片机型号头文件

#include //包含"位操作"头文件

#define uchar unsigned char //宏定义

#define uint unsigned int

#define ulong unsigned long

#define BAUD 9600 //波特率采用9600b/s

#define CRYSTAL 8000000 //系统时钟为8MHz

//计算和定义波特率设置参数

#define BAUD_SETTING (uint)((ulong)CRYSTAL/(16*(ulong)BAUD)-1)

#define BAUD_H (uchar)(BAUD_SETTING>>8)

#define BAUD_L (uchar)(BAUD_SETTING)

//USART控制和状态寄存器的标志位定义

#define FRAMING_ERROR (1<

#define PARITY_ERROR (1<

#define DATA_OVERRUN (1<

#define DATA_REGISTER_EMPTY (1<

#pragma interrupt_handler USART_Rx_Isr:12 //USART接收中断服务

#pragma data:data

flash Duan_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F

/************ MCU初始化函数**************/

/****************************************************************************** 函数名:MCU_Init()

功能:MCU初始化

参数:无

返回值:无

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

void MCU_Init()

{

PORTC=0X00;

DDRC=0XFF;

PORTD=0X03;

DDRD=0X02;

}

/************ USART初始化函数**************/

/****************************************************************************** 函数名:USART_Init()

功能:USART初始化

参数:无

返回值:无

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

void USART_Init()

{

// DDRD=0X02;

//PORTD=0X03;

UCSRA=0X00;

UCSRB=(1<

//UCSRB=0X98;

UCSRC=(1<

//UCSRC=0X86

UBRRH=BAUD_H;

UBRRL=BAUD_L;

}

/************ USART中断服务函数**************/

/****************************************************************************** 函数名:USART_Rx_Isr()

功能:USART中断服务,将欲显示的数码送到I/O寄存器

参数:无

返回值:无

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

void USART_Rx_Isr()

{

uchar status,data;

//DDRC=0XFF;

status=UCSRA;

data=UDR;

if((status&(FRAMING_ERROR|PARITY_ERROR|DATA_OVERRUN))==0)

PORTC=Duan_table[data];

}

/************ USART发送数据函数**************/

/****************************************************************************** 函数名:USART_Transmit()

功能:将要发送的数据送到USART缓冲区UDR中

参数:uchar data

返回值:无

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

void USART_Transmit(uchar data)

相关文档
最新文档