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

📄 init.c

📁 这个是用AVR单片机的SPI口与控制器通信时编写的程序。
💻 C
字号:
#include<iom16v.h>
#include "seandre.h"
#define uchar unsigned char
/******************************************************************
*prototype:void set_cs(uchar i)
* function:define cs pin of mcp2515 with PD^5
******************************************************************/
void set_cs(uchar i)
{if(i)   PORTD|=0x20;
 else    PORTD&=0xdf;
} 
/******************************************************************
*prototype:void set_rx0bf(uchar i)
* function:define rx0bf pin of mcp2515 with PC^3
******************************************************************/
void set_rx0bf(uchar i)
{if(i)   PORTC|=0x08;
 else    PORTC&=0xf7;
}
/******************************************************************
*prototype:void set_rx1bf(uchar i)
* function:define rx1bf pin of mcp2515 with PC^4
******************************************************************/
void set_rx1bf(uchar i)
{if(i)   PORTC|=0x10;
 else    PORTC&=0xef;
}
/******************************************************************
*prototype:void set_tx0rts(uchar i)
* function:define tx0rts pin of mcp2515 with PC^5
******************************************************************/
void set_tx0rts(uchar i)
{if(i)   PORTC|=0x20;
 else    PORTC&=0xdf;
}
/******************************************************************
*prototype:void set_tx1rts(uchar i)
* function:define tx1rts pin of mcp2515 with PC^6
******************************************************************/
void set_tx1rts(uchar i)
{if(i)   PORTC|=0x40;
 else    PORTC&=0xbf;
}
/******************************************************************
*prototype:void set_tx2rts(uchar i)
* function:define tx2rts pin of mcp2515 with PC^7
******************************************************************/
void set_tx2rts(uchar i)
{if(i)   PORTC|=0x80;
 else    PORTC&=0x7f;
}
/******************************************************************
*prototype:void set_reset(uchar i)
* function:define reset pin of mcp2515 with PD^4
******************************************************************/
void set_reset(uchar i)
{if(i)   PORTD|=0x10;
 else    PORTD&=0xef;
}
/******************************************************************
*prototype:void set_int(uchar i)
* function:define int pin of mcp2515 with PC^2
******************************************************************/
void set_int(uchar i)
{if(i)   PORTC|=0x04;
 else    PORTC&=0xfb;
}
/******************************************************************
*prototype:void initmcu()
* function:initialize mega162
******************************************************************/
void initmcu()
{uchar temp;
 DDRB=(1<<DDB5)|(1<<DDB7);
 PORTB=(1<<PORTB6);
 SPCR=(1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(1<<SPR0);
 SPSR=0x00;
 temp=SPSR;
 temp=SPDR;
}
/******************************************************************
*prototype: void initp2515()
* function: initialize mcp2515
******************************************************************/
void initp2515()
{set_cs(0);
 send(0xc0);  //////////reset
 set_cs(1);
 set_cs(0);
 send(0x02); //////////enter into configure mode
 send(0x0f);
 send(0x80);  
 set_cs(1);
 set_cs(0);
 send(0x03); //////////make sure it's being in configure mode
 send(0x0e);
 rec();  
 set_cs(1);
 set_cs(0);
 send(0x02); //////////set cnf3
 send(0x28);
 send(0x05);  
 set_cs(1);
 set_cs(0);
 send(0x02); /////////set cnf2
 send(0x29);
 send(0xb8);  
 set_cs(1);
 set_cs(0);
 send(0x02); /////////set cnf1    this three together determines the device's baudrate 
 send(0x2a);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); ///////////rxm0
 send(0x20);
 send(0xdf);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x21);
 send(0x40);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x22);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x23);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); ///////////////rxm1
 send(0x24);
 send(0xdf);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x25);
 send(0x40);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x26);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x27);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); //////////////////rxf0
 send(0x00);
 send(0x40);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x01);
 send(0xa0);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x02);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x03);
 send(0x00);  
 set_cs(1); 
 set_cs(0);
 send(0x02); /////////////////rxf1
 send(0x04);
 send(0x60);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x05);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x06);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x07);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); ////////////////rxf2
 send(0x08);
 send(0x40);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x09);
 send(0xa0);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x0a);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x0b);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); /////////////////////rxf3
 send(0x10);
 send(0x60);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x11);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x12);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x13);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); /////////////////////rxf4
 send(0x14);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x15);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x16);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); 
 send(0x17);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); ////////////////////rxf5
 send(0x18);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x19);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x1a);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02);
 send(0x1b);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); /////////////////////rxb0ctrl
 send(0x60);
 send(0x04);  
 set_cs(1);
 set_cs(0);
 send(0x02); ///////////////////rxb1ctrl
 send(0x70);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x02); ///////////////////txrtsctrl
 send(0x0d);
 send(0x07);  
 set_cs(1);
 set_cs(0);
 send(0x02); ///////////////////bfpctrl
 send(0x0c);
 send(0x0f);  
 set_cs(1);
 set_cs(0);
 send(0x02); //////////////////caninte
 send(0x2b);
 send(0x20);  
 set_cs(1);
 set_cs(0);
 send(0x02); /////////////////enter into normal mode
 send(0x0f);
 send(0x00);  
 set_cs(1);
 set_cs(0);
 send(0x03); ////////////////make sure it's being in normal mode 
 send(0x0e);
 rec();  
 set_cs(1);
}

⌨️ 快捷键说明

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