2

主题

0

好友

50

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
810251
帖子
58
精华
0
经验
50 点
金钱
47 ¥
注册时间
2016-3-4
发表于 2016-3-5 14:29 | 显示全部楼层
解决一小时办法:具体操作是开机,时钟CLOCK,先调成0001,确认,在调成0000确认,已经试过两次了,有效。可能有更简单的方法,思路是先调好时间,然后把时间往回调。

1536

主题

21

好友

1554

积分
     

侠之大者 当前离线

【论坛优盘专业户 】,全新闪迪官方 ,质保优盘,可全国售后

Rank: 6Rank: 6

UID
481780
帖子
52069
精华
0
经验
1554 点
金钱
620 ¥
注册时间
2012-3-18
发表于 2016-3-9 10:33 | 显示全部楼层
楼主人才啊!很专业

19

主题

13

好友

588

积分
     

职业侠客 当前离线

Rank: 5Rank: 5

UID
12668
帖子
320
精华
3
经验
588 点
金钱
325 ¥
注册时间
2006-9-24
 楼主| 发表于 2016-3-15 18:23 | 显示全部楼层
jeffreymiau 发表于 2016-2-25 13:44
楼主方便公布下协议吗,看不懂汇编想自己用c写一个玩玩

只要发送钥匙开指令就可以了,ACC-ON(开钥匙)报文ID:00000285 数据:20 02 5E,要循环发送(发送时间每50毫秒发送一次就可以了

19

主题

13

好友

588

积分
     

职业侠客 当前离线

Rank: 5Rank: 5

UID
12668
帖子
320
精华
3
经验
588 点
金钱
325 ¥
注册时间
2006-9-24
 楼主| 发表于 2016-3-15 18:33 | 显示全部楼层
以前一直用汇编写程序的,刚刚学习了C语言10天,用C语言另外写了破解CD机一小时限制,程序可以正常破解,,已经实测了,,程序如下(C语言刚刚学习没几天,水平有限,将就看看)

#include<INTRINS.H>
#include<STC15F2K60S2.H>
#define WRITE_DATA   0x02
#define READ_DATA   0x03
/////////////////////////////////////////
#define RXM0SIDH   0x20
#define RXM0SIDL   0x21
#define RXM1SIDH   0x24
#define RXM1SIDL   0x27
#define  RXF0SIDH  0x00
#define  RXF0SIDL  0x01
#define  RXF1SIDH  0x04

#define  RXF1SIDL  0x05

//////////////////////////////////////////////////////////////////
#define CANCTRL   0x0F//////CAN 控制寄存器REQOP2 REQOP1 REQOP0 ABAT OSM CLKEN CLKPRE1 CLKPRE0
#define CANSTAT   0x0E////CAN 状态寄存器OPMOD2 OPMOD1 OPMOD0 — ICOD2 ICOD1 ICOD0
#define CANINTE   0x2B//////中断使能寄存器(地址:2Bh)
#define CANINTF   0x2C/////中断标志寄存器(地址:2Ch)
#define CN1       0x2A
#define CN2       0x29
#define CN3       0x28
#define TXRTSCTRL 0x0D
#define TXB0CTRL  0x30
///////////////////////////////////
#define TXB0SIDH  0x31
#define TXB0SIDL  0x32
#define TXB0EID8  0x33
#define TXB0EID0  0x34
#define TXB0DLC   0x35
#define TXB0D0   0x36
#define TXB0D1   0x37
#define TXB0D2   0x38
#define TXB0D3   0x39
#define TXB0D4   0x3A
#define TXB0D5   0x3B
#define TXB0D6   0x3C
#define TXB0D7   0x3D
///////////////////////////////////////////////////////////
#define BFPCTRL    0x0C//RXnBF 引脚控制寄存器和状态寄存器(地址:0Ch)
#define RXB0CTRL   0x60////接收缓冲器0 控制寄存器(地址:60h)
#define RXB0SIDH   0x61//接收缓冲器0 标准标识符高位
#define RXB0SIDL   0x62//接收缓冲器0 标准标识符低位
#define RXB0EID8   0x63//接收缓冲器0 扩展标识符高位
#define RXB0EID0   0x64//接收缓冲器0 扩展标识符低位
#define RXB0DLC    0x65///接收缓冲器0 数据长度码
#define RXB0D0     0x66//接收缓冲器0 数据字段字节0-7
#define RXB0D1     0x67
#define RXB0D2     0x68
#define RXB0D3     0x69
#define RXB0D4     0x6A
#define RXB0D5     0x6B
#define RXB0D6     0x6C
#define RXB0D7     0x6D

////////////
#define RXB1CTRL   0x70////////接收缓冲器1 控制寄存器(地址:70h)
#define RXB1SIDH   0x71//接收缓冲器1 标准标识符高位
#define RXB1SIDL   0x72//接收缓冲器1 标准标识符低位
#define RXB1EID8   0x73//接收缓冲器1 扩展标识符高位
#define RXB1EID0   0x74//接收缓冲器1 扩展标识符低位
#define RXB1DLC    0x75///接收缓冲器1 数据长度码
#define RXB1D0     0x76//接收缓冲器1 数据字段字节0-7
#define RXB1D1     0x77
#define RXB1D2     0x78
#define RXB1D3     0x79
#define RXB1D4     0x7A
#define RXB1D5     0x7B
#define RXB1D6     0x7C
#define RXB1D7     0x7D
////////////////////////////////////////////////////////
unsigned char temp_data;
unsigned char jj;
//////////////////////////////////////////////////
unsigned char RXIDSIDH;
unsigned char RXIDSIDL;                      
unsigned char up ;
////////////////////////////////////////////////////////////
////定义端口
sfr INT2_P36 =0x8F;
sbit ACC_0 = 0xE0^0;
sfr key    =0x80;
//sbit LED_1 =P4^6;
sbit LED_2 =P4^5;
///////////////////////////////////////
//sbit MCP2515_INT  =P3^6;
//sbit MCP2515_SCK  =P0^4;
//sbit MCP2515_MISI =P0^1;
//sbit MCP2515_MISO =P0^0;
//sbit MCP2515_CS   =P0^2;
///////////////////////////////////
sbit MCP2515_INT  =P3^6;
sbit MCP2515_SCK  =P3^5;
sbit MCP2515_MISI =P3^4;
sbit MCP2515_MISO =P3^3;
sbit MCP2515_CS   =P3^2;
////////////////////////////////////////
sbit LED_12V  = P1^1;
sbit  LED_9V  = P1^0;
sbit K6   =P3^2;
sbit K5   =P3^3;

//sbit out_12v      =P1^1;
//sbit out_9v       =P1^0;
//sbit out_5v       =P1^2;
/////////////////////////////////////////////

/////////////////////////////////;//////////////////////
void MCP2515_spi_set();//*************进入配置模式************
void MCP2515_spi_reset();//************MCP2515复位指令**************************
void TXD_DATA ();
void spi_write(unsigned char x);
void delay(unsigned int k);
unsigned spi_read(void);
void CANINTF_RX0IF();
void UartInit(void);
void READchange ( RXIDSIDH , RXIDSIDL );
////////////////////////////////////////////////////
///////////////////////////////////////////////////////
void INT2() interrupt 10
{
  
         
//LED_9V = 1;      
                                                

}
///////////////////////////////////////////////////////
///////////////////////////////////////
void UartInit(void)                //115200bps@11.0592MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设定定时器1为16位自动重装方式
        TL1 = 0xE8;                //设定定时初值
        TH1 = 0xFF;                //设定定时初值
        ET1 = 0;                //禁止定时器1中断
        TR1 = 1;                //启动定时器1
}

