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

📄 do.c

📁 2个F040之间的CAN通讯
💻 C
字号:
#include "c8051f040.h"
#include "can.h"

//-----------------------------------------------------------------------------
// GLOBAL CONSTANTS
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Functions
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);
void INT_Init (void);
void CAN_Init (void);
void CAN_Start(void);
void CAN_Transmit_Init (unsigned char MsgNum , unsigned char id);
void CAN_Receive_Init (unsigned char MsgNum , unsigned char id);
void Timer_Init (void);

void CAN_Receive_Interrupt (void);
void INT0_Interrupt (void);
void Timer0_Overflow_Interrupt (void);

//void Get_DO_Address (void);
void Control_DO (void);


void CAN_Transmit(unsigned char MsgNum,unsigned char *p_data );
void CAN_Receive (unsigned char MsgNum, unsigned char *p );
void CAN_RemoteRqst_Init(unsigned char MsgNum , unsigned char id);  
void CAN_RemoteRqst(unsigned char MsgNum);
void CAN_Remote_Send_Init(unsigned char MsgNum,unsigned char id );
void CAN_Remote_Updata(unsigned char MsgNum,unsigned char *p_data );

//-----------------------------------------------------------------------------
// Global Variables
//-----------------------------------------------------------------------------
sbit            OE = P4^0;             //74HC245 ENABLE
sbit            CANLED = P4^1;         //CANLED 0 MEANS ON
bit 			      DO_Error_Flag;
bit 			      DO_Control_Flag;
bit  			      DO_Message_Req_Flag;

unsigned char   DO_Control_Data0;
unsigned char   DO_Control_Data1;
unsigned char   DO_Control_Data_New0;
unsigned char   DO_Control_Data_New1;
unsigned char   DO_Control_Data_Ordered0;
unsigned char   DO_Control_Data_Ordered1;
unsigned char   temp1, temp2;
unsigned char   temppage,CAN_Status;

xdata unsigned char ss1[8]={0x1a,0x2a,0x3a,0x4a,0x5a,0x6a,0x7a,0x8a};
xdata unsigned char ss2[8]={0x1b,0x2b,0x3b,0x4b,0x5b,0x6b,0x7b,0x8b};
xdata unsigned char ss3[8]={0x1c,0x2c,0x3c,0x4c,0x5c,0x6c,0x7c,0x8c};
//xdata unsigned char rr[8]={0,0,0,0,0,0,0,0}; 
//xdata unsigned char *pr=rr;
//-----------------------------------------------------------------------------
// Main Routine
//-----------------------------------------------------------------------------
void main ()
{  

 //unsigned char state;  //CANSTAT

  EA = 0;

  WDTCN = 0xDE;              //Disable Watchdog Timer
  WDTCN = 0xAD;

  SYSCLK_Init ();
  PORT_Init ();
  INT_Init ();

  //Get_DO_Address ();

  CAN_Init ();
  CAN_Transmit_Init (1,1);
  CAN_Receive_Init (2,1);
  CAN_Start();
  
  Timer_Init ();

  OE = 0;
  EA = 1;
  TR0 = 1;


  //CAN_Transmit(1,ss);
CAN_Remote_Send_Init(1,1);
CAN_Remote_Send_Init(2,2);
CAN_Remote_Send_Init(3,3);

CAN_Remote_Updata(1,ss1);
CAN_Remote_Updata(2,ss2);
CAN_Remote_Updata(3,ss3);

     while (1) 
     {

     }
  
}

//-----------------------------------------------------------------------------
// CAN_Receive_Interrupt
//-----------------------------------------------------------------------------
void CAN_Receive_Interrupt (void) interrupt 19 
{
  // unsigned char temp;
  // temppage = SFRPAGE;
  // SFRPAGE = CAN0_PAGE;

  // CAN_Status = CAN0STA;
  // if((CAN_Status & 0x08)!=0)
  // {
  // 	  CAN0STA &= 0xf7;
//	  CAN0ADR = INTPEND1;
//	  temp = CAN0DATL;

 //  }

   
}

void Timer0_Overflow_Interrupt (void) interrupt 1 
{
  
}


⌨️ 快捷键说明

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