LIN mater的51单片机代码
/**************master*****************/
#include
#include
sbit p31=P3^1;
sbit k1=P1^0;
sbit k2=P1^1;
sbit p20=P2^0;
unsigned char t;
unsigned char sendflag, flag;
void delay(unsigned int i)
{
while(i--);
}
void send()
{
// 同步 ID data1 data2 data3 data4 data5 data6 data7 data8 checksum
unsigned char code table1[11]={0x55, 0x55, 0x3f, 0x80 ,0x00 ,0x00 ,0xff ,0x64 ,0x10 , 0xfc , 0x79 };
// 同步 ID data1 data2 data3 data4 data5 data6 data7 data8 checksum
unsigned char code table2[11]={0x55, 0x55, 0x3f, 0x80 ,0x00 ,0xff ,0x00 ,0x64 ,0x10 , 0xfc , 0x79 };
/* 发送一帧报文 */
unsigned char i ;
p31=0; //间歇场
delay(96); //96
p31=1;
delay(2);
//_nop_(); _nop_(); _nop_();
for(i=0;i<11;i++)
{
if(flag==1)
SBUF=table1[i];
if(flag==2)
SBUF=table2[i];
while(TI==0);
TI=0;
}
}
void delayms(unsigned int x) //报文间隔发送延时
{
unsigned int i;
unsigned char j;
for(i=0;i
for(j=0;j<122;j++);
}
void init(void)
{
/*******19.2k波特率****** */
SCON=0x50; //串口方式1 8个数据位
TMOD=0x20;
PCON=0x80; //0x80=19.2k/s
TH1 =TL1 = 0xfd;
// ES=1; //串行中断允许
TR1=1; //启动定时器1
EA= 1;
IP=0x10;//串口中断优先
}
void main()
{
init();
flag=1;
while(1)
{
P2=0xFE;
P0=0x92;
send();
/* 发送完成 */
delayms(200) ; //发送间隔周期
if(k1==0)
{
while(k1==0);
flag=1;
}
if(k2==0)
{
while(k2==0); //抬键程序才往下执行
flag=2;
}
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』