////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////
main()
{
UartInit()        ;
//////////////////////////////////
//key=~key;
  P2=0x00;
delay(200);

P2=0xff;
//////////////////////
MCP2515_spi_reset();
delay(200);
P2=0xff;
MCP2515_spi_set();
delay(2);
INT2_P36  |=0x10;
EA=0  ;
////////////////////////////////////
  
while(1)
{

unsigned aa;
        _nop_();
TXD_DATA ();
spi_write(0x81);
MCP2515_CS  =1;
//delay(30);
/////////////////////////////////////////  
////////////////////////////////////////////////////
       for( aa=0 ; aa<254 ; aa++)
           {

        _nop_();
        _nop_();
        _nop_();
        _nop_();
          spi_write(0xA0);
            spi_read() ;
           jj=temp_data;
             spi_read() ;
           jj=temp_data;
            MCP2515_CS  =1;
           jj=jj&0x01;
///////////////////////////////////////////
if  (  jj==0x01)
        {       

/////////////////////////////
unsigned char a ;
char b[]  ={RXB0SIDH , RXB0SIDL , RXB0DLC ,  RXB0D0 , RXB0D1 , RXB0D2 , RXB0D3 , RXB0D4 , RXB0D5 , RXB0D6 , RXB0D7 };
char  c[11] ;
         for (a=0 ; a<11 ; a++)
                 {
                   spi_write(READ_DATA);
         spi_write(b[a]);   ///////61
            spi_read();
           c[a]=temp_data;
            MCP2515_CS  =1;
                         }
//////////////////////////////////////
READchange (RXIDSIDH=c[0] , RXIDSIDL=c[1] );
////////////////////////////////////
LED_12V = 1;
                 ////////////////////////////
      //  TI=0;
      //       SBUF=c[2];   ////////////c[2]是DLC数据长度
      //  while(TI==0);
      //TI=0;
    //    SBUF=   SBUF=c[3];////////////c[3]是数据D0
    //      while(TI==0);
    //  TI=0;
    //   SBUF=   SBUF=c[4];//////////c[4]是数据D1
     //   while(TI==0);
     // TI=0;
    //    SBUF=   SBUF=c[5]; //////////c[5]是数据D2
    //      while(TI==0);
    //TI=0;
   //    SBUF=   SBUF=c[6]; //////////c[6]是数据D3
     //   while(TI==0);
    //  TI=0;
    //    SBUF=   SBUF=c[7]; //////////c[7]是数据D4
     //     while(TI==0);
   //  TI=0;
    //   SBUF=   SBUF=c[8]; //////////c[8]是数据D5
     //   while(TI==0);
   //   TI=0;
    //    SBUF=   SBUF=c[9]; //////////c[9]是数据D6
    //      while(TI==0);
    //   TI=0;
     //   SBUF=   SBUF=c[10]; //////////c[10]是数据D7
     //   while(TI==0);
     ///////////////////////////////////////////////////////////////////////////////////////
            if (c[0]==0x5C)
             {   
                     if (c[1]==0x60)
                             {if (c[3]==0x02)
                                         {LED_9V=1;
                                          }
                         else
                                                 {
                                                   LED_9V=0;
                               }               
                             }
                                 }

//////////////////////////////
if (c[0]==0x5B)
       {   
                     if (c[1]==0x00)
                            {
                     switch ( c[4]  )
                                         {
                                         case 0x00 :
                                                     P2=0xFF;
                                                                 break;
                                         case 0x08 :
                                                     P2=0xFE;
                                                                 break;
                                                  
                     case 0x10 :
                                                     P2=0xFC;
                                                                 break;
                     case 0x18 :
                                                     P2=0xF8;
                                                                 break;
                     case 0x20 :
                                                     P2=0xF0;
                                                                 break;
                     case 0x28 :
                                                     P2=0xE0;
                                                                 break;
                     case 0x30 :
                                                     P2=0xC0;
                                                                 break;
                     case 0x38 :
                                                     P2=0x80;
                                                                 break;
                     case 0x40 :
                                                     P2=0x00;
                                                                 break;

                                        }
                     

                             }
                }





///////////////////////////////////////
        LED_12V = 0;     
                    
                                        
CANINTF_RX0IF();

////////////////////////////
   }
}
}
}
/////////////////////////////////////////////////////////////#define  RXF0SIDH  0X00
//#define  RXF0SIDL  0X01
//*************进入配置模式******;MCP2515初始化(16M晶振,波特率为125K)******
void MCP2515_spi_set()
        {
  unsigned char i;
  char a[]={0x80,   0x03,   0xF1,  0x05,   0x00,       0xFF,    0xFF,     0x00,     0x00    ,      0x5B,     0x00 ,    0x5C,     0x60,       0x00 ,      0x01    ,   0x00     , 0x00   ,  0x20   ,   0x20   };
  char b[]={CANCTRL,   CN1,  CN2,   CN3,  TXRTSCTRL, RXM0SIDH, RXM0SIDL, RXM1SIDH , RXM1SIDL   , RXF0SIDH, RXF0SIDL,  RXF1SIDH, RXF1SIDL   ,CANCTRL ,  CANINTE  , CANINTF  ,  BFPCTRL ,  RXB0CTRL ,RXB1CTRL };
           for(i=0 ;i<19 ;i++)
              {  spi_write(0x02);
                 spi_write(b[i]);
                 spi_write(a[i]);
                 MCP2515_CS  =1;
                     delay(10);
                       }
            }

