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

📄 control.c

📁 CAN总线与51单片机的接口原理图
💻 C
字号:
#include <AT892051.H>
#include <INTRINS.H>
#include <MATH.H>
#include <ABSACC.H>
sbit CS=P3^7;
sbit ALE=P3^5;
sbit RD=P3^0;
sbit WR=P3^1;
#define uchar unsigned char
#define uint unsigned int
//#define ulong unsigned long
#define MODREG 0x00
#define CMREG 0x80
#define STAREG 0x40
#define INTEREG 0xc0
#define IEREG 0x20
#define BT0REG 0x60
#define BT1REG 0xe0
#define OCREG 0x10
#define CLODREG 0xf8
#define AC0REG 0x08
#define AC1REG 0x88
#define AC2REG 0x48
#define AC3REG 0xc8
#define AM0REG 0x28
#define AM1REG 0xa8
#define AM2REG 0x68
#define AM3REG 0xe8
#define RxFRAM 0x08
#define RxBUF1 0x88
#define RxBUF2 0x48
#define RxBUF3 0xc8
#define RxBUF4 0x28
#define RxBUF5 0xa8
#define RxBUF6 0x68
#define RxBUF7 0xe8
#define RxBUF8 0x18
#define RxBUF9 0x98
#define RxBUF10 0x58
#define RxBUF11 0xd8
#define RxBUF12 0x38
#define TxFRAM 0x08
#define TxBUF1 0x88
#define TxBUF2 0x48
#define TxBUF3 0xc8
#define TxBUF4 0x28
#define TxBUF5 0xa8
#define TxBUF6 0x68
#define TxBUF7 0xe8
#define TxBUF8 0x18
#define TxBUF9 0x98
#define TxBUF10 0x58
#define TxBUF11 0xd8
#define TxBUF12 0x38

uchar Reads(uchar addrR);
void Writes(uchar addrW,uchar datas);
uchar updown(uchar a1);
void Delay15();

void main()
{uchar temp=0,temp1=0;
 uchar datal=0,datah=0;
 CS=0;
 ET0=0;
 ET1=0;
 EA=0;
 EX0=0;
 TMOD=0x05;
 TR0=0;

 temp=Reads(MODREG);
 while((temp&0x80)==0)
  {temp=temp|0x80;
   Writes(MODREG,temp);
  }
 Writes(CLODREG,0xe3);
 Writes(IEREG,0x00);
 Writes(AC0REG,0x46);
 Writes(AC1REG,0x04);
 Writes(AC2REG,0x00);
 Writes(AC3REG,0x00);
 Writes(AM0REG,0x87);
 Writes(AM1REG,0xff);
 Writes(AM2REG,0xff);
 Writes(AM3REG,0xff);
 Writes(BT0REG,0x8c);
 Writes(BT1REG,0x38);
 Writes(OCREG,0x58);
do
  {Writes(MODREG,0x10);
   temp=Reads(MODREG);
  }
 while((temp&0x80)!=0);

/* do{temp1=Reads(STAREG);}
 while((temp1&0x20)!=0x20);*/
 do
 {TH0=0x00;
  TL0=0x00;
  TR0=1;
  Delay15();
  TR0=0;
 
  datal=updown(TL0);
  datah=updown(TH0);
  Writes(TxFRAM,0x40);
  Writes(TxBUF1,0x4e);
  Writes(TxBUF2,0x04);
  Writes(TxBUF3,datah);
  Writes(TxBUF4,datal);
  Writes(CMREG,0x80);
  //Delay15();
  }
/* 
 temp1=Reads(STAREG);
 if(temp1&0x02==0x02)
 {P3_3=0;}
 {TH0=0x3C;
  TL0=0xB0;
  TR0=1;
  for(secnum=0;secnum<=20;secnum++)
   {TH1=0x00;
    TL1=0x00;
    TR1=1;
    for(onesec=0;onesec<10;onesec++)
      {TH0=0x3C;
       TL0=0xB0;
       do{;}while(!TF0);
	   TF0=0;
	  }
    TR1=0;*/
  
  while(1);
}

uchar Reads(uchar addrR)
{uchar temp1;
 P1=addrR;
 ALE=1;
 WR=1;
 RD=1;
 ALE=0;
 RD=0;
 P1=0xff;
 temp1=P1;
 RD=1;
 return(temp1);
}

void Writes(uchar addrW,uchar datas)
{ALE=1;
 RD=1;
 WR=1;
 P1=addrW;
 ALE=0;
 WR=0;
 P1=datas;
 WR=1;
}

/*void Delayl(uchar TIME) 
{uchar time1,time2,time3;
 for(time1=0;time1<TIME;time1++)
   {for(time2=0;time2<250;time2++)
      {for(time3=0;time3<100;time3++){;}}
   }
}*/

void Delay15()
{ uchar i,j,k;
  for(i=0;i<100;i++)
    {for(j=0;j<100;j++)
       {for(k=0;k<100;k++);}
    }
}  

uchar updown(uchar a1)
{
 uchar a2;
 a2=(a1%2)*128+((a1>>1)%2)*64+((a1>>2)%2)*32+((a1>>3)%2)*16+((a1>>4)%2)*8+((a1>>5)%2)*4+((a1>>6)%2)*2;   
 return(a2);
}   

⌨️ 快捷键说明

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