📄 try.c
字号:
#include<stdio.h>
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
#define NBTR0 0x30
#define NBTR1 0x31
#define AMRBF 0x32
#define ACRBF 0x36
#define TXBF 0x40
#define MODE 0x0F00
#define CMR 0x0F01
#define SR 0x0F02
#define IR 0x0F03
#define IER 0x0F04
#define BTR0 0x0F06
#define BTR1 0x0F07
#define OCR 0x0F08
#define ALC 0x0F0B
#define ECC 0x0F0C
#define EWLR 0x0F0D
#define RXERR 0x0F0E
#define TXERR 0x0F0F
#define TXB 0x0F10
#define RXB 0x0F10
#define ACR 0x0F10
#define AMR 0x0F14
#define RMC 0x0F1D
#define RBSA 0x0F1E
#define CDR 0x0F1F
sbit RES=P1^0;
sbit lamp=P1^1;
/*****************************DELAY*******************************/
void delay(uint i)
{uint j;
for(j=0;j<i;j++);
}
/***************************SJA1000_INIT**************************/
void sja1000_init(void)
{uchar clear;
delay(1000);
XBYTE[MODE]=0x0D;
XBYTE[CDR]=0x88;
XBYTE[IER]=0x0d;
XBYTE[AMR]=0xff;
XBYTE[AMR+1]=0xff;
XBYTE[AMR+2]=0x0;
XBYTE[AMR+3]=0x0;
XBYTE[ACR]=0xea;
XBYTE[ACR+1]=0x20;
XBYTE[BTR0]=0x00;
XBYTE[BTR1]=0x1c;
XBYTE[OCR]=0xAA;
XBYTE[RBSA]=0x0;
XBYTE[TXERR]=0x0;
clear=XBYTE[ECC];
XBYTE[MODE]=0x0C;
}
/*************************receive array data*****************************/
void received()
{uint i;
uchar acc,bcc,c;
uchar a[14];
bcc=XBYTE[SR];
while(bcc&0xc3)
{
if(bcc&0x80)
{
acc=XBYTE[IR];
XBYTE[MODE]=0x08;
delay(1000); ///to wait for BUS entering into normal mode
continue;
}
else if(bcc&0x08)
{
XBYTE[CMR]=0x0c;
continue;
}
else if(bcc&0x01)
{
lamp=0;
a[0]=XBYTE[RXB];
c=a[0];
c=c%16;
c=c+4;
for(i=1;i<c;i++)
{
a[i]=XBYTE[RXB+i];
}
XBYTE[CMR]=0x04;
}
bcc=XBYTE[SR];
}
acc=XBYTE[ALC];
acc=XBYTE[ECC];
}
/*************************STATE Analyse*****************************/
void sstate()
{ uchar acc;
acc=0xff;
while(acc&0x10)
{
acc=XBYTE[SR];
}
acc=0xff;
while(!(acc&0x08))
{
acc=XBYTE[SR];
}
acc=0xff;
while(!(acc&0x04))
{
acc=XBYTE[SR];
}
}
/*******************************send data**********************************/
void send_data()
{
XBYTE[TXB]=0x07;
XBYTE[TXB+1]=0xEA;
XBYTE[TXB+2]=0x20;
XBYTE[TXB+3]=0xA3;
XBYTE[TXB+4]=0xA3;
XBYTE[TXB+5]=0xA3;
XBYTE[TXB+6]=0xA3;
XBYTE[TXB+7]=0xA3;
XBYTE[TXB+8]=0xA3;
XBYTE[TXB+9]=0xA3;
XBYTE[CMR]=0x010;
}
/********************************MAIN.C**********************************/
void main(void)
{
delay(1000);
sja1000_init();
XBYTE[CMR]=0x04;
sstate();
send_data();
lamp=0;
received();
delay(1000);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -