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

📄 exp7.c

📁 ALTERA NIOS处理器
💻 C
字号:
#include "excalibur.h"

void Button_ISR(int context);
void Switch_ISR(int context);

int m_LLine,m_RLine,m_LHeadPhone,m_RHeadPhone;

int main(void)
{    	

    na_SPI0->np_spistatus=0;               //清零标志位
    na_SPI0->np_spicontrol=0;              //禁止中断
    na_SPI0->np_spislaveselect=0x0001;     //选择SS_0
    m_LLine=0x0017;
    m_RLine=0x0217;
    m_LHeadPhone=0x0479;
    m_RHeadPhone=0x0679;
    
    nr_spi_txchar(0x1e00,na_SPI0);         //初始化寄存器Reset    
    nr_delay(1);
    nr_spi_txchar(m_LLine,na_SPI0);        //初始化寄存器Left Line
    nr_delay(1);
    nr_spi_txchar(m_RLine,na_SPI0);        //初始化寄存器Right Line
    nr_delay(1);
    nr_spi_txchar(m_LHeadPhone,na_SPI0);   //初始化寄存器Left Headphone
    nr_delay(1);
    nr_spi_txchar(m_RHeadPhone,na_SPI0);   //初始化寄存器Right Headphone
    nr_delay(1);
    nr_spi_txchar(0x082a,na_SPI0);         //初始化寄存器Analog Audio Path
    nr_delay(1);
    nr_spi_txchar(0x0a00,na_SPI0);         //初始化寄存器Digital Audio Path
    nr_delay(1);
    nr_spi_txchar(0x0c0c,na_SPI0);         //初始化寄存器Power Down
    nr_delay(1);
    nr_spi_txchar(0x0e01,na_SPI0);         //初始化寄存器Digital Audio Interface
    nr_delay(1);
    nr_spi_txchar(0x1021,na_SPI0);         //初始化寄存器Sample Rate
    nr_delay(1);
    nr_spi_txchar(0x1200,na_SPI0);         //初始化寄存器Digital Interface Activation
    nr_delay(1);
    
    nr_installuserisr(na_PIO_Button_irq,Button_ISR,0);    //分配中断服务子程序
    na_PIO_Button->np_pioedgecapture=0;                   //清除中断标志
    na_PIO_Button->np_piodirection=0;                    
    na_PIO_Button->np_piointerruptmask=0xff;              //允许中断

    nr_installuserisr(na_PIO_Switch_irq,Switch_ISR,0);    //分配中断服务子程序
    na_PIO_Switch->np_pioedgecapture=0;                   //清除中断标志
    na_PIO_Switch->np_piodirection=0;                    
    na_PIO_Switch->np_piointerruptmask=0xff;              //允许中断
      
    while(1);
  
}

void Button_ISR(int context)
{
    na_PIO_Button->np_pioedgecapture=0;   
    if(na_PIO_Button->np_piodata==0x7f && m_LLine<0x001f)          //S1
       m_LLine++;
    else if(na_PIO_Button->np_piodata==0xf7 && m_LLine>0x0000)     //S5
       m_LLine--;
    else if(na_PIO_Button->np_piodata==0xbf && m_RLine<0x021f)     //S2
       m_RLine++;
    else if(na_PIO_Button->np_piodata==0xfb && m_RLine>0x0200)     //S6
       m_RLine--;
    else if(na_PIO_Button->np_piodata==0xdf && m_LHeadPhone<0x047f)//S3
       m_LHeadPhone++;
    else if(na_PIO_Button->np_piodata==0xfd && m_LHeadPhone>0x0400)//S7
       m_LHeadPhone--;
    else if(na_PIO_Button->np_piodata==0xef && m_RHeadPhone<0x067f)//S4
       m_RHeadPhone++;
    else if(na_PIO_Button->np_piodata==0xfe && m_RHeadPhone>0x0600)//S8
       m_RHeadPhone--;
    
    nr_spi_txchar(m_LLine,na_SPI0);        //初始化寄存器Left Line
    nr_delay(1);
    nr_spi_txchar(m_RLine,na_SPI0);        //初始化寄存器Right Line
    nr_delay(1);
    nr_spi_txchar(m_LHeadPhone,na_SPI0);   //初始化寄存器Left Headphone
    nr_delay(1);
    nr_spi_txchar(m_RHeadPhone,na_SPI0);   //初始化寄存器Right Headphone
}

void Switch_ISR(int context)
{
    na_PIO_Switch->np_pioedgecapture=0;       //清除中断标志   
    if(na_PIO_Switch->np_piodata=0)
       nr_spi_txchar(0x0808,na_SPI0);         //麦克风静音  
    else                                     
       nr_spi_txchar(0x0828,na_SPI0);         //打开麦克风
}

⌨️ 快捷键说明

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