📄 main.c
字号:
#include <AT89X51.H>
#include "SJA_BCANCONF.h"
#include "SJA_BCANFUNC.c"
#include <display_s.h>
void Init_Cpu(void);
void Init_T0(void);
void Sja_1000_Init(void);
void disp_ok(void);
void disp_err(void);
void Init_T0(void);
bit flag_sec;
unsigned char data a[5];
unsigned char data send_data[10],rcv_data[10];
unsigned char databuf,sec_data,second;
unsigned char data Tmod_data;
unsigned char bdata flag_init;
sbit rcv_flag=flag_init^0;
sbit err_flag=flag_init^2;
unsigned char i;
void main(void)
{
Sja_1000_Init();
Init_T0();
Init_Cpu();
flag_init=0x00;
while(1)
{
if(rcv_flag)
{
rcv_flag=0; //有接收中断,单片机进行处理
BCAN_DATA_RECEIVE(rcv_data); //将数据从接受缓冲器读入到rcv_data中
BCAN_CMD_PRG(0x04); //发送命令,释放接受缓冲器
disp_ok();
}
if(flag_sec)
{
flag_sec=0;
send_data[0]=0xaa;
send_data[1]=0x08;
//send_data[2]=second;
for(i=2;i<10;i++)
send_data[i]=0xff;
BCAN_DATA_WRITE(send_data); //将数据写入发送缓冲器中
BCAN_CMD_PRG(0x01); //命令,发送请求
}
if(err_flag)
{
err_flag=0;
disp_err();
Sja_1000_Init();
}
display(a);
}
}
void ex0_int(void) interrupt 0 using 1
{
SJA_BCANAdr=REG_INTERRUPT;
flag_init=*SJA_BCANAdr; //将sja1000中断标志信号读入到 flag_init(bdata)
}
void T0_init(void) interrupt 1 using 2
{
TR0=0; //定时器溢出中断,置位flag_sec标志/second
sec_data--;
if(sec_data==0)
{
sec_data=0x10;
TH0=0x80;
TL0=0x60;
flag_sec=1;
second++;
}
TR0=1;
}
void Init_Cpu(void)
{
PX0=1;
IT0=1;
EX0=1;
ET0=1;
EA=1;
sec_data=0x10;
}
void Init_T0(void)
{
Tmod_data=TMOD;
Tmod_data&=0xf0;
Tmod_data|=0x01;
TMOD=Tmod_data;
TH0=0x80;
TL0=0x60;
TR0=1;
sec_data=0x20;
second=0x00;
}
void Sja_1000_Init(void)
{
BCAN_ENTER_RETMODEL();
BCAN_SET_BANDRATE(0x04);
BCAN_SET_OBJECT(0xaa,0x00);
BCAN_SET_OUTCLK(0xaa,0x48);
BCAN_QUIT_RETMODEL();
SJA_BCANAdr=REG_CONTROL; //使能所有中断
*SJA_BCANAdr|=0x1e;
}
void disp_ok(void)
{
a[0]=0x00;
a[1]=0x11;
a[2]=0x10;
databuf=rcv_data[2];
databuf>>=0x04;
a[3]=databuf;
databuf=rcv_data[2];
databuf=databuf&0x0f;
a[4]=databuf;
}
void disp_err(void)
{
a[0]=0x00;
a[1]=0x0e;
a[2]=0x10;
a[3]=0x0f;
a[4]=0x0e;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -