?? 00-自檢模式.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 + -