LIN mater的51单片机代码
- /**************master*****************/
- #include <REGX52.H>
- #include <intrins.h>
- 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<x;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;
- }
- }
- }
复制代码
附加是源代码 ,还包含Slave的
全部资料51hei下载地址:
master&slave.rar
(49.9 KB, 下载次数: 327)
|