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

📄 key.c

📁 变压器绕线机源代码, 经过测试,可以正常运作.
💻 C
字号:
//============================
//绕线机程序
//键盘扫描
//蜂鸣器子程序
//============================

#ifndef __key_c_
#define __key_c_
#include "included.h"
//===========================
uchar ks1(void)
{ 
  uchar temp;

  P1 &=0X00;
  P3 |=0X07;
  _nop_();
  _nop_();
   temp = P3;
  if((~temp) & 0x07) //note ~ and !
  return 1;  
  else 
  return 0;  
}
//=====================
////1表示有键按下,0表示没有键按下
//=====================
uchar ks0(void)
{ 
  uchar temp;

  P1 &=0X00;
  P3 |=0X07;
  _nop_();
  _nop_();
   temp = P3;
  if((~temp) & 0x07) //note ~ and !
  return 1;  
  else 
  return 0;  
}
//====================================
//没键按下等待,有键按下,返回按键值
//====================================
uchar key(void)
{ 
  uchar scan_code=0xfe;
  uchar key_val=00;
  uchar time_0 =0x00;

jxkey:    
   do{            //检测按键是否被按下
      while(ks0()==0);
      delay_1ms(20);//消抖动  
      }while(ks0()==0);  
        
    scan_code=0xfe;

 for(time_0=0;time_0<8;time_0++)
    {
       P1 = scan_code;
       P3 |= 0X07;
       _nop_();
       _nop_();
       _nop_();

       if( P3_0 == 0)
           {
             key_val=time_0;   //0-7key
             break;
             }
       if( P3_1 == 0)
          {
            key_val=time_0+0x08; //8-15key
            break; 
            }
       if( P3_2 == 0)
          {                    //16 key=stop key
            key_val=0x10;
            break;
            }
      scan_code = scan_code<<1;
     }
      
     if(key_val>0x10)
        goto   jxkey;
     else
       do{
            while(ks0()==1);
           delay_1ms(20);//消抖动
                   //等待按键弹起
           }while(ks0()==1); 
        
    return  (key_val);
}
//========================
uchar key_123(void)
{ 
  uchar scan_code=0xfe;
  uchar key_val=00;
  uchar time_0 =0x00;
         
    scan_code=0xfe;

 for(time_0=0;time_0<8;time_0++)
    {
       P1 = scan_code;
       P3 |= 0X07;
       _nop_();
       _nop_();
       _nop_();

       if( P3_0 == 0)
           {
             key_val=time_0;   //0-7key
             break;
             }
       if( P3_1 == 0)
          {
            key_val=time_0+0x08; //8-15key
            break; 
            }
       if( P3_2 == 0)
          {                    //16 key=stop key
            key_val=0x10;
            break;
            }
      scan_code = scan_code<<1;
     }

    return  (key_val);
}

//========================
void delay_1ms(uint t)
{
 uint i,j;
 for(j=0;j<t;j++)
 for(i=0;i<300;i++)
    ;
}
//=============================
void speak(void)
{
      P3_5 = 0;
      delay_1ms(150);    
      P3_5 = 1;           
 }
//================================
#endif

⌨️ 快捷键说明

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