⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 51单片机基于CAN总线通信程序
💻 C
字号:
#include <reg52.h>
#include <intrins.h>
#include "inc/CPUIO_DEF.H"     
#include "inc/PUBLIC_VARIABLE.H"          
#include "inc/candul.H" 
#include "inc/common.H"
         
void main(void)
{
    //关键变量初始化
    bitRstFlg = 0;
    bitMidoFlg = 0;
    bitLastFlg = 0;

    MOTONOFF  = 1;              //马达关闭
    bitSysAllowWork = 0;

    //CPU初始化
    SJA_RST = 1;                //CAN总线复位管脚
    SJA_CS = 0;                 //CAN总线片选有效
	
	//定时器0初始化	
    //AUXR &= 0x1f;				//定时器00011100兼容标准51 ,进行12分频 ,
	TMOD |= 0X11;				//T0模式1,T1模式1
	TL0 = 0Xcc;					//2ms定时中断22.1184mhz
	TH0 = 0XF8 ;

	TL1 = 0X0 ; 				//
	TH1 = 0X0 ;

    TR0 = 1;                    //启动定时器0
    TR1 = 0;                    //停止定时器1


//6、串口初始化	
//	SCON = 0XF0 ;				//串口模式1,SM2=0;


	PCON = 0;
//  EX1 = 1;//外部中断0负边沿触发
//  IT1 = 1;

    IT0 = 0;//CAN总线接收中断电平触发
    EX0 = 1;//打开外部中断0
//	ES = 1;	//开串口中断
    ET0 = 1;				    //定时器0
	ET1 = 1;				    //定时器1
//  IE = 0x03;
    EA = 1; //打开总中断
    SJA_CS = 1;     //CAN总线片选无效,保证数据线上的变化不会影响SJA1000
//CPU初始化

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

    SysReadyInit();  //系统自检初始化函数

    while(1)
    {
         MotControl();    //马达控制
         Rxd_deal();      //数据处理
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -