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

📄 lin_hardware.c

📁 这是本人根据LIN总线的协议自己写的一个主机和从机的程序
💻 C
字号:
//定义数据类型
#define uchar unsigned char
#define uint unsigned int

//定义引脚
sbit LIN_TXD=P2^0;
sbit LIN_RXD=P2^0;
sbit LIN_SLP=P2^0;
sbit LIN_WAKE=P2^0;
//定义芯片状态
code uchar TJA_STATE[]={ 1				};

//错误计数器
uchar ErrorCounter=0x00;

//定义超时标志
bit overtime_flag=0;

//错误标志
bit error_flag=0;

//从机ID
#define ID 0X35




//定义要传送的数据缓冲区
uchar send_datas[]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};
//定义要接收的数据缓冲区
uchar rece_datas[]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01};

//定义要传送多少个字节
uchar num=8;

//定义长时间
uchar time_n=0;

//波特率
#define b1200 0XE8
#define b2400 0XF4



//延时子程序  time  为多少ms
void delay_us(uchar time)
{
	while(time--);
}

//延时子程序  time  为多少ms
void delay_ms(uchar time)
{
	 uchar i;
	 uint j;
	 for(i=0;i<time;i++)
	 	for(j=0;j<1000;j++);
}


//设置波特率  
void SetBaud(uchar baud)
{
	TR1=0;
	TMOD|=0X20;
	TH1=baud;
	TL1=baud;
	TR1=1;	
}

//设置超时定时	 单位us	
void SetTime(uchar time)
{
	TR0=0;
	TMOD|=0X01;
	TH0=(65535-time)/256;
	TL0=(65535-time)%256;
	ET0=1;
	EA=1;
	TR0=1;		
}

void timer0() interrupt 1
{
	time_n++;
	if(time_n>5)
	{
		overtime_flag=1;
		time_n=0;
	}
	
}
//串口发送子程序
void UartSend(uchar byte)
{
	SCON=0X50;
	TI=0;
	SBUF=byte;
	while(TI==0);
}						 

//串口接收子程序
uchar UartReceive()
{
	uchar temp;
	SCON=0X50;
	RI=0;
	while((RI==0)&(!overtime_flag));
 	temp=SBUF;
	return 	temp;
}

⌨️ 快捷键说明

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