📄 1位按键的控制程序.c
字号:
#include "system.h" //key1_cpu硬件信息描述
#include "altera_avalon_pio_regs.h" //PIO内核硬件信息描述
#include "sys/alt_irq.h " //中断访问文件
#include "alt_types.h" //定义数据类型
volatile alt_u32 edge_capture; //声明存储捕获寄存器内容的变量
Static void key1_interrupts(void* context,alt_u32 id) //声明存储捕获寄存器内容的变量
{
volatile alt_u32* edge_capture_ptr=(volatile alt_u32*) context;
*edge_capture_ptr=IORD_ALTERA_AVALON_PIO_EDGE_CAP(KEY1_PIO_BASE); //存储边沿捕获寄存器内容
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY1_PIO_BASE,0); //边沿捕获寄存器清零
}
static viod init_button_pio() //按键初始化函数
{
Void*edge_capture_ptr=(void*)&edge_capture;
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY1_PIO_BASE,0xf); //开始按键中断
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY1_PIO_BASE,0x0); //边沿捕获寄存器清零
Alt_irq_register(KEY_PIO_IRQ,edge_capture_ptr,key1_interrupts); //注册中断服务函数
}
int main(void) //主函数
{
Atl_u8 count,seg_code; //声明按键数据和显示代码变量
Alt_u8 code_table[]={0x40.0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,
0x06,0x0e,0x0c,0x18,0x09,0x3f}; //7段共阳极数码管显示代码表
Init_botton_pio(); //按键初始化
IOWR_ALTERA_AVALON_PIO_DATA(SEG7_PIO_BASE,code_table[0x0f]);
//输出初始化显示代码:“F”
while(1)
{
while(edge_capture) //判断按键是否被按下
{
Edge_capture=0; //存储器捕获寄存器内容的变量清零
If (count<0x0f)
{ count++;}
else
{count=0;}
Seg_code=code_table[count]; //产生当前数据显示代码
IOWR_ALTERA_AVALON_PIO_DATA(SEG7_PIO_BASE,seg_code;
//输出当前数据显示代码
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -