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

📄 sio.h

📁 ATMEGA128的PCF8536驱动程序
💻 H
字号:
/************************************************
文件:sio.h
用途:结构化串口通信程序
注意:
创建:2008.1.26
修改:2008.1.26
Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
************************************************/
#ifndef __sio_H__
#define __sio_H__  1

#define USEUART0  TRUE
#define USEUART1  FALSE

#define RBUF_SIZE	100
#define TBUF_SIZE   100
typedef struct{
unsigned char R_front;
unsigned char R_rear;
unsigned char R_count;
unsigned char R_overflow;
unsigned char R_buf[RBUF_SIZE];
unsigned char T_front;
unsigned char T_rear;
unsigned char T_count;
unsigned char T_buf[TBUF_SIZE];
unsigned char T_disabled;
}siocirqueue;

#if USEUART0
extern siocirqueue RTbuf_UART0;
#endif
#if USEUART1
extern siocirqueue RTbuf_UART1;
#endif

#define RXB8 1
#define TXB8 0
#define UPE  2
#define OVR	 3
#define FE	 4
#define UDRE 5
#define RXC	 7

#define	FRAMING_ERROR  (1<<FE)
#define	PARITY_ERROR  (1<<UPE)
#define	DATA_OVERRUN  (1<<OVR)
#define	RX_COMPLETE  (1<<RXC)


#if USEUART1		  
#define REV_EN()             \
        {UCSR0B|=BIT(RXCIE0);  \	
		UCSR1B|=BIT(RXCIE1);  \
		}
#else
#define REV_EN()   UCSR0B|=BIT(RXCIE0)	
#endif	

#if USEUART1	
#define REV_DIS()              \
        {UCSR0B&=~BIT(RXCIE0); \
		UCSR1B&=~BIT(RXCIE1);  \
		}
#else
#define REV_DIS()              \
        {UCSR0B&=~BIT(RXCIE0); \
		}
#endif	


#if USEUART1	
#define TXC_EN()               \
        {UCSR0B|=BIT(TXCIE0);  \
		UCSR1B|=BIT(TXCIE1);  \
		}
#else
#define TXC_EN()               \
        {UCSR0B|=BIT(TXCIE0);  \
		}
#endif
	
#if USEUART1		
#define TXC_DIS()              \
        {UCSR0B&=~BIT(TXCIE0); \
		UCSR1B&=~BIT(TXCIE1); \
		}
#else
#define TXC_DIS()              \
        {UCSR0B&=~BIT(TXCIE0); \
		}	
#endif		
	