///////////////////////////////////////////////////////////////////////////////////////////////////
/////////////*****************ACC-ON(开钥匙)报文ID:00000285 数据:20 02 5E
void TXD_DATA ()
      {
      unsigned char i;
      char c[]={TXB0SIDH,  TXB0SIDL,  TXB0EID8,  TXB0EID0,   TXB0DLC,  TXB0D0,  TXB0D1 , TXB0D2};
      char d[]={   0x50,     0xA0,       0x00,      0x00,      0x03,    0x20 ,    0x02 , 0x5E  };
                   spi_write(0x05);///////TXB0CTRL置1
                   spi_write(TXB0CTRL);
                   spi_write(0x08);
                   spi_write(0x08);
                   MCP2515_CS  =1;
                   delay(1);
                  for (i=0 ; i<8 ;i++)
                      {   
                        spi_write(WRITE_DATA);
                        spi_write(c[i]);
                        spi_write(d[i]);
                        MCP2515_CS  =1;
                       _nop_();
                        _nop_();
                     
                      }
       }
///////////////////////////////////////////////////////
///************MCP2515复位指令**************************
void MCP2515_spi_reset()
  {
   spi_write(WRITE_DATA);
   spi_write(0xc0);
   MCP2515_CS  =1;
   }
////////////////////////////////
///**********SPI写操作*****************

