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

📄 key.c

📁 UCOS-II ATMEGA128 移殖
💻 C
字号:
#include <mega8.h>

//void init_kb(void);
//void decode(unsigned char);
U16 MyGetScanKey()
            {
            U16 key;
            U32 i,temp;
            for(i=1;i<0x10;i<<=1){
            ?????rPDATE|=0xf0;//初始化端口
            ?????rPDATE&=~(i<<4);//向列所在端口分别发送1110,1101,1011,0111
            key<<=4;//右移四位
            Delay(10);//延时,等待响应
            temp=rPDATC;//读各行状态值
            key|=(temp&0xf);//将四次所得结果保存起来
            }
            return key;
            }

            U32 MyGetKey()
            {
            int i;
            U16 key,tempkey=1;
            static U16 oldkey=0xffff;
            static U8 keystatus=0;
            U8 keycnt=0;
            while(1){
            key=0xffff;
            while(1){
            key=MyGetScanKey();
            if(key!=0xffff) //有键按下
            break;
            Uart_Printf("key 111 \n");
            OSTimeDly(20);
            Uart_Printf("key 112 \n");
            oldkey=0xffff;
            }
            Uart_Printf("key 113 \n");
            OSTimeDly(50);
            Uart_Printf("key 114 \n");
            if(key!=MyGetScanKey())//如果两次的键制不同,重新扫描
            continue;

            if(oldkey!=key){
            keystatus=0;
            }
            if(keystatus==0){ //第一次按下此键
            keycnt=0;
            keystatus=1;
            }
            else if(keystatus==1){ //第二次重复此键
            keycnt++;
            if(keycnt==20)
            keystatus=2;
            else
            continue;
            }

            oldkey=key;
            break;
            }

            for(i=0;i<16;i++){ //查找按键,不包括功能键
            if((key&tempkey)==0)
            break;
            tempkey<<=1;
            }
            return MykeyBoard_KeyMap[i];
            }

            void onKey(int nkey, int fnkey)
            {
            char temp[3];
            if(nkey>9){ //按键码> 9 
            temp[0]=0x31;// 十位
            temp[1]=(nkey-10)|0x30;//个位
            temp[2]=0;
            }
            else //按键码< 9 
            {
            temp[0]=nkey+0x30;
            temp[1]=0}
      

⌨️ 快捷键说明

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