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

📄 main.cpp

📁 10:8的双通道音频矩阵源码
💻 CPP
字号:
/*==================================
G40A8-main.c
==================================*/
#include"G40A8.h"

unsigned char reg[0x30]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char i2c=3;

/*========================================
========================================*/
void McuInit(void)
{
  CLI();
  PORTB=0xff;
  DDRB =0xff;
  PORTC=0xff;
  DDRC =0xff;
  PORTD=0xff;
  DDRD =0xff;
  //
  WDR();
  WDTCR=0x18;
  WDTCR=0x1f;

 //TWI initialisation
  TWCR= 0X00; //disable twi
  TWBR= 0x01; //set bit rate
  TWSR= 0x00; //set prescale
  TWAR= 0x10; //set slave address
  TWCR= 0x45; //enable twi

  MCUCR = 0x00;
  GICR  = 0x00;
  TIMSK = 0x00; //timer interrupt sources

  SEI();
}
/*========================================
========================================*/
int main()
{
  DelayMs(100);
  McuInit();
  TWAR = 0x10 | ((PINC&0x07)<<5);  //I2C Slave
  LEDon();
  while(1)
  {
    WDR();
    DelayMs(10);
    LEDon();
    if(i2c)
    {
      i2c--;
      SetAudioMux();
    }
  }
}
/*========================================
========================================*/
#pragma vector=TWI_vect
__interrupt void twi_isr(void)
{
  static unsigned char Sub=0;
  LEDoff();
  switch(TWSR&0xf8)
  {
  case 0x60://收到寻址+写
  case 0xa0://收到重复启动信号
    TWCR|=0xc0;
    break;
  case 0x80://收到子地址或数据
    if(!Sub)
      Sub=TWDR;
    else
    {
      reg[Sub]=TWDR;
      Sub=0;
      i2c=3;
    }
    TWCR|=0xc0;
    break;
  case 0xa8://收到寻址+读
    TWDR=reg[Sub];
    Sub=0;
    TWCR|=0xc0;
    break;
  case 0x00:
    TWCR|=0x90;
    break;
  }
}
/*==================================
END
==================================*/

⌨️ 快捷键说明

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