📄 keyboard.c
字号:
//*----------------------------------------------------------------------------
//*----------------------------------------------------------------------------
//* File Name : lib_test_system_lcd.h
//* Object : 键盘-针对测试系统-库函数文件
//*
//* 2003-7-20 : Creation
//*---------------------------------------------------------------------------
#include "lib_keyboard.h"
//*==============================================================================
//* Function Name : key_open
//* Object : 键盘初始化
//* Input Parameters :
//*
//* Output Parameters : none
//*==============================================================================
void key_init()
{
//Key_Press=0;
LCD_Current_Interface=1;
LCD_set_Interface=1;
}
//*==============================================================================
//* Function Name : key_open
//* Object : 打开键
//* Input Parameters : key_num 键号,在.h文件定义了7个键
//*
//* Output Parameters : none
//*==============================================================================
void key_open(u_int key_num)
{
if ( (key_num & KEY_SET)!=0)
{
at91_extirq_open(&IRQ0_DESC,
2,
AIC_SRCTYPE_EXT_NEGATIVE_EDGE,
key_set_irq_asm_handler);
}
if ( (key_num & KEY_RETURN)!=0)
{
at91_extirq_open(&IRQ1_DESC,
2,
AIC_SRCTYPE_EXT_NEGATIVE_EDGE,
key_return_irq_asm_handler);
}
if ( (key_num & KEY_ADD)!=0)
{
at91_extirq_open(&IRQ4_DESC,
2,
AIC_SRCTYPE_EXT_NEGATIVE_EDGE,
key_add_irq_asm_handler);
}
if ( (key_num & KEY_SUB)!=0)
{
at91_extirq_open(&IRQ2_DESC,
2,
AIC_SRCTYPE_EXT_NEGATIVE_EDGE,
key_sub_irq_asm_handler);
}
if ( (key_num & KEY_LEFT)!=0)
{
at91_extirq_open(&IRQ3_DESC,
2,
AIC_SRCTYPE_EXT_NEGATIVE_EDGE,
key_left_irq_asm_handler);
}
if ( (key_num & KEY_RIGHT)!=0)
{
at91_extirq_open(&IRQ5_DESC,
2,
AIC_SRCTYPE_EXT_NEGATIVE_EDGE,
key_right_irq_asm_handler);
}
}
//*==============================================================================
//* Function Name : key_open
//* Object : 关闭键
//* Input Parameters : key_num 键号,在.h文件定义了7个键
//*
//* Output Parameters : none
//*==============================================================================
void key_close(u_int key_num)
{
if ( (key_num & KEY_SET)!=0)
{
at91_extirq_close(&IRQ0_DESC);
}
if ( (key_num & KEY_RETURN)!=0)
{
at91_extirq_close(&IRQ1_DESC);
}
if ( (key_num & KEY_ADD)!=0)
{
at91_extirq_close(&IRQ4_DESC);
}
if ( (key_num & KEY_SUB)!=0)
{
at91_extirq_close(&IRQ2_DESC);
}
if ( (key_num & KEY_LEFT)!=0)
{
at91_extirq_close(&IRQ3_DESC);
}
if ( (key_num & KEY_RIGHT)!=0)
{
at91_extirq_close(&IRQ5_DESC);
}
}
//*==============================================================================
//* Function Name : key_set_irq_handler
//* Object : key中断处理程序:---设置键---
//* Input Parameters :
//* Output Parameters : none
//*==============================================================================
void key_set_irq_handler()
{
key_close(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
int i; //1为设置界面
switch(LCD_Current_Interface)
{
case 1:
ptr_bit=1;
ptr_list=0;
//LCD_CLEAR();
show_cur_pic(LCD_Current_Interface,36,1); //待修改
require_pointer(LCD_Current_Interface,36, &Ptrlist);
LCD_set_Interface=0; //允许改变
//LCD_Current_Interface=1;
if(Ptrlist->choose_num==1)
LCD_Current_Interface=2;
else if(Ptrlist->choose_num==2)
LCD_Current_Interface=3;
else if(Ptrlist->choose_num==3)
LCD_Current_Interface=4;//频率调整
else
LCD_Current_Interface=5;//相位调整
LCD=0;
break;
case 2:
ptr_bit=1;
ptr_list=0;
LCD_CLEAR();
lcd_disp_interface(2); //频率设置界面
for(i=0;i<return_max_array(2);i++)
{
show_cur_pic(LCD_Current_Interface, i, 0);
}
require_pointer(LCD_Current_Interface,0, &Ptrlist);
if(Ptrlist->curtype==1)
{
show_bit_num(LCD_Current_Interface, 0, 1, 1);
}
else
show_cur_pic(LCD_Current_Interface,0,1);
LCD_Current_Interface=3;
LCD_set_Interface=2;
LCD=0;
break;
case 3:
ptr_bit=1; //相位设置界面
ptr_list=0;
LCD_CLEAR();
lcd_disp_interface(3);
for(i=0;i<return_max_array(3);i++)
{
show_cur_pic(LCD_Current_Interface, i, 0);
}
require_pointer(LCD_Current_Interface,0, &Ptrlist);
if(Ptrlist->curtype==1)
{
show_bit_num(LCD_Current_Interface, 0, 1, 1);
}
else
show_cur_pic(LCD_Current_Interface,0,1);
LCD_Current_Interface=2;
LCD_set_Interface=2;
LCD=0;
break;
default:
break;
}
for (i=0;i<99999;i++){}
AIC_ICCR=0xffffffff;
key_open(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
}
//*==============================================================================
//* Function Name : key_return_irq_handler
//* Object : key中断处理程序:----返回键:返回到主界面---
//* Input Parameters :
//* Output Parameters : none
//*==============================================================================
void key_return_irq_handler()
{
key_close(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
int i;
//switch (LCD_Current_Interface) //1主界面
//{
// case 1:
//write_to_dataflash(2);
//trans_interface_nums(2);
LCD_CLEAR();
lcd_disp_interface(1); //显示主界面
//将频率相位设置界面的数据转换到主界面
CovBit_to_Dec(1);
CovBit_to_Dec(2);
CovBit_to_Dec(3);
if(LCD_Current_Interface==2||LCD_Current_Interface==3)
{
Write_to_main_interface();
}
LCD=0;
Write_to_fpgareg();
if(LCD_Current_Interface==4)
{
LCD=1;
}
if(LCD_Current_Interface==5)
{
LCD=2;
}
for(i=0;i<return_max_array(1);i++)
{
show_cur_pic(1, i, 0); //待修改
}
//Write_to_main_interface(1);
LCD_Current_Interface=1;
LCD_set_Interface=1; //不允许改变
//break;
//default:
// break;
// }
for (i=0;i<200000;i++){}
AIC_ICCR=0xffffffff;
key_open(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
}
//*==============================================================================
//* Function Name : key_sub_irq_handler
//* Object : key中断处理程序:---减键---
//* Input Parameters :
//* Output Parameters : none
//*==============================================================================
void key_sub_irq_handler()
{
key_close(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
int i;
if((LCD_Current_Interface==2||LCD_Current_Interface==3)&&LCD_set_Interface==2)
{
if(LCD_Current_Interface==2)
{
change_curr_blank(3,ptr_list,ptr_bit,1);
for(i=0;i<36;i++)
{
if(i%6==0)
{
obpic2[i].choose_num=obpic3[i].choose_num; obpic1[i].choose_num=obpic3[i].choose_num;
}
}
}
else
{
change_curr_blank(2,ptr_list,ptr_bit,1);
for(i=0;i<36;i++)
{
if(i%6==0)
{
obpic3[i].choose_num=obpic2[i].choose_num; obpic1[i].choose_num=obpic2[i].choose_num;
}
}
}
}
else
{
if(LCD_set_Interface==0)
{
change_curr_blank(1,36,ptr_bit,1);
require_pointer(1,36, &Ptrlist);
//LCD_Current_Interface=1;
//LCD_set_Interface=1;
if(Ptrlist->choose_num==1)
LCD_Current_Interface=2;
else if(Ptrlist->choose_num==2)
LCD_Current_Interface=3;
else if(Ptrlist->choose_num==3)
LCD_Current_Interface=4;//频率调整
else
LCD_Current_Interface=5;//相位调整
}
}
for (i=0;i<125000;i++){}
AIC_ICCR=0xffffffff;
key_open(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
}
//*==============================================================================
//* Function Name : key_add_irq_handler
//* Object : key中断处理程序:---加键---
//* Input Parameters :
//* Output Parameters : none
//*==============================================================================
void key_add_irq_handler()
{
key_close(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
int i;
if((LCD_Current_Interface==2||LCD_Current_Interface==3)&&LCD_set_Interface==2)
{
if(LCD_Current_Interface==2)
{
change_curr_blank(3,ptr_list,ptr_bit,0);
for(i=0;i<36;i++)
{
if(i%6==0)
{
obpic2[i].choose_num=obpic3[i].choose_num; obpic1[i].choose_num=obpic3[i].choose_num;
}
}
/*obpic2[0].choose_num=obpic3[0].choose_num; obpic1[0].choose_num=obpic3[0].choose_num;
obpic2[6].choose_num=obpic3[6].choose_num; obpic1[6].choose_num=obpic3[6].choose_num;
obpic2[12].choose_num=obpic3[12].choose_num; obpic1[12].choose_num=obpic3[12].choose_num;
obpic2[18].choose_num=obpic3[18].choose_num; obpic1[18].choose_num=obpic3[18].choose_num;
obpic2[24].choose_num=obpic3[24].choose_num; obpic1[24].choose_num=obpic3[24].choose_num;
obpic2[30].choose_num=obpic3[30].choose_num; obpic1[30].choose_num=obpic3[30].choose_num; */
} //针对2,3界面通道状态一致
else
{
change_curr_blank(2,ptr_list,ptr_bit,0);
for(i=0;i<36;i++)
{
if(i%6==0)
{
obpic3[i].choose_num=obpic2[i].choose_num; obpic1[i].choose_num=obpic2[i].choose_num;
}
}
/*obpic3[0].choose_num=obpic2[0].choose_num; obpic1[0].choose_num=obpic2[0].choose_num;
obpic3[6].choose_num=obpic2[6].choose_num; obpic1[6].choose_num=obpic2[6].choose_num;
obpic3[12].choose_num=obpic2[12].choose_num; obpic1[12].choose_num=obpic2[12].choose_num;
obpic3[18].choose_num=obpic2[18].choose_num; obpic1[18].choose_num=obpic2[18].choose_num;
obpic3[24].choose_num=obpic2[24].choose_num; obpic1[24].choose_num=obpic2[24].choose_num;
obpic3[30].choose_num=obpic2[30].choose_num; obpic1[30].choose_num=obpic2[30].choose_num;*/
}
}
else
{
if(LCD_set_Interface==0)
{
change_curr_blank(1,36,ptr_bit,0);
require_pointer(1,36, &Ptrlist);
//LCD_set_Interface=1;
LCD_Current_Interface=1;
if(Ptrlist->choose_num==1)
LCD_Current_Interface=2;
else if(Ptrlist->choose_num==2)
LCD_Current_Interface=3;
else if(Ptrlist->choose_num==3)
LCD_Current_Interface=4;//频率调整
else
LCD_Current_Interface=5;//相位调整
}
}
for (i=0;i<125000;i++){}
AIC_ICCR=0xffffffff;
key_open(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
}
//*==============================================================================
//* Function Name : key_left_irq_handler
//* Object : key中断处理程序:---左移键---
//* Input Parameters :
//* Output Parameters : none
//*==============================================================================
void key_left_irq_handler()
{
key_close(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
int i;
if((LCD_Current_Interface==2||LCD_Current_Interface==3)&&LCD_set_Interface==2)
{
if(LCD_Current_Interface==2)
jump_next_blank(3,&ptr_list,&ptr_bit,1);
else
jump_next_blank(2,&ptr_list,&ptr_bit,1);
}
for (i=0;i<125000;i++){}
AIC_ICCR=0xffffffff;
key_open(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
}
//*==============================================================================
//* Function Name : key_right_irq_handler
//* Object : key中断处理程序:---右移键---
//* Input Parameters :
//* Output Parameters : none
//*==============================================================================
void key_right_irq_handler()
{
key_close(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
int i;
if((LCD_Current_Interface==2||LCD_Current_Interface==3)&&LCD_set_Interface==2)
{
if(LCD_Current_Interface==2)
jump_next_blank(3,&ptr_list,&ptr_bit,0);
else
jump_next_blank(2,&ptr_list,&ptr_bit,0);
}
for (i=0;i<125000;i++){}
AIC_ICCR=0xffffffff;
key_open(KEY_LEFT|KEY_RIGHT|KEY_RETURN|KEY_SET|KEY_ADD|KEY_SUB);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -