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

📄 hand_serial_all_h.h

📁 c8051单片机使用smbus(I2C)接口的测试程序
💻 H
字号:

#ifndef HAND_SERIAL_ALL_H
#define HAND_SERIAL_ALL_H


#include "c8051f020.h"
#define BYTE unsigned char

#define ES1_ON 	EIE2|=0x40
#define ES1_OFF	EIE2&=0xbf
#define TI1_ON 	SCON1|=0x02
#define TI1_OFF	SCON1&=0xfd
#define RI1_ON 	SCON1|=0x01
#define RI1_OFF	SCON1&=0xfe
#define TI1			SCON1&0x02
#define RI1			SCON1&0x01

#define TR4_ON	T4CON|=0x04

//cygnal宏定义
#define BAUDRATE     	9600            // Baud rate of UART in bps
#define BAUDRATE1     9600            // Baud rate of UART in bps

#define SYSCLK       24000000        // SYSCLK frequency in Hz
//#define SYSCLK       22118400        // SYSCLK frequency in Hz

//#define BAUD_TIMER	-SYSCLK/BAUDRATE/16/12 
//#define BAUD_TIMER	-SYSCLK/BAUDRATE/32/12 
#define BAUD_TIMER	-SYSCLK/BAUDRATE/16 
//波特率计算方法,如果smod=0,16->32 如果要用高速,可选择外部时钟不分频,不用/12,见CKCON	

#define BAUD_TIMER2 SYSCLK/BAUDRATE/32  
//因为TIMER2做波特率发生器,BAUDRATE=SYSCLK/(32*65536-[RCAP2H:RCAP2L])
#define BAUD_TIMER4 SYSCLK/BAUDRATE1/32  
//因为TIMER4做波特率发生器,BAUDRATE1=SYSCLK/(32*65536-[RCAP4H:RCAP4L])



#define MY_USE_TIMER  10000					//10ms
#define TIMER_CONSTANT SYSCLK/1000*MY_USE_TIMER/1000/12
//如果要用高速,可选择外部时钟不分频,不用/12,见CKCON	



//ring_buff 定义
typedef	struct
{
	 BYTE 	ring_buffer_len;
	 BYTE 	read_index;
	 BYTE 	write_index;
	 BYTE		*buffer_ptr;
	 BYTE 	empty;
}type_of_ring_buffer;

//timer定义
typedef struct
{
	BYTE active;
	BYTE timer_off;
	int timer_value;
}type_of_timer;


#define SERIAL_BUFF_LEN 250	//串口BUFF的长度

//串口0全局变量
//type_of_ring_buffer  send_buff_com_0;
//type_of_ring_buffer  recv_buff_com_0;

//串口1全局变量
//type_of_ring_buffer  send_buff_com_1;
//type_of_ring_buffer  recv_buff_com_1;



void init_ring_buffer(type_of_ring_buffer *ring_buffer, BYTE data_buffer_len,BYTE *data_buff_array); 
BYTE get_char_from_buff(type_of_ring_buffer *ring_buffer); 
void put_char_to_buff(type_of_ring_buffer *ring_buffer,BYTE t_data);

void serial_init(void);

BYTE if_empty_com_0(void);
BYTE if_empty_com_1(void);

void putbyte_com_0(char c);
void putstring_com_0(BYTE  *c);
void puthex_com_0(BYTE c); 
BYTE getbyte_com_0(void);

void putbyte_com_1(char c);
void putstring_com_1(BYTE  *c);
void puthex_com_1(BYTE c); 
BYTE getbyte_com_1(void);

void init_timer(type_of_timer *l_timer);
void opentimer(type_of_timer *l_timer,int l_timer_value);
void closetimer(type_of_timer *l_timer);

void delay_10ms(BYTE l_10ms_times);



#endif

⌨️ 快捷键说明

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