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

📄 5285.c

📁 5185键盘接口模块
💻 C
字号:
unsigned char code keylist[]={
0xff,   ///0:not use 
10,     ///1
3,     ///2
6,     ///3
9,     ///4
14,  ///5
26,  ///6
28,  ///7
24,  ///8
23,  ///9
0xff,//10
1,    //11
4,    ///12
7,    ///13
17,   ///14
35,   ///15 ???屏蔽
12,   ///16
18,  ///17
25,  ///18
21,  ///19
0xff, ///20
2,    ///21
5,    ///22
8,    ///23
11,   ///24
13,      ///25
20,      ///26
27,      ///27
19,      ///28
};

void delay(int num)
{
while(num--) ;
}
void Beep(unsigned int nn)
{
P1=0x86;
bggxs.bggxs2.Buzzer=1;
XBYTE[0x0]=bggxs.bggxs1.bggxs0;
delay(nn);
P1=0x86;
bggxs.bggxs2.Buzzer=0;
XBYTE[0x0]=bggxs.bggxs1.bggxs0;
}
void outbyt(unsigned char data1)
{unsigned char xx;

 xx=8;
 _nop_();_nop_();
 STB=0;
 ///lastd273.lastd2.CLK=1;
 bggxs.bggxs2.CLK=1;
 P1=6;
  ///XBYTE[1]=lastd273.lastd1.lastd0;
 XBYTE[1]=bggxs.bggxs1.bggxs0;
 while(xx)
 {
  ///clk=0;

  ///lastd273.lastd2.CLK=0;
  bggxs.bggxs2.CLK=0;
  ///XBYTE[1]=lastd273.lastd1.lastd0;
  XBYTE[1]=bggxs.bggxs1.bggxs0;
  /// _nop_();_nop_();
  delay(2);
  DIN=(data1 & 0x01);
  delay(2);
  /// _nop_();_nop_();
  ///lastd273.lastd2.CLK=1;
  bggxs.bggxs2.CLK=1;
  ///XBYTE[1]=lastd273.lastd1.lastd0;
  XBYTE[1]=bggxs.bggxs1.bggxs0;
  ///clk=1;
  xx--;
  data1=data1>>1;

 }
 DIN=0;
 ///STB=1;
}

unsigned char inbyt(void)
{unsigned char xx;
unsigned char datain;
 ///dou=1;
 xx=8;
 datain=0;
 _nop_();_nop_();
 STB=0;

 ///lastd273.lastd2.CLK=1;
 bggxs.bggxs2.CLK=1;
 P1=6;
 ///XBYTE[1]=lastd273.lastd1.lastd0;
 XBYTE[1]=bggxs.bggxs1.bggxs0;
 _nop_();_nop_();
 ///clk=1;
 do
 {
  ///clk=0;
   ///lastd273.lastd2.CLK=0;
   ///XBYTE[1]=lastd273.lastd1.lastd0;
   bggxs.bggxs2.CLK=0;
   XBYTE[1]=bggxs.bggxs1.bggxs0;
   delay(2);
   ///_nop_();_nop_();
   ///lastd273.lastd2.CLK=1;
   ///XBYTE[1]=lastd273.lastd1.lastd0;
   bggxs.bggxs2.CLK=1;
   XBYTE[1]=bggxs.bggxs1.bggxs0;
////  clk=1;
  delay(2);
  ///_nop_();_nop_();
  P1=8;
  _nop_();
  if (XBYTE[0]&0x40)
 ///if(dou)
 {
 datain=datain|0x80;
 }
 else datain=datain|0x00;
 xx--;
 if(xx!=0)
 datain=(datain>>1);
 P1=6;
 }
 while(xx!=0);
return datain;
}

void nt5285_int()
{
		/*选择5285片选*/
STB=1;
outbyt(0x40);

STB=1;
outbyt(0xc0);

outbyt(0x00);outbyt(0x0);outbyt(0x0);
STB=1;
outbyt(0x02);
STB=1;
outbyt(0x80);
STB=1;
///outbyt(0x8f);

}
void nt5285(unsigned char disp,unsigned char adr)
{
		/*选择5285片选*/
STB=1;
outbyt(0xc0+adr*2);
STB=1;
outbyt(0x44);

outbyt(disp);
STB=1;
_nop_();_nop_();
///outbyt(0x02);
STB=1;
outbyt(0x8f);
_nop_();_nop_();
STB=1;
_nop_();
}

void rd5285()
{uchar data key[5],ss,j;
/////////////////////
STB=1;
outbyt(0x46);
key[0]=inbyt();
key[1]=inbyt();
key[2]=inbyt();
key[3]=inbyt();
key[4]=inbyt();
STB=1;
/////////////////////
////////scankey();
for (j=0;j<5;j++)
   {
   ss=key[j];
   keybuf=0;
     if (ss)
      {
      if (ss==1||ss==8)
         {
         keybuf=j*2+ss/8+1;
          }
         else
      if (ss==2||ss==16)
         {
         keybuf=10+j*2+ss/16+1;
         }
         else
      if (ss==4||ss==32)
         {
         keybuf=20+j*2+ss/32+1;
         }
      break;
      }
   }

//////////////////////////////////20051105
///////////update here
if (keybuf>0)
   {
   lastkey=keybuf;
   keybuf=0;	
   }
   else 
   {
      keybuf=lastkey;
      lastkey=0;
      if (keybuf>0&&keybuf<29) 
       {
///       dkey=keybuf;	
       keybuf=keylist[keybuf];
	    if (keybuf>0&&keybuf<99) 
	    {
	     bgg_bit=0;
	     /////如果背光已关,开背光
	     Beep(160);
	     if (bBggStat==1) 
	     {
	     keybuf=0; 
	     }
	     

	    }

       }
       else keybuf=0;	
   }
//////////////////////////////////
/////last code 
/*
if (keybuf!=lastkey)
    {
   
   
    #ifdef        AFX_Keybroad_______
    if (keybuf>0&&keybuf<29) 
       {
///       dkey=keybuf;	
       keybuf=keylist[keybuf];
	    if (keybuf>0&&keybuf<99) 
	    {
	     bgg_bit=0;
	     /////如果背光已关,开背光
	     Beep(160);
	     if (bBggStat==1) 
	     {
	     keybuf=0; 
	     }
	     

	    }

       }
       else keybuf=0;
    #endif 
    lastkey=keybuf;
    if (keybuf>0&&keybuf!=NOKEY)    bgg_bit=0;
    }
    else
    {
    keybuf=0;
    /////lastkey=keybuf;
    }				
  */
}

⌨️ 快捷键说明

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