hello_led.c

来自「应用于nios中的FIFO程序及连接图」· C语言 代码 · 共 73 行

C
73
字号


#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include <stdio.h>

  

int main (void) __attribute__ ((weak, alias ("alt_main")));

int alt_main (void)
{
  volatile int i,ad_data,f_flag,e_flag;
  ad_data=0;
  f_flag=0;
  e_flag=0;
  
  IOWR_ALTERA_AVALON_PIO_DATA(PIO_WRREQ_BASE, 0); 
  IOWR_ALTERA_AVALON_PIO_DATA(PIO_RDREQ_BASE, 0);
  
  printf("Start sampling...\n");   
  /* 
   * Infinitely shift a variable with one bit set back and forth, and write
   * it to the LED PIO.  Software loop provides delay element.
   */
  while (1) 
  {   
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, 1);
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_WRREQ_BASE, 1); 
          
    while(1)
    {
        f_flag=IORD_ALTERA_AVALON_PIO_DATA(PIO_FULL_BASE);
        if(f_flag==1)
        break;      
    }
       
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_WRREQ_BASE, 0);  
     
    printf("Have finished sample!\n");
    
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_RDREQ_BASE, 1);
    
    /*Printf the sampled data.*/
    while(1)
    {
       e_flag=IORD_ALTERA_AVALON_PIO_DATA(PIO_EMPTY_BASE);
       if(e_flag==1)
       break;
       IOWR_ALTERA_AVALON_PIO_DATA(PIO_RDCLK_BASE, 0); 
       IOWR_ALTERA_AVALON_PIO_DATA(PIO_RDCLK_BASE, 1);
       ad_data=IORD_ALTERA_AVALON_PIO_DATA(PIO_AD_IN_BASE);
       printf("%d\n",ad_data);        
    }
    
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_RDREQ_BASE, 0);   
    printf("Have finished printf!\n");       
  1
    i = 0;
    while (i<1000000)
      i++;
     
    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,0);
    
    i = 0;
    while (i<1000000)
      i++;
      
  }
  return 0;
}

⌨️ 快捷键说明

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