Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3295598
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: LINUX

2008-04-21 01:23:07

主函数
void Main(void)
{
SetClockDivider(1, 1);//设置时钟分频
 SetSysFclk(DFT_FCLK_VAL);//设置处理器频率
 Port_Init();//初始化串口
 
 Uart_Printf( "\n4X4 KEY array TEST ( Interrupt MODE )\n" );
 Uart_Printf( "Press 'ESC' key to Exit this program !\n\n" );
 KeyScanInit() ;
    while( Uart_GetKey() != ESC_KEY ) ;
 rGPGCON = rGPGCON & (~((3<<22)|(3<<6))) | ((0<<22)|(0<<6)) ; //GPG11,3 set input
 rGPFCON = rGPFCON & (~((3<<4)|(3<<0))) | ((0<<4)|(0<<0)) ;  //GPF2,0 set input
 Uart_Printf( "the keyboarb is stopped\n" );
 while(1);
 
}


6. 键盘的实现
6.1键盘初始化程序
void ScanInitviod
{
1GPG6GPG2GPE13GPG11设为output端口,并且输出0
2GPG11GPG3GPF2GPF0  设为EINT端口,分别为EINT19EINT11EINT2
EINT0
3EINT19EINT11EINT2EINT0 设为下降沿出发(falling edge int
4EINT19EINT11EINT2EINT0 中断标志位被清楚
5pISR_EINT0 = pISR_EINT2 = pISR_EINT8_23 = (U32)KeyISR   建立中断函数
6EINT19EINT11EINT2EINT0 中断开启
}
 
6.2键盘中断响应
void __irq  KeyISRvoid
{
1GPG13GPG11GPF2GPF0 设为input端口
2.清楚中断EINT19EINT11EINT2EINT0
3.键盘扫描Key_Scan(),并在串口输出
4.重新初始化端口:   GPG6GPG2GPE13GPG11设为output端口,并且输出0   
GPG11GPG3GPF2GPF0  设为EINT端口,分别为EINT19
EINT11EINT2EINT0
}
 
6.3键盘扫描程序
U8 Key_Scan( void )
{
1.扫描键盘第1 K10K7K4K1   返回扫描值
20扫描键盘第2 K11K8K5K2   返回扫描值
3.扫描键盘第3 K12K9K6K3   返回扫描值
4.扫描键盘第4 K16K15K14K13,返回扫描值
}
 
阅读(1784) | 评论(0) | 转发(1) |
0

上一篇:Nand flash应用实验

下一篇:ADC模数转换实验

给主人留下些什么吧!~~