⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.h

📁 MEGA32L 单片机的按键,LED,LCD等测试例程,ICCAVR编译器
💻 H
字号:
//======================================
//串口模块头文件
//FileName =serial.h
//Date Time=20071214...20071215
//======================================
#include"public.h"

#ifndef	_SERIAL_H_
#define	_SERIAL_H_

//--------------------------------------
//硬件引脚和操作代码宏定义
//--------------------------------------

//--------------------------------------
//常数的定义
//--------------------------------------
#define	_DOUBLE_BAUDRATE_		1

#ifdef	_DOUBLE_BAUDRATE_
					//U2X=1,波特率设置(FREQ_OS *62500*2) /9600 -1
	#define CONST_INT_UBRR_SETS	(uint)(((SYS_FREQ_MHZ *625)/48)-1)	
	#define	CONST_BYTE_UCSRA	(uchar)(BIT(UDRE) |BIT(U2X))
#else
					//U2x=0,波特率设置(FREQ_OS *62500) /9600 -1	
	#define CONST_INT_UBRR_SETS	(uint)(((SYS_FREQ_MHZ *625)/96)-1)	
	#define	CONST_BYTE_UCSRA	(uchar)(BIT(UDRE) )
#endif

//禁止RXD的功能和中断,发送寄存器空中断,发送允许,8位数据位(UCSZ2=0)	  
//#define	CONST_BYTE_UCSRB	(uchar)(BIT(TXEN) |BIT(TXCIE) |BIT(UDRIE)) 
//允许接收和发送中断
#define	CONST_BYTE_UCSRB	(uchar)(BIT(TXEN) |BIT(TXCIE) |BIT(UDRIE) |BIT(RXCIE) |BIT(RXEN)) 

#define	CONST_BYTE_UCSRC		(uchar)(BIT(URSEL) |BIT(UCSZ1) |BIT(UCSZ0) ) //无效验,1位停止位,8位数据位

#define	CONST_RECV_BUFF_LEN_MAX		64
//--------------------------------------
//数据类型的定义
//--------------------------------------
struct	_st_serial_buff{			//这里接收缓存被用作循环缓冲
	uchar	p_recv_start;			//起始存储指针
	uchar	p_recv_end;			//结束存储指针
	uchar	rlen_needed;			//需要的接收长度(<=接收缓冲的长度)
	uchar	rlen_acted;			//实际的接收长度
	uchar	recv[CONST_RECV_BUFF_LEN_MAX];	//接收缓冲
	
	uchar	slen_needed;			//需要的发送长度, 从非0变化到0标识发送完毕
	uchar	tx_pos_start;			//发送数据字节的指针
	uchar	send[64];			//发送缓冲
};

//--------------------------------------
//外部变量的说明
//--------------------------------------
extern	volatile struct	_st_serial_buff st_serial_buff;

//--------------------------------------
//函数的预定义
//--------------------------------------
//9600,8,1,N
void rs232_init_sets(void);		
uchar	rs232_recv_str(uchar *r_str, uchar r_len);
void	rs232_send_str(uchar *s_str, uchar s_len);

#pragma interrupt_handler	_irq_serial_rx_server:iv_USART_RX
#pragma interrupt_handler	_irq_serial_udre_server:iv_USART_UDRE
#pragma interrupt_handler	_irq_serial_tx_server:iv_USART_TX

#endif	//_SERIAL_H_

//End Of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -