ATMEGA16的USART串口发送与接收数据示例程序
- 格式:doc
- 大小:52.00 KB
- 文档页数:7
//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()
{