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

📄 ex4m_test.c

📁 一个CAN学习程序
💻 C
字号:


#include <p18f458.h>	// p18cxxx.h must have current processor
#include "CAN18XX8.h"	// Purpose of using AN738 Subroutine !!
#include "WAP_LCD.H"	
#include <stdlib.h>

	
void Delay_100(void) ;

char 	Temp_ASCII[10] ;
char	WaitOnBus ;

union
	{
		unsigned char	Bytes[2] ;
		unsigned int		Word ;	
	}     AD_ALL ;

	unsigned char 	Var1,Var2 ;

	unsigned long	TX_ID1 ;
	BYTE			TX_Data_Buf1[8] ;

	unsigned long	RX_ID1 ;
	BYTE			RX_Data_Buf1[8] ;
	BYTE			RX_Data_Len1	;
	enum 			CAN_RX_MSG_FLAGS	RX1_Message_Flag ; 	

	unsigned long	RX_ID2 ;
	BYTE			RX_Data_Buf2[8] ;
	BYTE			RX_Data_Len2	;
	enum 			CAN_RX_MSG_FLAGS	RX2_Message_Flag ; 			

#define 			OUTGOING_ID		0X210 
#define			INCOMING_ID 		0X200

#define			MESSAGE_ID1		0x200
#define			MESSAGE_ID2		0x88
#define			RX_Filter0			0x100
#define			RX_Filter1			0x00
#define			RX_Filter2			0x00
#define			RX_Filter3			0x00
#define			RX_Filter4			0x00
#define			RX_Filter5			0x00
#define			RXB0_MASK		0x7ff
#define			RXB1_MASK		0x7ff

#define			CONFIG_ID_MIN	0x81
#define			CONFIG_ID_MAX	0x8a

#define			SW2		PORTBbits.RB0 
#define			SW3		PORTAbits.RA4

const rom unsigned char 	REQUEST_ID[12] = { 0x100 , 0x110 , 0x120, 0x130, 0x140,0x150,0x160,0x170,0x180,0x190,0x1a0,0x1b} ;
unsigned RequestID
void main( void )
{

	PORTD = 0x00 ;	
	TRISD =  0x00 ;
	TRISBbits.TRISB2 = 0 ;			// CANTX
	TRISBbits.TRISB3 = 1 ;			// CANRX
	TRISBbits.TRISB0 = 1 ;			// Switch 2 
	TRISAbits.TRISA4 = 1 ;			// Switch 3
	
	CMCON = 0b00000111 ;			//  Disable Comparator Module 
	ADCON0 = 0b10000001 ;			//  Initial ADCON0 for A/D Module 
	ADCON1bits.ADFM = 1 ;		//  Right Justified !!

	
		OpenLCD( ) ;
	
		Delay_100( ) ;
		
		putrsLCD("FL=      IN=        ") ;
		LCD_Set_Cursor(0,1) ;
		putrsLCD("ID=      AD=      ") ;
		
		itoa ( MESSAGE_ID1 ,Temp_ASCII ) ;
		LCD_Set_Cursor(3,0) ;
		putsLCD(Temp_ASCII ) ;
		
		itoa (RX_Filter0,Temp_ASCII ) ;
		LCD_Set_Cursor(3,1) ;
		putsLCD(Temp_ASCII ) ;
	
	//
	// Initialize CAN Communication Module !!
	// The Sequence of Parameter is SJW,BRP,PHASEG1,PHASEG2,PROPSEG, Mode !!
	//
	
	CANInitialize(    2,8,3,3,1,		CAN_CONFIG_LINE_FILTER_OFF & 
									CAN_CONFIG_SAMPLE_ONCE & 
									CAN_CONFIG_VALID_STD_MSG &
									CAN_CONFIG_PHSEG2_PRG_ON ) ;

	CANSetOperationMode(CAN_OP_MODE_CONFIG) ;

	CANSetMask(CAN_MASK_B1, 0x7ff, CAN_CONFIG_STD_MSG ) ;	// Set Mask For Standard Data Frame 
	CANSetMask(CAN_MASK_B2, 0x7ff, CAN_CONFIG_STD_MSG ) ;
	
	CANSetFilter(CAN_FILTER_B1_F1, RX_Filter0  , CAN_CONFIG_STD_MSG) ;
	CANSetFilter(CAN_FILTER_B1_F2, 0x00000000  , CAN_CONFIG_STD_MSG) ;
	CANSetFilter(CAN_FILTER_B2_F1, 0x00000000 , CAN_CONFIG_STD_MSG) ;
	CANSetFilter(CAN_FILTER_B2_F2, 0x00000000  , CAN_CONFIG_STD_MSG) ;
	CANSetFilter(CAN_FILTER_B2_F3, 0x00000000  , CAN_CONFIG_STD_MSG) ;
	CANSetFilter(CAN_FILTER_B2_F4, 0x00000000  , CAN_CONFIG_STD_MSG) ;

	CANSetOperationMode(CAN_OP_MODE_NORMAL) ;

	TX_Data_Buf1[0] = 0x01 ;
	TX_Data_Buf1[1] = 0x02 ;
	TX_Data_Buf1[2] = 0x03 ;
	TX_Data_Buf1[3] = 0x04 ;
	TX_Data_Buf1[4] = 0x05 ;
	ConfigID = CONFIG_ID_MIN ;

	// TX_Data_Buf1[0] 

⌨️ 快捷键说明

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