ATMEGA16的USART串口发送与接收数据示例程序

  • 格式:doc
  • 大小:52.00 KB
  • 文档页数:7

下载文档原格式

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

//ATMEGA16的USART串口发送与接收数据示例程序,采取中断的方式

//发送200个FF,接收数据显示在数码管上,接收数据格式如09

//编译环境 ICCAVR

//系统时钟7.3728MHZ,设置熔丝位为外部高频石英晶体振荡,启动时间4.1ms

//作者:David

//日期:2013.10.20

//*********************************************************************** // 包含文件

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

#include

#include

#include

#include

#include //中断信号头文件

//*********************************************************************** // 定义变量区

//*********************************************************************** #define CH451_RESET 0x0201 //复位

#define CH451_LEFTMOV 0x0300 //设置移动方式-左移#define CH451_LEFTCYC 0x0301 //设置移动方式-左循#define CH451_RIGHTMOV 0x0302 //设置移动方式-右移#define CH451_RIGHTCYC 0x0303 //设置移动方式-右循#define CH451_SYSOFF 0x0400 //关显示、键盘、看门狗

#define CH451_SYSON1 0x0401 //开显示

#define CH451_SYSON2 0x0403 //开显示、键盘

#define CH451_SYSON3 0x0407 //开显示、键盘、看门狗功能#define CH451_DSP 0x0500 //设置默认显示方式

#define CH451_BCD 0x058f //设置BCD译码方式

#define CH451_TWINKLE 0x0600 //设置闪烁控制

#define CH451_DIG0 0x0800 //数码管位0显示

#define CH451_DIG1 0x0900 //数码管位1显示

#define CH451_DIG2 0x0a00 //数码管位2显示

#define CH451_DIG3 0x0b00 //数码管位3显示

#define CH451_DIG4 0x0c00 //数码管位4显示

#define CH451_DIG5 0x0d00 //数码管位5显示

#define CH451_DIG6 0x0e00 //数码管位6显示

#define CH451_DIG7 0x0f00 //数码管位7显示

#define l ed0 0x0000 //数码管位0显示的数据0

#define l ed1 0x0001 //数码管位0显示的数据1

#define l ed2 0x0002 //数码管位0显示的数据2

#define l ed3 0x0003 //数码管位0显示的数据3

#define l ed4 0x0004 //数码管位0显示的数据4

#define l ed5 0x0005 //数码管位0显示的数据5

#define l ed6 0x0006 //数码管位0显示的数据6

#define l ed7 0x0007 //数码管位0显示的数据7

#define l edno 0x0010 //数码管灭

#define dclk0 PORTD &= ~(1 << PD6) //串行数据时钟,上升延激活

#define dclk1 PORTD |= (1 << PD6)

#define din0 PORTD &= ~(1 << PD5) //串行数据输出,接CH451的数据输入#define din1 PORTD |= (1 << PD5)

#define load0 PORTD &= ~(1 << PD4) //串行命令加载,上升延激活

#define load1 PORTD |= (1 << PD4)

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#define fosc 7372800 //晶振频率

#define baud 9600 //设置波特率的大小

uint tx_count=200,tx_flag=0xff;

uchar A1,A2,A3;

uchar usart_tx_data;

uchar usart_rx_data;

uchar table[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06, //显示用数据

0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,

0x0e,0x0f};

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

// 初始化子程序

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

void system_init()

{

PORTD=0x7F; //PD0设置为输入,PD1输出

DDRD=0x72; //上拉电阻使能有效

}

void ch451_init() //先低后高,选择4线输入

{

din0;

din1;

}

void usart_init()

{