Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3547430
  • 博文数量: 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 ScanInit(viod)
{
1.GPG6、GPG2、GPE13、GPG11设为output端口,并且输出0
2.GPG11、GPG3、GPF2、GPF0  设为EINT端口,分别为EINT19、EINT11、EINT2、
EINT0
3.EINT19、EINT11、EINT2、EINT0 设为下降沿出发(falling edge int)
4.EINT19、EINT11、EINT2、EINT0 中断标志位被清楚
5.pISR_EINT0 = pISR_EINT2 = pISR_EINT8_23 = (U32)KeyISR   建立中断函数
6.EINT19、EINT11、EINT2、EINT0 中断开启
}
 
6.2键盘中断响应
void __irq  KeyISR(void)
{
1.GPG13、GPG11、GPF2、GPF0 设为input端口
2.清楚中断EINT19、EINT11、EINT2、EINT0
3.键盘扫描Key_Scan(),并在串口输出
4.重新初始化端口:   GPG6、GPG2、GPE13、GPG11设为output端口,并且输出0;   
GPG11、GPG3、GPF2、GPF0  设为EINT端口,分别为EINT19、
EINT11、EINT2、EINT0
}
 
6.3键盘扫描程序
U8 Key_Scan( void )
{
1.扫描键盘第1列 K10、K7、K4、K1,   返回扫描值
2.0扫描键盘第2列 K11、K8、K5、K2,   返回扫描值
3.扫描键盘第3列 K12、K9、K6、K3,   返回扫描值
4.扫描键盘第4列 K16、K15、K14、K13,返回扫描值
}
 
阅读(1889) | 评论(0) | 转发(1) |
0

上一篇:Nand flash应用实验

下一篇:ADC模数转换实验

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