www.pudn.com > CAN_USB.rar > main.c


#include  
#include  
 
#include  
#include  
 
 
#include "define.h" 
 
#include "Initial.h" 
#include "SCI_COM.h" 
 
#include "soft.h" 
#include "D12.h" 
#include "Interrupt.h" 
#include "CAN.h" 
 
#include "my_APP.h" 
 
#pragma CODE_SEG DEFAULT 
//注意:TBDML中的设置: 
//当在没有外部晶振的情况下,TBDML中的速度设置为6M; 
//在D12加上之后,没有初始化的时候,速度是4.465M 
 
void main(void) 
{ 
	unsigned char i = 0; 
	unsigned int i_st = 0; 
	UINT status = 0; 
	UINT j = 0; 
	UINT PB_data = 0; 
	 
	Delay(5000); 
	CLKSEL = 0x80;//2倍频 
//	COPCTL = 0x07;//	(*   Page 289   *)看门狗 
//	Soft_Init();	 
//------------------------------------------------------------------------------------				 
	Port_Init(); 	 
//------------------------------------------------------------------------------------	 
	D12_SPD_0;	 
	 
	Set_LED(0xFF);//可以设置到0x41,芯片频率是24M,并口BDM可以下载,但是TBDML不能下载. 
					//设置到0x42,芯片频率正常,0x40,芯片保护. 
	D12_SetMode(0x02,0x42); 
	Delay(40000); 
    D12_SetMode(0x12,0x42);		 
	 
	if(D12_ReadChipID() != 0x1012) 
	{ 
		Set_LED(0x55); 
		while(1); 
	} 
	 
	RTIInit(); 
	SCI_Initial();	//串口初始化 
	CAN0_Initial();	//CAN0初始化 
	CAN1_Initial();	//CAN0初始化 
	 
//	Write_To_SCI0("SCI0 -> PDIUSBD12 initial success!\n"); 
//	Write_To_SCI1("SCI1 -> PDIUSBD12 initial success!\n"); 
	 
	Set_LED(0x00);	 
 
//---------   要发送的CAN数据初始化	  ---------------- 
	SendFrame.RemoteFlag = 0; 
	SendFrame.ExternFlag = 1; 
	SendFrame.ID = 0x12345; 
	SendFrame.Priority = 3; 
	SendFrame.DataLen = 8; 
	 
	for(i=0;i<8;i++)	 
		SendFrame.Data[i] = i; 
 
	 
	USB_Packet.USB_Packet_struct.start = 0xAB; 
	USB_Packet.USB_Packet_struct.CAN_frame_num = 0; 
	USB_Packet.USB_Packet_struct.end = 0xCD; 
//------------------------------------------------------ 
		 
	EnableInterrupts;//中断使能 
	 
	Delay(10000);	 
	 
	while(1) 
	{ 
		//实时中断控制的LED 
		if(RTI_count < 10) 
			RTI_LED_ON; 
		else if(RTI_count < 20) 
		{ 
			RTI_LED_OFF;									 
		} 
		else 
		{ 
			if(USB_D12_OK == 1) 
				USB_LED_ON; 
			if(CAN0RIER & 0x01) 
				CAN0_RX_LED_ON; 
			if(CAN1RIER & 0x01) 
				CAN1_RX_LED_ON; 
			 
			if(CAN_BTR0 == BTR0_125kbps) 
			{ 
				LED2_OFF; 
				LED3_OFF; 
			} 
			else if(CAN_BTR0 == BTR0_250kbps) 
			{ 
				LED2_ON; 
				LED3_OFF; 
			} 
			else if(CAN_BTR0 == BTR0_500kbps) 
			{ 
				LED2_OFF; 
				LED3_ON; 
			} 
			else if(CAN_BTR0 == BTR0_1000kbps) 
			{ 
				LED2_ON; 
				LED3_ON; 
			} 
			 
			RTI_count = 0;			 
		} 
 
	}    
}