化简,化到最简!
运行以下程序,(无论节点在不在总线上。)send( )发送后,中断EPI发生,LED1亮。(节点进入错误消极状态)证实你的系统工作正常。 然后在此基础上完善你的程序。
#pragma SMALL #include<reg51.h> #include<sjareg.h> #define uchar unsigned char
bdata uchar ws1; sbit LED0=P1^0; sbit LED1=P1^1; sbit LED2=P1^2;
uchar xdata *SJA_Adr=0x7f00; #define can_read(RegAdr) SJA_Adr[RegAdr] #define can_write(RegAdr,Val) SJA_Adr[RegAdr]=Val
void initial() using 0 { do{ can_write(MOD,0x01); }while(can_read(MOD)^0x01);
can_write(CDR,0xcf); can_write(IER,0x20);
can_write(MOD,0); }
void main(void) { LED0=0; initial( ); IE=0x81;
send( ); //can_write(CMR,1);
LED2=!LED2; while(1); }
void int0(void) interrupt 0 using 0 { LED1=!LED1; ws1=can_read(IR); }
再次运行该程序,LED1无反应。按下硬复位按键,可重复实验。
|