📄 16m
字号:
ir = readSJAreg( CAN_IR ) ;
}
/*************************************************************/
/************* 接收子程序 ****************/
/************* 将接收到的数据存入rx_data[]中 ***********/
/*************************************************************/
void can_rxdata ( void )
{
unsigned char length;
unsigned char i;
rx_data[0] = length = readSJAreg( 16 ) ;
switch(length&0xC0)
{
case 0x00: /*标准帧、数据帧*/
length = ( rx_data[0] & 0x0f ) ;
if(length>8) length = 8;
length += 3; break ;
case 0x40: /*标准帧、远程帧*/
length = 3; break ;
case 0x80: /*扩展帧、数据帧*/
length = ( rx_data[0] & 0x0f ) ;
if(length>8) length = 8;
length += 5; break ;
case 0xc0: /*扩展帧、远程帧*/
length = 5; break ;
default: break;
}
for (i=0;i<length;i++)
{
rx_data[i] = readSJAreg( 16+ i ) ;
}
writeSJAreg( CAN_CMR , 0X0c ); /* 接收完毕,释放接收缓冲区 */
}
/*********************************************************/
/************* 接收中断程序 ******************/
/*********************************************************/
void int0() interrupt 0
{
EA = 0 ; /* 关中断 */
can_rxdata ( );
getremote =1;
EA = 1 ;
}
/*********************************************************/
/************* 定时器中断程序 ******************/
/*********************************************************/
void timer0() interrupt 1
{
EA = 0 ; /* 关中断 */
t0count++;
if(t0count>=20)
{
P2 = 0xff; /*关闭发光二极管 */
timer0up = 1;
t0count = 0;
mytime++;
}
if(mytime>=58) /*ASCII 值 大于9 */
{mytime = 0x30;}
TH0 = 0x3c;
TL0 = 0xb0;
EA = 1 ;
}
/*********************************************************/
/************* 命令处理程序 ******************/
/*********************************************************/
void dealmessage_remote3( void )
{
char i,j ;
//mytime ++;
for (j=0;j<50;j++);
tx_data[1] = 0x99; /* 29位标识符 需右移3位 */
tx_data[2] = 0x99; /* 在上位机上显示一串3 */
tx_data[3] = 0x99;
tx_data[4] = 0x99; /* 低3位无效 */
tx_data[5] = 0x16; /* 共6帧数据 第1帧 */
tx_data[6] = mytime;//0x34; // 4 /* mytime是变量 范围0到9 */
tx_data[7] = 0x32; // 2
tx_data[8] = 0x32; // 2
tx_data[9] = 0x31; // 1
tx_data[10] = 0x30; // 0
tx_data[11] = 0x34; // 4
tx_data[12] = 0x4e; // N
can_txdata ( );
for (j=0;j<150;j++);
tx_data[5] = 0x26; /* 共6帧数据 第2帧 */
tx_data[6] = 0x30; // 0
tx_data[7] = 0x37; // 7
tx_data[8] = 0x31; // 1
tx_data[9] = 0x30; // 0
tx_data[10] = 0x32; // 2
tx_data[11] = 0x32; // 2
tx_data[12] = 0x37; // 7
can_txdata ( );
for (j=0;j<50;j++);
tx_data[5] = 0x36; /* 共6帧数据 第3帧 */
tx_data[6] = 0x57; // W
tx_data[7] = 0x30; // 0
tx_data[8] = 0x36; // 6
tx_data[9] = 0x31; // 1
tx_data[10] = 0x32; // 2
tx_data[11] = 0x32; // 2
tx_data[12] = 0x54; // T
can_txdata ( );
for (i=0;i<150;i++)
for (j=0;j<250;j++);
tx_data[5] = 0x46; /* 共6帧数据 第4帧 */
tx_data[6] = 0x30; // 0
tx_data[7] = 0x36; // 6
tx_data[8] = 0x31; // 1
tx_data[9] = 0x37; // 7
tx_data[10] = 0x32; // 2
tx_data[11] = 0x4D; // M
tx_data[12] = 0x4D; // M
can_txdata ( );
for (j=0;j<50;j++);
tx_data[5] = 0x56; /* 共6帧数据 第5帧 */
tx_data[6] = 0x35; // 5
tx_data[7] = 0x31; // 1
tx_data[8] = 0x36; // 6
tx_data[9] = 0x30; // 0
tx_data[10] = 0x33; // 3
tx_data[11] = 0x30; // 0
tx_data[12] = 0x37; // 7
can_txdata ( );
for (j=0;j<50;j++);
tx_data[5] = 0x66; /* 共6帧数据 第6帧 */
tx_data[6] = 0x39; // 9
tx_data[7] = 0x30; // 0
tx_data[8] = 0x31; // 1
tx_data[9] = 0x30; // 0
tx_data[10] = 0x32; // 2
tx_data[11] = 0x32; // 2
tx_data[12] = mytime;//0x37; // 7
can_txdata ( );
}
main ()
{ char i,j ,temp=0;
for(i=0;i<255;i++)
for (j=0;j<255;j++);
cpu_init();
P2 =0xc0; /*硬件复位SJA1000 */
for (j=0;j<100;j++);
P2 =0xff;
can_init( ) ;
writeSJAreg( CAN_TEST , 0xaa ); /*测试SJA1000 */
temp = readSJAreg( CAN_TEST ) ;
writeSJAreg( CAN_TEST , 0x55 ); /*测试SJA1000 */
temp = readSJAreg( CAN_TEST ) ;
getremote =0;
mytime = 0x2f;
for (j=0;j<255;j++);
while(1)
{
if(getremote) //(timer0up)&&
{ P2 = 0x60; /*点亮 发光二极管 */
if( 0x99 == rx_data[1]) /* 软件比较标识符 */
{
switch(rx_data[0]&0xC0)
{
case 0x00: /*标准帧、数据帧*/
break ;
case 0x40: /*标准帧、远程帧*/
break ;
case 0x80: /*扩展帧、数据帧*/
break ;
case 0xc0: /*扩展帧、远程帧*/
dealmessage_remote3();
//P2 = 0x60;
break ;
default: break;
}
}
getremote = 0 ;
}
if(timer0up)
{
// dealmessage_remote();
dealmessage_remote3();
timer0up =0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -