最近有些学习者对程序有有些语句不是很理解,现在统一回答一下,帮助所有学习者学习。另外程序中存在几处多余的代码,可能影响大家理解。
在此谢谢我们学习板的用户,尤其是小敏同学。谢谢你们的提问,这促使我们的学习板更加完美,更加有利于大家学习!
一 一些疑问
(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;//
}
欢迎大家继续提问题!
文章评论(0条评论)
登录后参与讨论