📄 main.c
字号:
#include <at89x52.h>
#include "SJA1000_PELI.h"
extern bit g_TiFlag;
extern bit g_RiFlag;
extern void SJAInit(void);
extern bit SJAReceData(unsigned char *ReceiveDataBuf);
void SerialInit(void);
void ComSendChar(unsigned char ch);
void ComSendArr(unsigned char *buffer);
void ReceData(void);
void DelayTime (unsigned char times);
unsigned char canbuffer[11];
unsigned char combuffer[5];
bit g_ComSendFlag;
/*********************************************************************************************
主函数
*********************************************************************************************/
void main(void)
{
SJA_RESET = 1;
DelayTime(50);
SJA_RESET = 0;
DelayTime(500);
SJA_RESET=1;
EA = 0;
SJAInit();
SerialInit();
EX0 = 1;
EA =1;
while(1)
{
P1_3 = 1;
if (g_RiFlag)
{
g_RiFlag = 0;
ReceData();
P1_0 = !P1_0;
}
if (g_ComSendFlag)
{
g_ComSendFlag=0;
ComSendArr(combuffer);
P1_1 = !P1_1;
}
P1_3 = 0;
}
}
/**********************************************************************************************
串口
**********************************************************************************************/
void SerialInit(void)
{
TMOD = 0x20; //定时器1工作于方式2:8位常数自动装载
SCON = 0x50; //串口方式1
//PCON |= 0x80; //SMOD = 1
TH1 = 0xff; //11.0592MHz.
TL1 = 0xff; //BAUDRATE = 57600
//ET1 = 1; //打开定时器1中断
TR1 = 1; //定时器1开始计数
//ES = 1; //打开串口中断
//IT0 = 1; //INT0边缘触发
//EX0 = 1; //打开外部中断
}
void ComSendChar(unsigned char ch)
{
SBUF = ch;
while(!TI);
TI = 0;
}
void ComSendArr(unsigned char *buffer)
{
unsigned char i;
for(i=0; i<5; i++)
{
ComSendChar(buffer[i]);
}
}
/**********************************************************************************************
CAN
**********************************************************************************************/
void ReceData(void)
{
SJAReceData(canbuffer);
SJARegWrite(1,0x04);
combuffer[0]=canbuffer[1];
combuffer[1]=canbuffer[3];
combuffer[2]=canbuffer[4];
combuffer[3]=canbuffer[5];
combuffer[4]=canbuffer[6];
g_ComSendFlag = 1;
}
/**********************************************************************************************
延时
**********************************************************************************************/
void DelayTime (unsigned char times)
{
unsigned char i=0;
while(times--)
{
for(i=0;i<50;i++)
{;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -