Red de conocimiento de abogados - Derecho de sociedades - 4. Escriba una subrutina para escaneo de teclado matricial 2×3

4. Escriba una subrutina para escaneo de teclado matricial 2×3

Esto es parte de mi artículo, pégalo a ti

/Comando de procesamiento de claves//Obtener la posición de la tecla//16 se presiona sin una tecla uchar KeyPosRowScan()//Regresar a la fila Resultado del análisis { uchar Temp=0; //El estado del análisis se almacena temporalmente. uchar Row;//Número de fila P3=0x0f; Temp=P3;//Almacenamiento temporal del estado de P2 para(Row=0;Row<4;Row++) if(Temp!=0x0f)//Si se presiona un botón { if ( RowScan[Row]==Temp) return Row } return 4;//No se presionó ninguna tecla}uchar KeyPosLineScan()//Devuelve el resultado del escaneo de la columna { uchar Temp=0;//Almacenamiento temporal del estado del escaneo. uchar Línea;//Número de columna. P3=0xf0; Temp=P3;//Almacena temporalmente el estado de P2 for(Line=0;Line<4;Line++) if(Temp!=0xf0)//Si es posible que haya un botón presionado { if(LineScan[Line]= = Temp)return Line; } return 4;//No se presionó ninguna tecla}uchar KeyPosScan()//Posición de la tecla de retorno { return KeyPosRowScan()*4+KeyPosLineScan();} Al llamar, simplemente llame a la función uchar KeyPosScan(). Puede devolver la posición de la clave. Si no se presiona ninguna tecla, dado que KeyPosRowScan() devuelve 4 y KeyPosLineScan() devuelve 4, esta función devuelve 20, lo que significa que no se presiona ninguna tecla. Si se presiona alguna tecla, la función devolverá el valor de posición de la clave 0-15 por fila y columna.