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

📄 spi._c

📁 ISD1720芯片实现录音,定点录音,播放,定点播放等.
💻 _C
字号:
#include "1602显示.c"
#include "4X4键盘.c"

void spi_sent_init(void)
{ PORTB |= (1<<PB4)|(1<<PB5)|(1<<PB6)|(1<<PB7); 
  DDRB |= (1<<DDB5)|(1<<DDB7)|(1<<DDB4);       //设置MOSI,SCK和SS为输出 
  SPCR = (1<<SPE)|(1<<DORD)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);//设置为主机,LSB先发送
  SPSR = 0x00;              //预分频为128
}

unsigned char SPI_sent(unsigned int Data)
{ 
  unsigned char sign;
  PORTB &=~ (1<<PB4);            //强制接收方进入从模式
  SPCR |= (1<<MSTR);             // MSTR有时会被清零,这里强制进入主机模式
  SPDR = Data;              //启动数据传输 
  while(!(SPSR&(1<<SPIF)));      //等待传输结束 
  PORTB |= (1<<PB4);
  sign=SPSR;
  sign=SPDR;
  return sign;            
}
/**********************************************************
   注意下面接到的数据是发的两位,原因可能是多接收了一位
/************************************************************/
void SPI_receive_int(void)
{
   /* 设置MISO为输出,其他为输入 */
    DDRB=0x02;
	PORTB|=BIT(4);
}
unsigned char SPI_receive()
{
   unsigned char receive;
   SPCR = (1<<SPE)|(1<<DORD);/* 使能 SPI */
   while(!(SPSR & (1<<SPIF)));/* 等待接收结束 */
   receive=SPSR;
   receive=SPDR;
   return receive;/* 返回数据 */
}

void main(void)
{
   unsigned char F_data=1,j=0;
  // /*
   LCD_init();
   while(1)
   {
   if(!(PINB&0x08))
   {
   SPI_receive_int();
   F_data=SPI_receive();
   LCD_write_chang_data(0,0,F_data);
   }
   }
  // */
  /*
	spi_sent_init();
  while(1)
   {
    DDRD=0xFF;
    if(key_press())
	{
	F_data=key_scan();
    //PORTB&=0xF7;
	j=SPI_sent(F_data);
	LCD_init();
    LCD_write_chang_data(0,0,F_data);
    }
   }
  // */
}

⌨️ 快捷键说明

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