我用的是BasicCAN模式,1/2分频(Intel)。
初始化程序貌似没有问题,我在初始化之后读了寄存器的值:控制寄存器(0x00):0x3e;状态寄存器(0x02):0x0c;中断控制寄存器(0x03):0xe0。
但是在信息发送之后读状态还是0x0c,不知道是发送成功了吗?这样显示感觉就是成功的,然后我在后面加上接收的命令,结果这个状态一直都没变过,接收的状态和中断都没有变化,而且如果发送成功之后,发送中断也应该是被触发的是吗?也没有出现过,不知道何原因;
我的CPU初始化如下:
SCON = 0x50; //UART模式1
TMOD = 0x20; //定时器1工作模式2,八位自动重装
PCON = 0x00;
TH1 = 0xfd;
TR1 = 1;//启动定时器1
ES = 0;
EA =1;
EX0 =1;//外部中断0中断允许位
PX0 =1;//外部中断0优先级控制位
我这里是用了串口发送信息的,为了看那些值,所以串口也初始化了,不知道有没有哪些地方没考虑到。
希望路过的朋友们帮忙解答,谢谢了!
------解决方案--------------------
絮絮叨叨说了一堆软件和设置的问题,却不说你的硬件连接情况?
------解决方案--------------------
CAN总线是一个回环结构,他不能像串口一样去交叉连接。
------解决方案--------------------
当然了,CANH 要接到另外一个板子的CANH CANL 要接到另外一个板子的CANL ic内部会转化 接受还是发送,不要把CANH CANL 想当然的理解为串口的接收和发送。你先看看你硬件连接是不是错了吧。