void spi_write(unsigned char a)
{
unsigned  char  i;
MCP2515_SCK=0;
_nop_();
_nop_();
MCP2515_CS     =0;
_nop_();
   for  (i=0;i<8;i++)  
    {  
   
      MCP2515_SCK=0;
       if((a & 0x80)==0x80)  
                          MCP2515_MISI=1;  
           else  
                      MCP2515_MISI=0;
          MCP2515_SCK    =1;  
          a=(a<<1);  
     }
         MCP2515_SCK=0;
}

/////////////////////////////////////////////////////////////
///**********SPI读操作*****************

unsigned spi_read(void)
   //模拟SPI 读1个字节      
{
bit read_bit;
unsigned char i;

MCP2515_CS     =0;
for(i=0   ;  i<8  ;   i++)
    {
         MCP2515_SCK=0;
_nop_();
_nop_();
_nop_();
         read_bit=MCP2515_MISO ;
_nop_();
_nop_();
_nop_();
         MCP2515_SCK=1;
         temp_data<<=1;
              if(read_bit)
                   {
                      temp_data|=0x01;
                     }
                     }

             MCP2515_SCK=0;
             return temp_data;
                  
}
///////////////////////////////////////////////////

void CANINTF_RX0IF()
{

spi_write(0x05);///////RX0IF置1
                   spi_write(CANINTF);
                   spi_write(0x01);
                   spi_write(0x00);
                   MCP2515_CS  =1;




}

///////////////////////////////////////////////
/////********************报文ID变换函数********************
///////
void READchange (RXIDSIDH ,  RXIDSIDL )
  {
    unsigned char read_buff_a ;
    unsigned char read_buff_b;
    unsigned char read_buff_c;
    unsigned char read_buff_d;
    read_buff_a  =  RXIDSIDL  >> 0x05;
    read_buff_a =   read_buff_a & 0x07;
    read_buff_b  =    RXIDSIDH  << 0x03  ;
    read_buff_b  =    read_buff_b  & 0xF8  ;   
    read_buff_c  =  read_buff_a  |  read_buff_b  ;
    read_buff_d  =  RXIDSIDH  >> 0x05 ;
    read_buff_d= read_buff_d  & 0x0F ;
      TI=0;
       SBUF=read_buff_d;
        while(TI==0);
      TI=0;
        SBUF=read_buff_c;
          while(TI==0);

///////////////

      
       }
//////////////////////////////////////////////////////////
/*******延时函数*************/
/*******延时函数*************/
void delay(unsigned int k)
{
        unsigned char i, j;
        for(k ; k>0 ; k--)
        {
        _nop_();
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
      }
}

6

主题

0

好友

81

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
788813
帖子
130
精华
0
经验
81 点
金钱
63 ¥
注册时间
2015-4-2
发表于 2016-3-17 17:49 | 显示全部楼层
好像把时间调0001,再往回调0000就可以解决1小时关机,有机的可以试试

17

主题

0

好友

292

积分

业余侠客 当前离线

Rank: 4

UID
289084
帖子
449
精华
0
经验
292 点
金钱
210 ¥
注册时间
2011-2-5
发表于 2016-3-20 08:31 | 显示全部楼层
技术帖,学习学习

2

主题

0

好友

24

积分

注册会员 当前离线

Rank: 2

UID
768440
帖子
24
精华
0
经验
24 点
金钱
20 ¥
注册时间
2014-11-9
发表于 2016-5-28 07:04 | 显示全部楼层
支持~~~LZ有本田CRV 8寸的CAN研究吗?

36

