PIC18F458 CAN通信源程序,Proteus调试出现问题,请教解决方法!

2020-02-07 09:35发布

调试程序时一直都在“while((CANSTAT&0X80)==0);”过不去,不知道是什么原因,请指教!!!
附件是程序和出现的问题!
程序是刘和平的书《PIC18FXXX单片机程序设计及应用》上的例程。
估计是不会有错误的,请指教!
源程序ourdev_278442.rar(文件大小:62K) (原文件名:CAN Debug.rar)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
31条回答
cheungman
2020-02-10 05:54
刘和平的程序是没有问题的,请注意,我在23楼好像没这么说过吧.

我只是修改了host和slave的CAN总线的波特率,修改了串口的波特率,为slave机增加了一个指示灯(用于检测是否进入CAN通信).

我用的是CAN收发器是82C250,搭的电路就是典型电路设计,网上有很多.

我使用的是4MHz,4倍频.

附件是我用楼主的文件修改过的,我测试过了,可以CAN通信,而且完全符合CAN-0401.c文件开头中的说明.

里边还有我用串口调试助手的截图,数据:08 08 08 08 08 08 08 08,是下边语句产生的结果.
                if(T0>100)                        //接收到232通信
                {               
                        TXB0CON=TXB0CON&0xf7;        //bit3:TXREQ=0, 关请求发送
                        T0=0;
                        TXB0D0=7;///用接收数据来更新发送数据,注意,我全改成"7"
                        TXB0D1=7;
                        TXB0D2=7;
                        TXB0D3=7;
                        TXB0D4=7;
                        TXB0D5=7;
                        TXB0D6=7;
                        TXB0D7=7;
                        TXB0CON=TXB0CON|0x08;///请求发送,bit3:TXREQ=1
                        while(TXB0IF!=1);//等待发送完成                                               
                }

我在串口调试助手中发送数据:01 02 03 04 05 06 07 08
串口调试助手返回数据      :02 03 04 05 06 07 08 09
调试程序结果证明他的程序是没错的.

修改楼主后的文件ourdev_305235.rar(文件大小:387K) (原文件名:CAN_Test_Ouravr.rar)

串口调试助手显示结果 (原文件名:1.jpg)

一周热门 更多>