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

📄 define.h

📁 CAN总线上挂接两个节点
💻 H
字号:
/**************************************************************************************
项	目:基于CAN总线的自收发通信(节点1)
说	明:宏定义、管脚定义
模	块:define.h
作	者:PIAE GROUP
注释修改者:特	权
修改  时间:08.6.17.
**************************************************************************************/
/***感谢PIAE工作组提供的源码,这里特权根据自己的编程习惯做了一些修改并添加详细注释***/

#define uchar	unsigned char	//宏定义
#define uint	unsigned int	//宏定义

#define	N_can	13	//N_can代表一帧字节数

bit	TXD_flag = 0;	//若TXD_flag=1,要求发送处理
bit	RXD_flag = 0;   //RXD_flag=0说明无数据可以接收,RXD_flag=1说明有数据可以接收


/*数码管显示数值表*/
uchar code led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92, // 0, 1, 2, 3, 4, 5
	          0x82,0xf8,0x80,0x90, 0xff};    //  6, 7, 8, 9, (不显示)


uchar TX_buffer[13]; //接收的13个字节数据(//发送的数据)			           
uchar RX_buffer[13]; //接收的13个字节数据
uchar Txd_data = 0;	//CAN总线要发送的数据,也是要在数码管1-2位置显示的数据
uchar Rxd_data = 0; //CAN总线要接收的数据,也是要在数码管3-4位置显示的数据


/*P2口的管脚定义*/
sbit    LED_RED = P2^1; //该I/0口接红LED
sbit    LED_GRE = P2^2; //该I/0口接绿LED
sbit    SJA_RST = P2^3; //SJA1000复位管脚,低电平有效
sbit    SJA_CS  = P2^0; //SJA1000片选管脚,低电平有效
sbit	LED_0	= P2^7;	//数码管0
sbit 	LED_1	= P2^6; //数码管1
sbit	LED_2	= P2^5;	//数码管2
sbit 	LED_3	= P2^4; //数码管3


/*P3口的管脚定义*/
sbit	SJA_RD	= P3^7;
sbit	SJA_WR	= P3^6;


/*CAN总线SJA1000寄存器地址定义(用的是PeliCAN模式,扩展帧EFF模式)*/
//xdata ----> 可寻址片外ram (64k地址范围:0000H-FFFFH)

uchar   xdata    MODR     _at_   0xFE00;	// 模式寄存器
uchar   xdata    CMR	  _at_   0xFE01;	// 命令寄存器
uchar   xdata    SR	      _at_   0xFE02;	// 状态寄存器
uchar   xdata    IR	  	  _at_   0xFE03;	// 中断寄存器
uchar   xdata    IER	  _at_   0xFE04;	// 中断使能寄存器

uchar   xdata    BTR0	  _at_   0xFE06;	// 总线定时寄存器0 ;总线波特率的选择
uchar   xdata    BTR1	  _at_   0xFE07;	// 总线定时寄存器1 ;总线波特率的选择
uchar   xdata    OCR	  _at_   0xFE08;	// 输出控制寄存器

	// 验收代码寄存器(16-19)
uchar   xdata    ACR0	  _at_   0xFE10;//16;
uchar   xdata    ACR1	  _at_   0xFE11;//17;
uchar   xdata    ACR2	  _at_   0xFE12;//18;
uchar   xdata    ACR3	  _at_   0xFE13;//19;

	// 验收屏蔽寄存器(20-23)
uchar   xdata    AMR0	  _at_   0xFE14;//20;
uchar   xdata    AMR1	  _at_   0xFE15;//21;
uchar   xdata    AMR2	  _at_   0xFE16;//22;
uchar   xdata    AMR3	  _at_   0xFE17;//23;

uchar   xdata    CDR	  _at_   0xFE1F;//31;	// 时钟分频器
uchar   xdata    ALC	  _at_   0xFE0B;//11;	// 仲裁丢失捕捉寄存器
uchar   xdata    ECC	  _at_   0xFE0C;//12;	// 误码捕捉寄存器

	// 发送缓冲器地址(16-28)
uchar   xdata    TBSR0	  _at_   0xFE10;//16;//TX帧信息
uchar   xdata    TBSR1	  _at_   0xFE11;//17;//TX识别码1 (ID.21-ID.28)
uchar   xdata    TBSR2	  _at_   0xFE12;//18;//TX识别码2 (ID.13-ID.20)
uchar   xdata    TBSR3	  _at_   0xFE13;//19;//TX识别码3 (ID.5-ID.12)
uchar   xdata    TBSR4	  _at_   0xFE14;//20;//TX识别码4(高5位是ID.0-ID.4)
uchar   xdata    TBSR5	  _at_   0xFE15;//21;//数据1
uchar   xdata    TBSR6	  _at_   0xFE16;//22;//数据2
uchar   xdata    TBSR7	  _at_   0xFE17;//23;//数据3
uchar   xdata    TBSR8	  _at_   0xFE18;//24;//数据4
uchar   xdata    TBSR9	  _at_   0xFE19;//25;//数据5
uchar   xdata    TBSR10	  _at_   0xFE1A;//26;//数据6
uchar   xdata    TBSR11	  _at_   0xFE1B;//27;//数据7
uchar   xdata    TBSR12	  _at_   0xFE1C;//28;//数据8

	// 接收缓冲器地址(16-28)
uchar   xdata    RBSR0	  _at_   0xFE10;//16;
uchar   xdata    RBSR1	  _at_   0xFE11;//17;
uchar   xdata    RBSR2	  _at_   0xFE12;//18;
uchar   xdata    RBSR3	  _at_   0xFE13;//19;
uchar   xdata    RBSR4	  _at_   0xFE14;//20;
uchar   xdata    RBSR5	  _at_   0xFE15;//21;
uchar   xdata    RBSR6	  _at_   0xFE16;//22;
uchar   xdata    RBSR7	  _at_   0xFE17;//23;
uchar   xdata    RBSR8	  _at_   0xFE18;//24;
uchar   xdata    RBSR9	  _at_   0xFE19;//25;
uchar   xdata    RBSR10	  _at_   0xFE1A;//26;
uchar   xdata    RBSR11	  _at_   0xFE1B;//27;
uchar   xdata    RBSR12	  _at_   0xFE1C;//28;


/*子函数申明*/
void init_mcu(void);
void init_sja1000(void);
void rxd_deal(void);
void txd_deal(void);
void can_txd(void);
void delay(uchar);
void led_show(uchar,uchar);

⌨️ 快捷键说明

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