我在画原理图时不幸将SJA1000和89C51的复位接在一起了。。。现在截断后用飞线P10口控制,我在发送数据的时候需要读取SR,但是读出来的却是FFH。。。请问是我的SJA1000有问题吗????还是程序上的错误。。。。 void main(void) { uchar data Order;
//CPU初始化 uchar data TXD_flag = 1;// 若为1,要求发送处理 EA = 1; EX0 = 1; IT0 = 0;
COMD_8255 = 0x80 ;//A口输出 ,用于发送 //COMD_8255 = 0xA0 ;//A口输入 ,用于接收
Sel_SJA = 0;
P1 = 0x00; NOP30; P1 + 0x01;
On_SJA = 1;
CAN_init( ); _nop_(); _nop_(); while(1) { _nop_(); _nop_(); _nop_(); _nop_();
TXD_flag = 1;//在主控单元程序中使用(发送) CAN_TXD();
}
} void CAN_TXD( void ) { if(TXD_flag) { uchar data Judge; uchar data TX_buffer[ N_can ] ;//13个字节扩展帧
//初始化标示码头信息 TX_buffer[0] = 0x88;//.7=0扩展帧;.6=0数据帧; .3=1数据长度 TX_buffer[1] = 0x80;//主机地址 TX_buffer[2] = 0x55;//本智能节点地址 TX_buffer[3] = 0xff;//没用 TX_buffer[4] = 0xff;//没用
TX_buffer[6] = 0x88; TX_buffer[7] = 0x88; TX_buffer[8] = 0x88; TX_buffer[9] = 0x88;// TX_buffer[10] = 0x88;// TX_buffer[11] = 0x88;// TX_buffer[12] = 0x88;//用不到的数据字节
//初始化数据单元 TX_buffer[5] = 0x99;
//初始化数据信息 EA = 0; //关中断 do { Judge = SR;//状态寄存器 } while( Judge & 0x10 ); //SR.4=1 正在接收,等待
子程序在进行到此时,读出SR始终是FF。。。。。 PS:CAN初始化程序CAN_init( )对芯片的初始化程序应该没有问题,从WV的存储状态上看,数据是写进去了,但是但不执行复位SJA1000时却不见储存器里的数据清零。。。请问我的驱动有问题吗?? |