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

📄 salve._c

📁 用两片AVR(ATmega16)单片机 实现双机通信(双向
💻 _C
字号:
//包含所需头文件
#include <ioM16v.h>
#include <macros.h>
#include "display.c"



/*------宏定义------*/
#define uchar	unsigned char
#define uint	unsigned int



/*------函数定义------*/
//SPI函数
void spi_write(uchar sData);
uchar spi_read(void);

void delay(uint z)
{
 uint i,j;
 for(i=0;i<z;i++)
  for(j=0;j<1000;j++);
}


//端口初始化
void port_init(void)
{
 PORTA = 0x00;
 DDRA  = 0x00;
 PORTB = 0x00;
 DDRB  = 0x00;
 PORTC = 0x00;
 DDRC  = 0x00;
 PORTD = 0x00;
 DDRD  = 0x00;
}


void spi_init(void)
{
 //spi初始化
 DDRB|=BIT(PB6);
 SPCR = 0x40;
 SPSR = 0x00;
}


//功能:使用SPI发送一个字节
void spi_write(uchar sData)
{
 SPDR = sData;
 while(!(SPSR & BIT(SPIF)));
 //sData=SPDR;//读从机发回来的数据
}


//功能:使用SPI接收一个字节
uchar spi_read(void)
{
 SPDR = 0x00;
 while(!(SPSR & BIT(SPIF)));
 spi_write(1);
 return SPDR;
 
}


void init_devices(void)
{
 CLI(); //禁止所有中断
 MCUCR  = 0x00;
 MCUCSR = 0x80;//禁止JTAG
 GICR   = 0x00;
 port_init();
 spi_init();
 SEI();//开全局中断
}
//主函数
void main(void)
{
 init_devices();
 SEG_INIT();
 delay(100); 
 while(1)
 {
     SEG_R(spi_read());
	   delay(100); 
	 SEG_L(spi_read());
 }
}

⌨️ 快捷键说明

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