组合键盘程序2.c

来自「AT89C52的组合按键识别程序,已经调试成功」· C语言 代码 · 共 80 行

C
80
字号
#include<reg51.h>
void delay(void)
	{
   unsigned int i;
   for(i=0;i<300;i++);
	}
	main()
	{
	unsigned char BUFFER;
	unsigned char HANG;
	unsigned char LIE;
	unsigned char FLAG ;
	delay() ;
	while(1)
		{
		P1 = 0X0F0 ;
		if(P1 != 0X0F0)
			{
			P1 = 0XF0;
			LIE = P1 ;
			}
		delay() ;
		P1 = 0X0F ;
		if(P1 != 0X0F)
			{
			P1 = 0X0F;
			HANG = P1;
			BUFFER = ~(HANG | LIE) ;
			P3 = BUFFER ;  
			}
			FLAG = 0 ;	
			switch(BUFFER)
			{
		//		case 0X11 : P2 = 0X01 ;break ;
				case 0X12 : P2 = 0X02 ;FLAG = 1 ;break ;
				case 0X14 : P2 = 0X03 ;FLAG = 1 ;break ;
				case 0X18 : P2 = 0X04 ;FLAG = 1 ;break ;
				case 0X21 : P2 = 0X05 ;FLAG = 1 ;break ;
				case 0X22 : P2 = 0X06 ;FLAG = 1 ;break ;
				case 0X24 : P2 = 0X07 ;FLAG = 1 ;break ;
				case 0X28 : P2 = 0X08 ;FLAG = 1 ;break ;
				case 0X41 : P2 = 0X09 ;FLAG = 1 ;break ;
				case 0X42 : P2 = 0X0A ;FLAG = 1 ;break ;
				case 0X44 : P2 = 0X0B ;FLAG = 1 ;break ;
				case 0X48 : P2 = 0X0C ;FLAG = 1 ;break ;
				case 0X81 : P2 = 0X0D ;FLAG = 1 ;break ;
				case 0X82 : P2 = 0X0E ;FLAG = 1 ;break ;
				case 0X84 : P2 = 0X0F ;FLAG = 1 ;break ;
				case 0X88 : P2 = 0X11 ;FLAG = 1 ;break ;
				default :break ;
			}
			if(FLAG == 0)
				{
				P1 = 0X0F0 ;
				if(P1 != 0X0F0)
					{
					P1 = 0XF0;
					LIE = P1 ;
					}
				delay() ;
				P1 = 0X0F ;
				if(P1 != 0X0F)
					{
					P1 = 0X0F;
					HANG = P1;
					BUFFER = ~(HANG | LIE) ;
					P3 = BUFFER ;  
					}
				switch(BUFFER)
					{
					case 0X13 :P2 = 0X13 ;break ;//同时按下1和2,P2 = 0X12
																			//先按下1键程序不会出显任何值
					case 0X16 :P2 = 0X16 ;break ;//同时按下2和3,P2 = 0X13,
																			//这个时候假如先按下2,
																			//输出P2=0X02;
					default :break ;
					}	
				}
		}
	}	

⌨️ 快捷键说明

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