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

📄 read_key.c

📁 用89C2051实现的软PLC。PLC程序存在24C04,用按健输入程序
💻 C
字号:
/* DA is key's high 4 bits  
   if (DA == 0) 
         high(key) = 1
   else 
         high(key) = 0

   if (Inc == 0)
         low(key) = 1
   if (Dec == 0)
         low(key) = 2
   if (Wri == 0)
         low(key) = 3
*/

#include "reg51.h"

void delay(unsigned int); 
bit b_inc = 0,b_dec = 0,da_first = 0;
sbit Inc = P1^0;
sbit Dec = P1^1;
sbit DA  = P1^2;
sbit Wri = P3^2;
unsigned char i;

unsigned char Read_Key(unsigned char *d,unsigned char *pc)
{
   unsigned char key;
   P1 = P1 | 0x0f;
   if (Inc == 0)
   {  
       delay(10);
	   if (Inc ==0)
	   {   
  	       if (b_inc == 0)
		   {  
		      delay(300);
			  b_inc = 1;
		   }
		   if (DA == 0)
      	   {   
		      key = 0x11;      // if (DA == 0) high(key) = 2; 
 			  (*pc)++;
		   }
		   else 	          //if (Inc == 0) low(key) = 1;  
		   {    key = 0x01;
		        (*d)++;
		   }
           for ( i = 0;Inc == 0 && i < 60;i++)
	            delay(1);
	   }
    }
	else if (Dec == 0)
    { 
       delay(10);
	   if (Dec == 0)
	   { 
	       if (b_dec == 0)
		   {
		      delay(300);
			  b_dec = 1;
		   }
		   if (DA == 0)
		   {    
		       key = 0x12;
			   (*pc)--;
		   }
		   else
		   {  
               key = 0x02;
			   (*d)--;
		   }
		   for (i = 0;Dec == 0 && i < 60;i++)
		       delay(1);
		}
     }
	 else if (DA == 0)
	 {
	     delay(50);
		 if (DA == 0)
	   	 {
  	        b_inc = b_dec = 0;
 		    if (Wri == 0)
			    key = 0x13;
			else
		    {
                key = 0x10;
                if (!da_first)
                {
                    da_first = 1;
                    (*pc)++;
                }
            }
		 }
	 }
	 else if (Wri == 0)
	 {   
	     b_inc = b_dec = da_first = 0;
	     delay(100);
		 if (Wri == 0)
		 {
		    key = 0x03;
		 }
	 }
	 else 
	 {  
	    b_inc = b_dec = da_first = 0;
        key = 0x00;
	 }
	 return key;
}

⌨️ 快捷键说明

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