主题

4

好友

534

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
127879
帖子
722
精华
0
经验
534 点
金钱
488 ¥
注册时间
2009-8-28
发表于 2016-6-6 15:49 | 显示全部楼层
楼主想法是好的,造福广大车机爱好者,但并非所有车机都值得去玩。

0

主题

0

好友

28

积分

注册会员 当前离线

Rank: 2

UID
370097
帖子
40
精华
0
经验
28 点
金钱
25 ¥
注册时间
2011-7-24
发表于 2016-7-12 00:09 | 显示全部楼层
感谢楼主,也有一台

11

主题

0

好友

233

积分

业余侠客 当前离线

Rank: 4

UID
475437
帖子
611
精华
0
经验
233 点
金钱
231 ¥
注册时间
2012-2-27
发表于 2016-9-19 11:48 | 显示全部楼层
我手头有个嘉年华的CANBUS模拟器,图片太大不能上传。高手能帮看看电源和CAN是哪几个端子吗?
附百度云连接:链接:http://pan.baidu.com/s/1jIArWJs 密码:duej

0

主题

1

好友

60

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
35743
帖子
64
精华
0
经验
60 点
金钱
60 ¥
注册时间
2008-2-17
发表于 2016-10-14 13:08 | 显示全部楼层
这个高深的东西不懂,顶上去。

1

主题

0

好友

15

积分

注册会员 当前离线

Rank: 2

UID
820440
帖子
20
精华
0
经验
15 点
金钱
13 ¥
注册时间
2016-9-29
发表于 2016-10-14 13:25 | 显示全部楼层
这个绝对要支持的。

9

主题

0

好友

116

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
606893
帖子
237
精华
0
经验
116 点
金钱
89 ¥
注册时间
2013-7-29
发表于 2016-11-21 22:02 | 显示全部楼层
这个要顶顶

11

主题

1

好友

146

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
58301
帖子
140
精华
0
经验
146 点
金钱
124 ¥
注册时间
2008-10-13
发表于 2017-1-10 23:06 | 显示全部楼层
兄弟你好,我您做的大众(高速CAN),写入福特福克斯的CAN,可以解福克斯1小时吗?为什么福克斯CAN多了一个MCP2515?

19

主题

13

好友

588

积分
     

职业侠客 当前离线

Rank: 5Rank: 5

UID
12668
帖子
320
精华
3
经验
588 点
金钱
325 ¥
注册时间
2006-9-24
 楼主| 发表于 2017-1-12 17:42 | 显示全部楼层
vasto 发表于 2017-1-10 23:06
兄弟你好,我您做的大众(高速CAN),写入福特福克斯的CAN,可以解福克斯1小时吗?为什么福克斯CAN多了一个 ...

不可以,因为通讯协议不同

11

主题

1

好友

146

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
58301
帖子
140
精华
0
经验
146 点
金钱
124 ¥
注册时间
2008-10-13
发表于 2017-1-13 14:18 | 显示全部楼层
weiqiac 发表于 2017-1-12 17:42
不可以,因为通讯协议不同

我的意思是,用您做的大众告诉CAN,写入福克斯的CAN数据,这样不可信?否则能否兄弟用 STC15F104W+TJA1050 做一个福克斯的CAN解码器?这样可行不?

11

主题

0

好友

233

积分

业余侠客 当前离线

Rank: 4

UID
475437
帖子
611
精华
0
经验
233 点
金钱
231 ¥
注册时间
2012-2-27
发表于 2017-3-16 16:42 | 显示全部楼层
求福特量产机

11

主题

1

好友

146

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
58301
帖子
140
精华
0
经验
146 点
金钱
124 ¥
注册时间
2008-10-13
发表于 2017-4-13 16:29 | 显示全部楼层
楼主您好,感谢您的付出。请教一下,TJA1054T可以用TJA1050代替吗?

19

主题

13

好友

588

积分
     

职业侠客 当前离线

Rank: 5Rank: 5

UID
12668
帖子
320
精华
3
经验
588 点
金钱
325 ¥
注册时间
2006-9-24
 楼主| 发表于 2017-4-30 11:39 | 显示全部楼层
vasto 发表于 2017-4-13 16:29
楼主您好,感谢您的付出。请教一下,TJA1054T可以用TJA1050代替吗?

不可以

157

主题

4

好友

1153

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
767577
帖子
2639
精华
0
经验
1153 点
金钱
900 ¥
注册时间
2014-11-6
发表于 2017-5-11 07:25 | 显示全部楼层
高手在民间,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部