桂林y 发表于 2025-2-19 11:51:03

一线通数据发送程序求解

我的电池带有一线通,但是新买的电池没有导致无法使用,用逻辑分析抓数据,得到重复发送的数据是0x03,0x01,0x80,0x93,0x63,0x35,0x0F,0x0E,0x00,0x01,0x93,0xd4,但是我用单片机模拟发送电动车不识别,有大神看看我的发送程序有问题吗。#include "STC89C5xRC.H"
//#include "intrins.h"
//一线通
#define u8 unsigned char//对数据类型进行声明定义



u8 SIFXOR;
u8SIF[] = {0x03,0x01,0x80,0x93,0x63,0x35,0x0F,0x0E,0x00,0x01,0x93,0xd4};
sbitk4=P1^7;
sbitk3=P1^6;
sbitDQ=P3^3;
void delay500us(void)   //误差 0.5ms0us
{
   u8 a,b;

    for(b=71;b>0;b--)
      for(a=2;a>0;a--);
}


void delay16ms(void)   //误差 5.5ms0us
{
    u8 a,b;
   
    for(b=239;b>0;b--)
      for(a=10;a>0;a--);
}
void delay490us(void)   //误差 0us
{
    unsigned char a,b;
    for(b=1;b>0;b--)
      for(a=242;a>0;a--);
}

void XOR()
{
    SIFXOR=SIF^SIF^SIF^SIF^SIF^SIF^SIF^SIF^SIF^SIF^SIF^SIF;
    SIF=SIFXOR;

}


void WByte(u8 input)
{
    //发送启始位
    u8 i=8;
    u8 b=0;
    while(i--)
    {
      b=(bit)(input&0x80);
      if ( b==1)
      {
            DQ=0;
            delay500us();
            DQ=1;
            delay500us();
            delay500us();
DQ=0;
      }
      else
      {
            DQ=0;
            delay500us();
            delay500us();

            DQ=1;
            delay490us();
DQ=0;

      }

      input=input<<1;
// DQ=0;
    }

}
void OUTSIF()
{
    u8 i=12;
    DQ=0;
    delay16ms();//同步信号
    DQ=1;
    delay500us();
    while(i--)
    {
      u8 DAT=0;
      WByte(SIF);   //先传低位
      DAT++;

    }
    DQ=0;
}



void main(void)
{
//    P3M0 |= 0x08; P3M1 &= ~0x08;

    XOR();
    DQ=1;
delay16ms();delay16ms();delay16ms();delay16ms();
delay16ms();delay16ms();delay16ms();delay16ms();
DQ=0;
delay16ms();delay16ms();delay16ms();delay16ms();delay16ms();delay16ms();
DQ=1;
delay16ms();delay16ms();delay16ms();delay16ms();
delay16ms();delay16ms();delay16ms();delay16ms();
//VV=6;
    while(1)
    {
//dianlaing ();
//key();
OUTSIF();
delay16ms();delay16ms();delay16ms();delay16ms();
delay16ms();delay16ms();delay16ms();delay16ms();


}
}

桂林y 发表于 2025-2-19 11:51:45

一线通协议是SIF协议

C_wolf 发表于 2025-2-19 15:03:24

<p>估计是先有个握手,一闪而过了,你没捕捉到,只是抓到了握手后的通讯数据。</p>
<p>没有握手成功,车辆肯定不会响应的,有的电池还是加密通讯的,没有具体厂家协议只能猜了。</p>
页: [1]
查看完整版本: 一线通数据发送程序求解