📄 m16_usart.h
字号:
/*===================================================================
CopyLeft(CL) FORVERE Late Lee
All rights NOT reserved
版权所无,翻版不究,但请保留此处信息。
http://www.cnbolgs.com/latelee
any problem or suggestion
mail to: latelee@163.com
*文件名: 串口通信测试程序
*文件说明: 实现多种格式收发
*版本: v1.0
*芯片: ATmega16
*晶振: 内部 7372800MHz晶振
*作者: Late Lee
*日期: 2009年1月26日 已丑年初一晚
*编译环境: UltraEdit+WinAVR20080610(gcc 4.3.0) 经仿真测试
*说明: 下面是一些说明和笔记:
**使用说明:一定要保证所测试的模式正确--在头文件设置,
**传说串口可以有30种模式,此处只写了其中8种如下:
// M1:8位数据位,1位停止位,无校验
// M2:8位数据位,1位停止位,奇校验
// M3:8位数据位,2位停止位,无校验
// M4:8位数据位,2位停止位,偶校验
// M5:9位数据位,1位停止位,无校验
// M6:9位数据位,1位停止位,奇校验
// M7:9位数据位,2位停止位,无校验
// M8:9位数据位,2位停止位,偶校验
**此次修改了关于自定义类型的一些小问题,AVRGCC建议用其定义的类型。
**测试笔记:
1、未添加中断处理部分
2、严重声明:在发送、接收数据处理时很不合理!如果真的要分8位和9位传送,
则分开写就可以了。 2009-1-24 23:00
3、两芯片仿真时9位数据发送不正常,未与PC仿真,2009-1-24 23:05
4、usart_receive9()编译有警告,不知原因。2009-1-25 18:40
5、解决警告问题,if语句有些表达得不好,9位数据收发测试正常 1-26 21:07
====================================================================*/
#ifndef _M16_USART_H_
#define _M16_USART_H_
#include <avr/io.h>
#include <util/delay.h>
#include "my_type.h"
// #define F_CPU 7372800
#define METHOD 8 // 模式选择
//#define U2XX // 用来设置倍率
#define BAUD 38400 // 用标准库设置
#ifdef BAUD
#include <util/setbaud.h>
#endif
void usart_init_baud(uint16 baud); // 以波特率为形参的初始化函数
void usart_init_std(void); // 使用标准库设置波特率的初始化函数
void usart_init(void); // 直接赋值的初始化函数
void usart_transmit8(uint8 data); // 8位
void usart_transmit9(uint16 data); // 9位
void usart_sendstring(uint8 *string); // 发送字符串
uint8 usart_receive8(void); // 8位
uint16 usart_receive9(void); // 9位
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -