你能不能帮助我一下,帮我写一个中断接收的流程给我看看,我现在接收中断是进了,刚进时候 SR 0001 1101 然后读出接收寄存器后SR 0000 0000不知道啥,然后中断进 不了了,读出的数据也不对<br />CANREG_read(3) 表示读寄存器3里面的数据<br />CANREG_write(1,0x04);表示往寄存器1里面写0x04<br /><br /> void SJA_INTR() interrupt 0 using 1 //CanBus接口芯片产生中断(INTR0)<br />{ <br /> unsigned char sta;<br /> unsigned char temp; <br /> EX0 = 0;<br /> sta = CANREG_read(3); //读中断寄存器<br /> temp = sta & 0x20;<br /> if(temp == 0x20)<br /> SJA1000_init(); <br /> temp = sta & 0x04;<br /> if(temp == 0x04)<br /> SJA1000_init();//消极错误中断错误报警中断,均导致重启<br /> temp = sta & 0x02;<br /> if(temp == 0x02) //发送中断处理<br /> { <br /> send_interrupt();<br /> }<br /> temp = sta & 0x01;<br /> if(temp == 0x01) //接收中断,接收数据<br /> { <br /> receive_interrupt();<br /> } <br /> <br /> EX0 = 1;<br />}<br />receive_interrupt();<br />{<br />unsigned char R_temp0=0;<br />unsigned char R_temp1=0;<br />unsigned char R_temp2=0;<br />unsigned char R_temp3=0;<br />unsigned char R_temp4=0;<br />unsigned char R_temp5=0;<br />unsigned char R_temp6=0;<br />unsigned char R_temp7=0;<br />unsigned char R_temp8=0;<br />unsigned char R_temp9=0;<br />unsigned char R_test=0;<br /> R_temp0=CANREG_read(20);<br /> R_temp1=CANREG_read(21);<br /> R_temp2=CANREG_read(22);<br /> R_temp3=CANREG_read(23);<br /> R_temp4=CANREG_read(24);<br /> R_temp5=CANREG_read(25);<br /> R_temp6=CANREG_read(26);<br /> <br /> R_temp7=CANREG_read(27);<br /> <br /> R_temp8=CANREG_read(28);<br /> <br /> R_temp9=CANREG_read(29); <br /> <br /> CANREG_write(1,0x04);<br /><br />}
|