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

📄 main.c

📁 嵌入式键盘
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <at89s52.h>
#include <stdio.h>
#include <per.h>
#include <intrins.h>
unsigned char MS[BUFFNUM+1]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char *p;
unsigned char pointer;
unsigned char SendNum;
bit send_flag;
bit SomeKeyEnableFlag,SomeKeyKeepFlag;
unsigned char SomeKeyKeepTime;
bit ReadKeyOnceFlag;
unsigned char DatTemp1,DatTemp2,DatTemp11,DatTemp22;
unsigned char KeyWobbleTime;
bit   NewKeyFlag;
bit   TwoMcodeFlag;//双键码标志
unsigned char makecode=0;
bit   RstFlag;
unsigned char KeyT;
unsigned int testtime;
main()
{
  unsigned char i;
  //unsigned char dattemp;
  Project_Int();  
  for(i=0;i<16;i++)
	  MS[i]=0;
  p=MS;
  if(RstFlag==0)
  {
    LED1=1;
    LED2=1;
    LED3=1;
    LED4=1;
	RstFlag=1;
  }
  for(;;)
  {
  /* if(testtime==0) //for debug
    {
     LED4=!LED4;
	  testtime=1500;
    }*/
   WDT();
//===============键盘处理
//==========通码保存
    if(ReadKeyOnceFlag)
     {
        KeyT=K_D_T;//俩次按键间隔

       switch(DatTemp1)
        {
          case 0x3e://P1.0=0
		     if(!SomeKeyEnableFlag)
		      {
                SomeKeyEnableFlag=1;
                switch(DatTemp2)
                 {
                   case 0xfe://1
		             if(pointer<BUFFNUM)
                      {
                        makecode=_1_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xfd://6
		             if(pointer<BUFFNUM)
		              {
                        makecode=_6_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
                   break;
                   case 0xfb://au
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_a_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xf7://fu
		             if(pointer<BUFFNUM)
		              {
                        makecode=_f_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xef://cd----f3
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_f3_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xdf://hd-----f8
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_f8_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xbf://cr
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_cr_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0x7f://f5----p
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_p_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
	             }
	         }
			else if((DatTemp2==0xfb)||(DatTemp2==0xf7))//a.f
			 {
			    SomeKeyKeepFlag=1;
			 }
	      break;
          case 0x3d://P1.1=0
		     if(!SomeKeyEnableFlag)
		      {
                SomeKeyEnableFlag=1;
                switch(DatTemp2)
                 {
                   case 0xfe://2
		             if(pointer<BUFFNUM)
                      {
                        makecode=_2_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xfd://7
		             if(pointer<BUFFNUM)
		              {
                        makecode=_7_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
                   break;
                   case 0xfb://bu
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_b_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xf7://gu
		             if(pointer<BUFFNUM)
		              {
                        makecode=_g_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xef://dd----f4
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_f4_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xdf://dt-------小数点
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_dian_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xbf://f1-----w
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_w_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0x7f://f6-----l
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_l_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
	             }
	         }
			else if((DatTemp2==0xfb)||(DatTemp2==0xf7))//b.g
			 {
			    SomeKeyKeepFlag=1;
			 }
	      break;
          case 0x3b://P1.2=0
		     if(!SomeKeyEnableFlag)
		      {
                SomeKeyEnableFlag=1;
                switch(DatTemp2)
                 {
                   case 0xfe://3
		             if(pointer<BUFFNUM)
                      {
                        makecode=_3_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xfd://8
		             if(pointer<BUFFNUM)
		              {
                        makecode=_8_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
                   break;
                   case 0xfb://cu
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_c_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xf7://hu
		             if(pointer<BUFFNUM)
		              {
                        makecode=_h_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xef://ed----f5
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_f5_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xdf://sel----space
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_spc_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0xbf://f2-------s
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_s_PS2;
                        MS[pointer]=makecode;
		                pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
                   case 0x7f://f7--------+
	                 if(pointer<BUFFNUM)
		              {
                        makecode=_jia_PS2;
                        MS[pointer]=makecode;
                        pointer++;
						TwoMcodeFlag=0;
		              }
	               break;
	             }
	         }
			else if((DatTemp2==0xfb)||(DatTemp2==0xf7))//c.h
			 {
			    SomeKeyKeepFlag=1;
			 }
	      break;
          case 0x37://P1.3=0
		     if(!SomeKeyEnableFlag)
		      {
                SomeKeyEnableFlag=1;
                switch(DatTemp2)
                 {
                   case 0xfe://4
		             if(pointer<BUFFNUM)

⌨️ 快捷键说明

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