//定义延时定时器序号		
#define Delay_Comget 2
#define MaxLimit_Comget_Delay 5		
		
		
extern	void Rbuf_init(siocirqueue *RTbuf);
/*********************************************************************************************************
** 函数名称: Rbuf_init
** 功能描述: 接收缓冲区初始化
** 输 入: 
** 输出	 : 
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	unsigned char Rbuf_empty(siocirqueue *RTbuf);
/*********************************************************************************************************
** 函数名称: Rbuf_empty
** 功能描述: 接收缓冲区判空
** 输 入: 
** 输出	 :  TRUE 空 FALSE 非空
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
//extern	unsigned char Rbuf_full(void);
/*********************************************************************************************************
** 函数名称: Rbuf_full
** 功能描述: 接收缓冲区判满
** 输 入: 
** 输出	 :  TRUE 满 FALSE 非满
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
//extern	void  Rbuf_putchar (unsigned char x);
/*********************************************************************************************************
** 函数名称: Rbuf_putchar
** 功能描述: 把一个字符放入接收缓冲区
** 输 入: 
** 输出	 :  
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	unsigned char Rbuf_getchar(siocirqueue *RTbuf);
/*********************************************************************************************************
** 函数名称: Rbuf_putchar
** 功能描述: 从接收缓冲区读一个字符
** 输 入: 
** 输出	 :  读字符
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
//extern	unsigned char * Rbuf_getstring(void);
/*********************************************************************************************************
** 函数名称: Rbuf_getstring
** 功能描述: 从接收缓冲区返回当前子串指针
** 输 入: 
** 输出	 :  当前子串指针
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	void Tbuf_init(siocirqueue *RTbuf);
/*********************************************************************************************************
** 函数名称: Tbuf_init
** 功能描述: 发送缓冲区初始化
** 输 入: 
** 输出	 : 
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
//extern	unsigned char Tbuf_empty(void);
/*********************************************************************************************************
** 函数名称: Tbuf_empty
** 功能描述: 发送缓冲区判空
** 输 入: 
** 输出	 :  TRUE 空 FALSE 非空
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	unsigned char Tbuf_full(siocirqueue *RTbuf);
/*********************************************************************************************************
** 函数名称: Tbuf_full
** 功能描述: 发送缓冲区判满
** 输 入: 
** 输出	 :  TRUE 满 FALSE 非满
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	void Tbuf_putchar(unsigned char x,siocirqueue *RTbuf);
/*********************************************************************************************************
** 函数名称: Tbuf_putchar
** 功能描述: 把一个字符放入发送缓冲区
** 输 入: 
** 输出	 :  
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
//extern	unsigned char Tbuf_getchar(void);
/*********************************************************************************************************
** 函数名称: Tbuf_getchar
** 功能描述: 从发送缓冲区读一个字符
** 输 入: 
** 输出	 :  读字符
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
//extern	unsigned char *Tbuf_getstring(void);
/*********************************************************************************************************
** 函数名称: Tbuf_getstring
** 功能描述: 从发送缓冲区返回当前子串指针
** 输 入: 
** 输出	 :  当前子串指针
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	void Com_init (void); 	
/*********************************************************************************************************
** 函数名称: Com_init
** 功能描述: 初始化串行口
** 输 入: 
** 全局变量: 无
** 调用模块: Com_baudrate
** 说明:
** 注意:
********************************************************************************************************/
extern	void Com_baudrate (unsigned int baudrate);	
/*********************************************************************************************************
** 函数名称: Com_baudrate
** 功能描述: 利用定时器T1产生由参数baudrate指定的波特率
** 输 入: baudrate指定的波特率
** 全局变量: 无
** 调用模块: 无
** 说明:
** 注意:
********************************************************************************************************/
extern	unsigned char Com_putchar (unsigned char c,siocirqueue *RTbuf);	
/*********************************************************************************************************
** 函数名称: Com_putchar
** 功能描述: 从串行口输出一个字符c
** 输 入: c:输出字符
** 输出	 : 0:失败 1:成功
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	unsigned char Com_getchar (unsigned char mode,siocirqueue *RTbuf);		
/*********************************************************************************************************
** 函数名称: Com_getchar
** 功能描述: 从串行口输入一个字符
** 输 入: mode:0不需等待,在调用函数前检测Com_R_count的值
**              1 等待数据到来
** 输出	 : 读入的字符
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	unsigned char Com_R_count(siocirqueue *RTbuf);
/*********************************************************************************************************
** 函数名称: Com_R_count
** 功能描述: 返回接收缓冲区字符个数函数
** 输 入: 
** 输出	 : 字符个数
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern	void Com_putstring (unsigned char *p,unsigned char len,siocirqueue *RTbuf);
/*********************************************************************************************************
** 函数名称: Com_putstring
** 功能描述: 从串行口输出一个字符串
** 输 入: p:指向输出字符串 len:输出长度
** 输出	 : 
** 全局变量: 无
** 调用模块: 
** 说明:
** 注意:
********************************************************************************************************/
extern unsigned char Com_getstring (unsigned char *p,unsigned char len,siocirqueue *RTbuf);
extern void Com_Rbuf_Clear(siocirqueue *RTbuf);


#endif

⌨️ 快捷键说明

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