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

📄 00-自检模式.c

📁 CAN现场总线.rar
💻 C
字号:
//00-自检模式.c
//akuei2 16-10-09

#include "reg52.h"
#include "sja1000.h"
#include "can.h"

//IO定义
sbit SJACS=P2^0;
sbit SJARST=P2^3;

//数码管码,位选码定义
const unsigned char code Led_Code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
const unsigned char code Led_Select[]={0xef,0xdf,0xbf,0x7f}; 

//点击变量定义
unsigned char Click;

//函数声明
void Display(void);

//50微秒延迟函数
void Delay_50us(int t)
{
	int j; 
    t--;
	for(;t>0;t--)  
   		for(j=19;j>0;j--);
    
}

//变量初始化函数
void Init_Data(void)
{
	int i;

	ACR[0]='C';
	ACR[1]='A';
	ACR[2]='N';
	ACR[3]='1';
	AMR[0]=0x00;
	AMR[1]=0x00;
	AMR[2]=0x00;
	AMR[3]=0x00;

	TXD_Buffer[0]=0x88;
	TXD_Buffer[1]='C';
	TXD_Buffer[2]='A';
	TXD_Buffer[3]='N';
	TXD_Buffer[4]='2';
	TXD_Buffer[5]=0x00;
	TXD_Buffer[6]=0x11;
	TXD_Buffer[7]=0x22;
	TXD_Buffer[8]=0x33;
	TXD_Buffer[9]=0x44;
	TXD_Buffer[10]=0x55;
	TXD_Buffer[11]=0x66;
	TXD_Buffer[12]=0x77;
	
	for(i=0;i<13;i++) RXD_Buffer[i]=0x00;

	TXD_Data=0x00;
	RXD_Data=0x00;
}

//CPU初始化函数
void Init_CPU(void)
{
	SJACS=SJARST=1;
	IT0=1; IT1=0;
	EX0=EX1=EA=1;
}

//主函数
void main(void)
{
	Init_Data();
	Init_CPU();
	Init_CAN();

	while(1)
	{
		Display();
	}
}

//显示函数
void Display(void)
{
	int Digit[4],i;
	Digit[3]=TXD_Data/10;		//第一个数码管取千位
	Digit[2]=TXD_Data%10;		//第二个数码管取百位
	Digit[1]=RXD_Data/10;		//第三个数码管取十位
	Digit[0]=RXD_Data%10;		//第四个数码管取个位
	for(i=0;i<4;i++)
	{
		P0=Led_Code[Digit[3-i]];		//送数码管码
		P2=Led_Select[i];				//送位选码
		Delay_50us(20);					//延迟1微秒
	}
}

//外部中断0函数
void Ir_EX0(void) interrupt 0
{
	EA=0;					//关闭全局使能
	EX0=0;					//外部中断0使能使无效
	Delay_50us(20);			//适当延迟
	Click++;
	if(Click>=100) Click=0;	
	TXD_Data=Click;			//读取点击变量
	TXD_Buffer[5]=TXD_Data;	//发送缓冲赋值
	CAN_TXD();				//调用发送函数
	EX0=1;					//外部中断0使能使有效
	EA=1;					//恢复全局使能
}

//外部中断1函数
void Ir_EX1(void) interrupt 2
{
	EA=0;						//关闭全局使能
	EX1=0;						//外部中断1使能使无效
	CAN_RXD();					//调用发送函数
	RXD_Data=RXD_Buffer[5];		//读取TX信息的数据
	EX1=1;						//外部中断1使能使有效
	EA=1;						//恢复全局使能
}

⌨️ 快捷键说明

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