日志档案

发表于 2008-4-13 21:26:13

0

标签: 疑问  回答  

程序中的问题回答和部分修正

最近有些学习者对程序有有些语句不是很理解,现在统一回答一下,帮助所有学习者学习。另外程序中存在几处多余的代码,可能影响大家理解。

在此谢谢我们学习板的用户,尤其是小敏同学。谢谢你们的提问,这促使我们的学习板更加完美,更加有利于大家学习!

一 一些疑问

(1)    SJA_RST = 1;//CAN总线复位管脚,复位无效

SAJ1000是低电平复位。本语句是使其一直处于工作状态。

(2)    SJA_CS = 1;//CAN总线片选无效,保证数据线上的变化不会影响SJA1000
              //CPU初始化

              CAN_init(  ); //SJA1000初始化,对 SJA1000寄存器的读写是采用外部寄存器寻址方式,所以不需要程序单独控制片选有效无效

大家的疑问是:为什么片选无效了还可以对SJA1000初始化?

答:SJA_CS = 1; 使SAJ1000无效,是担心在不需要对SAJ1000操作时,数据线上变化,影响SJA1000。

对SAJ1000的读写采用的是外部寄存器寻址方式。只要定义的地址正确,单片机会自动处理片选的,不需要程序专门处理。

 

二 程序修正

1  CAN_DEF.h文件中的下面语句没有实际用处,可以删除!
   sbit   INDOG  =   P1^0;/*看门狗的控制引脚*/  

2  在void CAN_TXD( void )函数中,在第二个do.....while后面多了下面的语句。可以删除
    {
        Judge = SR;
        LED_RED = 0;//
    }

 

欢迎大家继续提问题!

系统分类: 汽车电子   |   用户分类: CAN总线学习版   |   来源: 原创   |   【推荐给朋友】

    阅读(211)    回复(0)  

投一票您将和博主都有获奖机会!