button_test.c

来自「检测BUTTON下降沿」· C语言 代码 · 共 90 行

C
90
字号
/**************************************************************程序说明      :BUTTON 处理和中断 实验类    型      :Nios II作    者      :柳军胜公    司      :杭州自由电子科技            :http://www.freefpga.com电   话       :0571-85084089修    改      :日期时间      :20060522说    明      :              检测BUTTON下降沿,触发中断,点亮相应的LED。**************************************************************/#include <stdio.h>#include <io.h>#include <system.h>/*********************************************函数名:button_irq功  能:button中断处理函数输  入:context:相关内容指针,中断号返  回: 备  注:      读取相应BUTTON数据,点亮相应LED**********************************************/void button_irq(void *context,alt_u32 interrupt){  int iRet;  unsigned int data;  unsigned int seg;    /* 读取边沿捕获寄存器值 */  data=IORD(BUTTON_PIO_BASE,0x03);    /* 点亮相应的LED */  IOWR(LED_PIO_BASE,0x00,data);    /* 数码管显示 */  switch(data){    case 1:      seg=1;      break;    case 2:      seg=2;      break;    case 4:      seg=3;      break;    case 8:      seg=4;      break;    }  IOWR(SERIAL_SEGMENT_0_BASE, 0x00,seg);    /* 清除边沿捕获寄存器 */  IOWR(BUTTON_PIO_BASE,0x03,0x00);  }#include <stdio.h>int main(){  unsigned int data;    printf("BUTTON 中断实验!\n");    /* 数码管清0 */  IOWR(SERIAL_SEGMENT_0_BASE, 0x00,0);  IOWR(SERIAL_SEGMENT_0_BASE, 0x01,0);  IOWR(SERIAL_SEGMENT_0_BASE, 0x02,0);  IOWR(SERIAL_SEGMENT_0_BASE, 0x03,0);  /* 开放4BIT BUTTON的中断屏蔽 */  IOWR(BUTTON_PIO_BASE,0x02,0x0f);    /* 清除边沿捕获寄存器 */  IOWR(BUTTON_PIO_BASE,0x03,0x00);    /* 注册中断处理函数 */   if (alt_irq_register( BUTTON_PIO_IRQ, NULL,button_irq))  {    printf("alt_irq_register error\n");    return -1;  }    while(1);    return 0;}

⌨️ 快捷键说明

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