⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 使用ARM7 2124编写的键盘程序
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"


#define KEYCOL1   (1<<7)             //输出
#define KEYCOL2   (1<<8)             //输出
#define KEYCOL3   (1<<9)             //输出
#define KEYCOL4   (1<<10)            //输出
#define KEYROW1   (1<<11)          //输入
#define KEYROW2   (1<<12)          //输入
#define KEYROW3   (1<<13)          //输入

uint16 KEYS=0x0000;
/*********************************************************************************************************
**                           键盘中断服务程序,判断键号,P0.1用作EINT0
********************************************************************************************************/

void __irq keypad_Eint0(void)
{

    IO0CLR=KEYCOL1;
    IO0SET=KEYCOL2|KEYCOL3|KEYCOL4;
    switch((IO0PIN&0x00003800)>>11)             //读KEYROW, 11-13位
    {
       case 6: if(KEYS!=0x01)  {KEYS=0x01;break;}
               else {KEYS=0;break;}
       case 5: if(KEYS!=0x02)  {KEYS=0x02;break;}
               else {KEYS=0;break;}
       case 3: if(KEYS!=0x04)  {KEYS=0x04;break;}
               else {KEYS=0;break;}
       default: break;
    }
    

    IO0CLR=KEYCOL2;
    IO0SET=KEYCOL1|KEYCOL3|KEYCOL4;
    switch((IO0PIN&0x00003800)>>11)             //读KEYROW, 11-13位
    {
       case 6: if(KEYS!=0x08)  {KEYS=0x08;break;}
               else {KEYS=0;break;}
       case 5: if(KEYS!=0x10)  {KEYS=0x10;break;}
               else {KEYS=0;break;}
       case 3: if(KEYS!=0x20)  {KEYS=0x20;break;}
               else {KEYS=0;break;}
       default: break;
    }

    IO0CLR=KEYCOL3;
    IO0SET=KEYCOL1|KEYCOL2|KEYCOL4;
    switch((IO0PIN&0x00003800)>>11)             //读KEYROW 11-13位
    {
       case 6: if(KEYS!=0x40)  {KEYS=0x40;break;}
               else {KEYS=0;break;}
       case 5: if(KEYS!=0x80)  {KEYS=0x80;break;}
               else {KEYS=0;break;}
       case 3: if(KEYS!=0x0100)  {KEYS=0x0100;break;}
               else {KEYS=0;break;}
       default: break;
    }


    IO0CLR=KEYCOL4;
    IO0SET=KEYCOL1|KEYCOL2|KEYCOL3;
    switch((IO0PIN&0x00003800)>>11)             //读KEYROW 11-13位
    {
       case 6: if(KEYS!=0x0200)  {KEYS=0x0200;break;}
               else {KEYS=0;break;}
      
       default: break;
    }



    while((EXTINT&0x01)!=0)    
    {
        EXTINT=0x01;
     }
    VICVectAddr=0;                 //向量中断结束


}



/*********************************************************************************************************
**                          要使向量中断服务程序结束后,都从判断KEYS的语句(地址)往下走
********************************************************************************************************/



        int main (void)
{  
   PINSEL0=0x0C;                           //P0.1为EINT0
   PINSEL1=0x00;
   IO0DIR=0x00000780|0x02;               //KEYCOL为输出,P0.7-10.  p0.1 输出
   IO0CLR=0x00000780;
   
   EXTMODE=0x00;
   
    /* 打开EINT3中断(使用非向量IRQ) */
    VICIntSelect = 0x00000000;	        // 设置所有中断分配为IRQ中断
    VICDefVectAddr = (int)keypad_Eint0;    // 设置中断服务程序地址
   
    EXTINT = 0x01;					    // 清除EINT0中断标志
    VICIntEnable = 1<<14;		    	// 使能EINT0中断,EINT3在Bit17上
    
    while(1);
   
    return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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