¿Por qué deberíamos codificar un mouse con cable en lugar de uno inalámbrico?
Membrana
Los teclados de membrana de plástico tienen cuatro capas. Una capa de la película plástica tiene caucho conductor elevado, una de las cuales es una capa aislante, y las capas superior e inferior tienen contactos. Presione el tope de goma a través del botón para hacer que los contactos superior e inferior entren en contacto y emitan el código. Este tipo de teclado no tiene desgaste mecánico y tiene una alta confiabilidad. Actualmente representa una gran proporción del mercado, pero muchos JS también consideran este teclado de costo relativamente bajo como un teclado capacitivo. Sus características más importantes son el bajo precio, el bajo nivel de ruido y el bajo costo.
Teclado de goma conductora
El contacto de los contactos del teclado de goma conductora está fabricado de goma conductora. Su estructura es una capa de goma conductora con protuberancias. Las protuberancias son conductoras. Esta parte es para cada botón y las partes planas conectadas entre sí no son conductoras. Cuando se presiona la tecla, debido a que las protuberancias son conductoras, los contactos inferiores se presionan y, si no a tiempo, las protuberancias aparecerán. Actualmente se utiliza con más frecuencia.
Teclado capacitivo
El teclado capacitivo, similar al principio del interruptor capacitivo, cambia la capacitancia cambiando la distancia entre los electrodos al presionar las teclas, formando temporalmente condiciones que permiten que los pulsos de choque pasar por. Sabemos que la capacitancia de un capacitor está determinada por el medio, la distancia entre los dos polos y el área de los dos polos. Por lo tanto, cuando se presiona la tecla, la distancia entre los polos cambia, lo que hace que cambie la capacitancia. Si los parámetros están diseñados correctamente, habrá salida cuando se presione el botón y no habrá salida cuando no se presione el botón. Esta salida se moldea y amplifica para controlar el codificador. Dado que el condensador no tiene contactos, no hay problemas como desgaste y mal contacto durante el proceso de trabajo, y la durabilidad, sensibilidad y estabilidad son buenas. Para evitar que entre polvo entre los electrodos, los interruptores de llave capacitivos están sellados y ensamblados. Entre 100.000 y 30 millones de vidas. Sin embargo, actualmente no hay muchos teclados capacitivos reales en el mercado. La mayoría de ellos son los dos primeros tipos de teclados. El precio de un teclado capacitivo real también es relativamente alto.
Teclado inalámbrico
Por supuesto, el más avanzado es el teclado inalámbrico. Como sugiere el nombre, no existe una conexión física directa entre el teclado y la computadora, y la información ingresada se transmite a un receptor especial a través de rayos infrarrojos u ondas de radio. La conexión del receptor es básicamente la misma que la de un teclado normal. Sólo necesitas conectar el puerto PS/2 o COM, puerto USB, etc. Y asegúrese de prestar atención a la diferencia al comprar. Los teclados inalámbricos generalmente tienen el sufijo "RF" después del logotipo, lo que indica que admiten la transmisión de ondas de radio. Actualmente, las frecuencias de la mayoría de los productos son 900 MHz, 455 MHz y 330 MHz. acerca de.
Los teclados inalámbricos deben funcionar con baterías secas. Los teclados inalámbricos infrarrojos tienen una directividad estricta, especialmente la relación entre las posiciones horizontales es más sensible. Debido a que el ángulo de recepción del receptor es limitado (la línea recta central es de 6 metros), el teclado funcionará mal si está demasiado cerca del receptor. Al mismo tiempo, cuando la sensibilidad es baja, no podrá escribir palabras rápidamente, de lo contrario. Definitivamente lo extrañaremos. Usar el teclado de la radio es mucho más flexible. Teniendo en cuenta que las radios se propagan radialmente, para evitar interferencias mutuas entre teclados del mismo tipo (misma frecuencia) que funcionan muy cerca, generalmente hay más de cuatro canales. Si se produce interferencia, la frecuencia se puede cambiar manualmente. Para satisfacer las necesidades móviles, los teclados inalámbricos son generalmente más pequeños e integran las funciones de un mouse. Tenga en cuenta que hay dos interfaces entre el receptor y el host, una es PS2 y la otra es el puerto COM. Basta con conectar estas dos interfaces al host una por una, pero si no quieres usar el mouse en el teclado, solo necesitas conectar el puerto PS2 del receptor al host, pero no hay COM ! El receptor no requiere fuente de alimentación externa y la batería alcalina AA incorporada en el teclado se puede usar normalmente durante 3 meses.
La tendencia de desarrollo de los teclados
En lo que respecta al desarrollo de los teclados, el número de teclas del teclado está aumentando gradualmente (pero no es infinito, después de todo, el área de el teclado es limitado) y avanza hacia el desarrollo de la dirección multimedia multifuncional. Las primeras computadoras usaban un teclado de 83 teclas, y más tarde se introdujo un estándar de diseño de 84 teclas, que dividía el teclado en tres áreas, a saber, el área funcional, el área de teclas para escribir y el área del subteclado responsable del control y edición del cursor. .
Las teclas de cursor y las teclas numéricas en el área de teclas de función se utilizan como teclas de símbolos de doble función, y se utiliza una tecla "Numlock" para controlar el cambio de estas dos funciones. Aunque los dos tipos de teclados son poco comunes en la actualidad, la división de las áreas principales del teclado todavía sigue los estándares de la época y no ha cambiado hasta el día de hoy. No fue hasta 1986 que IBM lanzó un teclado de 101 teclas que la funcionalidad se amplió aún más. Además de agregar dos teclas de función, F11 y F12, también se agregó un conjunto especial de teclas de edición y control del cursor en el medio del teclado y se introdujo Microsoft WIN95. Como tecla Fn, teclas de método abreviado, teclado con mouse y tableta, etc.
Las interfaces de teclado más utilizadas incluyen la interfaz AT, la interfaz PS/2 y la interfaz USB. Hoy en día, la mayoría de las placas base proporcionan una interfaz de teclado PS/2, que se conoce comúnmente como "puerto pequeño". Los ordenadores compatibles, especialmente las placas base más antiguas, suelen disponer de una interfaz AT, la llamada "boca grande". Afortunadamente, existe en el mercado un conector de conversión de teclado de boca grande, que solo cuesta unos pocos yuanes y resuelve el problema de compatibilidad de los teclados con dos interfaces de una sola vez. Algunas empresas también han lanzado teclados con interfaces USB. Según la última especificación PC2001, con la desaparición del bus ISA, todas las interfaces que funcionan a través del bus ISA serán reemplazadas por USB. El USB permite conectar otros dispositivos al mismo tiempo, lo que equivale a integrar un HUB. Por ejemplo, puede conectar un mouse, lo que en realidad elimina la necesidad del puerto COM o PS/2 de la placa base. Algunos teclados incluso integran circuitos PS/2 a USB, lo cual es más conveniente. El obstáculo actual para su popularidad es su elevado precio. Para los teclados con HUB USB integrado, la mayoría de estos teclados utilizan interfaces USB. Para utilizar más dispositivos USB, debe agregar un dispositivo HUB USB para ampliar la cantidad de interfaces USB. Sin embargo, los concentradores USB profesionales son caros, por lo que la gente ha intentado integrar concentradores USB en teclados o monitores, con éxito. Los teclados con HUB USB integrado suelen ocupar una interfaz USB para mantener la transmisión de las señales del teclado y del host, al tiempo que proporcionan de 2 a 4 interfaces USB para conectar otros dispositivos. En pocas palabras, es una entrada y una salida, lo cual es mucho más económico que un HUB USB profesional.
En los sistemas de microcontroladores, los teclados de uso común son teclados especiales. Este tipo de teclado está diseñado y fabricado de forma independiente, lo que tiene un alto costo, muchos cables y baja confiabilidad. Estos problemas son más destacados en aplicaciones que requieren más teclas del teclado. En comparación, el teclado PS/2 ampliamente utilizado en sistemas de PC tiene las características de precio bajo, confiabilidad universal, pocos cables (solo se utilizan dos líneas de señal) y puede cumplir con los requisitos de la mayoría de los sistemas. Por lo tanto, aplicar un teclado PS/2 en un sistema informático de un solo chip es una buena opción.
Basado en el análisis del protocolo PS/2 y el principio de funcionamiento y las características del teclado PS/2, el método de conexión de hardware y el diseño e implementación del controlador del microcontrolador AT89C51 que admite el teclado PS/2 son dado.
Protocolo 1PS/2
La interfaz PS/2 muy utilizada en los PC es el conector miniDIN de 6 pines. Sus pines se muestran en la Figura 1.
1—Línea de datos; 2—No utilizado; 3—Tierra de alimentación (GND);
4—Fuente de alimentación (+5v);
Figura 1 Conector PS/2 Los dispositivos PS/2 se dividen en dispositivos maestros y dispositivos esclavos. El conector hembra es el dispositivo maestro y el conector macho es el dispositivo esclavo. ampliamente utilizado hoy en día, todos funcionan en el modo de dispositivo esclavo. Las líneas de reloj y datos de la interfaz PS/2 son estructuras de colector abierto y deben conectarse a una resistencia pull-up externa. Transmisión en serie síncrona bidireccional. La señal es generada por el dispositivo esclavo.
(1) Comunicación del dispositivo esclavo al dispositivo maestro
Cuando el dispositivo esclavo envía datos al. dispositivo maestro, primero verifica la línea de reloj para confirmar si está alta. Si está alta, el dispositivo esclavo puede comenzar a transmitir datos; de lo contrario, el dispositivo esclavo debe esperar el control del bus antes de comenzar a transmitir datos. La trama consta de 11 bits y el significado de cada bit, como se muestra en la Figura 2.
En la Figura 2, el bit de inicio de cada trama de datos en la comunicación desde el dispositivo esclavo al dispositivo maestro es siempre. 0, la verificación de datos usa paridad impar y el bit de parada siempre es 1. Cuando el dispositivo se comunica con el dispositivo maestro, el dispositivo esclavo siempre cambia el estado de la línea de datos cuando la línea de reloj está alta y el dispositivo maestro lee la línea de datos. estado en el flanco descendente del reloj.
(2) Comunicación del dispositivo maestro al dispositivo esclavo
Cuando el dispositivo maestro se comunica con el dispositivo esclavo, el dispositivo maestro primero configurará la línea de reloj y la línea de datos en la posición "solicitud". enviar" estado . El método específico es el siguiente: primero baje la línea de reloj durante al menos 100 μs para inhibir la comunicación, luego baje la línea de datos para "solicitar transmisión" y finalmente suelte la línea de reloj. Durante este proceso, el dispositivo esclavo debe verificar este estado en intervalos no mayores a 10 μs. Cuando el dispositivo detecte este estado, comenzará a generar una señal de reloj.
En este momento, cada trama de transmisión de datos consta de 12 bits, y su sincronización y el significado de cada bit se muestran en la Figura 3.
Figura 3 En comparación con la comunicación del dispositivo esclavo al dispositivo maestro, la comunicación del dispositivo maestro al dispositivo esclavo tiene un bit ACK más por trama. Este es el bit de respuesta al byte recibido por el esclavo y se genera bajando la línea de datos. El bit de respuesta ACK es siempre 0. Durante el proceso de comunicación del dispositivo maestro al dispositivo esclavo, el dispositivo maestro siempre cambia el estado de la línea de datos cuando el reloj está bajo y el dispositivo esclavo lee el estado de la línea de datos en el flanco ascendente del reloj.
Conjunto de codificación y comandos del teclado 2PS/2
(1) Codificación del teclado PS/2
El teclado PS/2 que utiliza actualmente la PC utiliza el Teclado PS/2 por defecto Escanea el segundo conjunto de códigos. Para este conjunto de códigos de escaneo, consulte la Referencia\[1\]. Hay dos tipos diferentes de códigos de escaneo: códigos generados y códigos de interrupción. Cuando se presiona o presiona una tecla continuamente, el teclado enviará la contraseña de la clave al host; cuando se suelta una tecla, el teclado enviará el código de ruptura de la tecla al host.
Según los diferentes códigos de escaneo de las teclas del teclado, las claves se pueden dividir en las siguientes categorías:
Para el primer tipo de clave, el código de acceso es de 1 byte y el descifrado El código es 0xFcontraseña. Por ejemplo, la clave A tiene un código de acceso de 0x1C y un código de descifrado de 0xF0 0x1C.
Para las claves de Clase II, el código de acceso toma la forma de 2 bytes 0xE0xXX, y el código de descifrado toma la forma 0xE0xF0xXX. Por ejemplo, la tecla Ctrl derecha tiene un código de acceso de 0xE0 0x14 y un código de descifrado de 0xE0 0xF0 0x14.
El tercer tipo tiene dos claves especiales. El código de acceso para la clave de impresión de pantalla es 0xE0 0x12 0xE0 0x7C y el código de descifrado es 0xE0 0xF0 0x7C 0xE0 0xF0 0x12. La contraseña del botón de pausa es 0xe 10x 140 x770 xe 10 xf00x 140 xf00x 77 y el código de interrupción está vacío.
Los códigos de escaneo de combinaciones de teclas se envían según el orden en que aparecen las teclas. Por ejemplo, presione la tecla MAYÚS izquierda + A en el siguiente orden: 1 presione la tecla MAYÚS izquierda, 2 presione la tecla A, 3 suelte la tecla A, 4 suelte la tecla MAYÚS izquierda y luego la cadena de datos recibida en la computadora es 0x 120 x1 c 0 xf00x 100 xf0x 65438.
En el diseño de controladores, las distintas teclas se tratan de forma diferente según esta clasificación.
(2)Conjunto de comandos del teclado PS/2
El host puede configurar el teclado u obtener el estado del teclado enviando comandos al teclado PS/2. Cada vez que se envía un byte, el host recibirá una respuesta 0xFA del teclado (excepto los comandos "reenviar" y "eco"). La siguiente es una breve introducción a los comandos utilizados por el controlador durante el proceso de inicialización del teclado (consulte la referencia \[1\] para obtener un conjunto de comandos de teclado detallado):
0xED El host envía un byte de parámetro después de este comando para indicar que el teclado El estado de bloqueo numérico, bloqueo de mayúsculas y bloqueo de desplazamiento LED;
El host 0xF3 envía un parámetro de byte después de este comando para definir la velocidad de escritura y el retraso del teclado;
El host envía Después de que 0xF5 deshabilita el teclado, se usa 0xF4 para volver a habilitar el teclado.
Circuito de conexión entre el teclado 3PS/2 y el microcontrolador
El método de conexión entre el teclado PS/2 y el microcontrolador AT89C51 se muestra en la Figura 4. P1.0 está conectado a la línea de datos PS/2 y P3.2 (INT0) está conectado a la línea de reloj PS/2. Dado que los puertos P1 y P3 del microcontrolador tienen resistencias pull-up incorporadas, la línea de reloj PS/2 y la línea de datos se pueden conectar directamente a P1 y P3 del microcontrolador.
4 Diseño del controlador
El controlador utiliza el lenguaje Keil C51 y el entorno de programación Keil uVision2.
La tarea principal del controlador de teclado PS/2 104 es implementar la comunicación PS/2 entre el microcontrolador y el teclado, convertir el código de escaneo de clave recibido en el valor de clave KeyVal y proporcionarlo al software de capa superior del sistema.
(1) Diseño de programa para la comunicación PS/2 entre el microcontrolador y el teclado
Durante el proceso de comunicación PS/2, el dispositivo principal (microcontrolador) envía y recibe cuando la señal del reloj es señal de datos de bajo nivel. Dado que el microcontrolador envía instrucciones al teclado y requiere que el teclado responda, esta parte del programa usa el modo de consulta cuando el microcontrolador recibe datos del teclado y la señal en la línea de datos es estable cuando el reloj está bajo, por lo que esta parte de el programa utiliza el modo de interrupción y no Es necesario agregar un programa de retraso al programa. El programa de interfaz de envío de teclado del microcontrolador se puede encontrar en nuestro sitio web.
(2) Diseño de programa de conversión de código de escaneo de teclado.
Debido a que no existen reglas para el escaneo del teclado, los valores clave de las teclas correspondientes (las teclas de caracteres son sus valores ASCII, las teclas de control como F1 y CTRL son valores personalizados) solo se pueden obtener a través de la tabla. buscar. Debido a que los tres tipos de claves y algunas claves corresponden a dos valores clave (por ejemplo, el valor clave de la clave A es 0x41 (A) y 0x61 (a) respectivamente según los estados de las teclas CAPS y SHIFT), tomando teniendo en cuenta la velocidad de conversión y el consumo de recursos, en el diseño se utilizan cuatro tablas de teclado: conjunto básico de conversión de código de escaneo de teclado y conjunto de conmutación KB_plain_map\[NR_keyboard conjunto básico de conversión de código de escaneo y conjunto de conmutación kbe0_plain_map\[NR_KEYS\] y kbe0_shiftPS/2 104 Código de escaneo de teclas del teclado El valor máximo es 0x83, por lo que NR_KEYS se establece en 132. Las cuatro tablas de teclado se definen de la siguiente manera: KB_MAP\[MAKE CODE\]=KEYVAL. Si el valor clave correspondiente al código de escaneo está vacío, como KB_MAP\[0x00\], el valor clave correspondiente se define como NULL_KEY(0x00). Aquí hay algunos ejemplos de código para el conjunto de códigos de escaneo de teclado básico: kb _ Plain _ map \ [NR _ teclas \] = {...
NULL _ KEY0x2C0x6B0x690x6F0x300x39NULL _ KEY//Códigos de escaneo 0x40~0x47< / p>
Las claves correspondientes de File:// están vacías, coma, K, I, O, 0, 9, vacías.
Archivo:// corresponde a los valores clave 0x00, ', ', 'k', 'I', 'o', '0', '9', 0x00.
……}; Otro beneficio de diseñar la tabla de conversión de teclado en el circuito de conexión de hardware en la Figura 4 es que si necesita expandir el teclado que admite teclas multimedia ACPI y Windows en el futuro, solo necesita para modificar las claves correspondientes en la tabla de claves en cualquier lugar. Si la contraseña para la alimentación ACPI es 0xE0 0x37, simplemente modifique kb E0 _ Plain _ map \[0x 37 \] = kb _ acpi _ PWR.
Las pausas de teclas especiales se gestionan mediante un programa independiente. Si se recibe 0xE1, se pasará a este programa. La tecla Imprimir pantalla la trata como una combinación de dos "claves virtuales" con contraseñas 0xE0 0x12 y 0xE0 0x7C.
Declare las siguientes variables globales en el controlador: LED con bit 0 _ LED de bloqueo de desplazamiento de estado apagado 0, encendido 1; LED de bloqueo de número de Bit1 apagado 0, encendido 1; LED de bloqueo de mayúsculas de 2 bits apagado; 0, activar 1; bit 3 ~ bit 7 siempre son 0; -tecla alt izquierda, bit 4-tecla mayúscula derecha, bit 5-tecla ctrl derecha, bit 6-tecla gui derecha, bit 7-tecla alt derecha, la tecla correspondiente cuando se presiona es 65438. E0_FLAG conecta 0xE0 y establece 1; E1_FLAG recibe 0xE1 y lo establece en 1; F0_FLAG recibe 0xF0 y lo establece en 1. El valor clave de la clave se proporciona a la capa superior a través de KeyVal.
El proceso del programa de conversión de valor clave del código de escaneo del teclado PS/2 ps2_codetrans() se muestra en la Figura 5.
Figura 5 Flujo del programa de conversión de valor clave del código de escaneo: if (F0_FLAG) {//El código de escaneo recibido está roto.
Interruptor (mcu_revchar){//Teclas de control del mango.
Caso 0x 11: AGC_status &= 0xF7 roto; //liberación alternativa izquierda
Caso 0x 12: AGC_status &= 0xFE roto; //liberación de desplazamiento izquierdo
Caso 0x 14: AGC_status & = 0xFD break; //soltar Ctrl izquierdo
Caso 0x58: if (led_status & 0x04)
led_ status & amp= 0x03 // Tecla Bloq Mayús
else led _ status = 0x04
PS2 _ led change();
Romper;
Caso 0x 59: AGC_status & = 0xEF Break; //Liberación de desplazamiento a la derecha
Caso 0x 77:if(led_status & 0x02)
led _ status & amp= 0x05 //tecla de bloqueo numérico
else led_status=0x02
PS2_led change();
Rotura;
Caso 0x7E: if (led_status & amp0x01)
led_status&= 0x06 // Tecla de bloqueo de desplazamiento
else led _ status = 0x 01;
PS2 _ cambio de led();
Romper;
Predeterminado: romper
}
F0 _ FLAG = 0
}
De lo contrario { //El código de escaneo recibido es un código de acceso.
if (led_status & amp0x 04)caps_flag = 1; else caps_flag = 0;
if (led_status & amp0x 02)num_flag = 1; else num_flag = 0;
if(scga_status & 0x 11)shift_flag = 1; de lo contrario, shift_flag = 0;
File:// Conversión del valor clave del código de escaneo
if ((caps_flag == shift_flag) (! num _ flag))KeyVal = kb _ Plain _ map \[MCU _ rev char \];
else KeyVal = kb _ shift _ map \[MCU _ rev char \]; >
Switch(mcu_revchar){// Maneja la tecla de control o la tecla de estado.
Caso 0x 11:agcs_status = 0x 08; //Tecla alt izquierda
Caso 0x 12:agcs_status = 0x 01; //Presiona mayúsculas a la izquierda.
Caso 0x 14: agcs_status = 0x 02; //Presiona Ctrl izquierdo.
Caso 0x 59: agcs_status = 0x 10; //Presiona mayúsculas a la derecha.
Predeterminado: break
}
}El proceso de conversión del valor de clave del código de escaneo del segundo tipo de claves es similar al anterior.
Al salir de este segmento del programa, se debe prestar atención a borrar los indicadores E0_FLAG y F0_FLAG.
Manejador de clave PAUSE: si se recibe 0xE1, establezca E1_flag = 1 y luego compare los 7 bytes posteriores de datos recibidos con los 7 bytes después de la contraseña PAUSE. Si es consistente, devuelva KeyVal=KB_PAUSE. Después de comparar los 7 bytes, borre el indicador E1_FLAG.
Proceso kb_init() del programa de inicialización del teclado:
① Después del encendido, reciba la señal de aprobación de autoprueba de encendido del teclado 0xAA o la señal de error de autoprueba 0xFC. La MCU recibe 0xAA y continúa con el siguiente paso; de lo contrario, realiza el manejo de errores.
(2) Apague el indicador LED, el microcontrolador envía 0xED, luego recibe la respuesta del teclado 0xFA, luego envía 0x00 para recibir 0xFA.
(3) Establecer el retraso y la velocidad de la máquina. El microcontrolador envía 0xF3, recibe 0xFA, envía 0x00 (250 ms, 2,0 cps) y recibe 0xFA.
④ Verifique el LED, envíe 0xED, reciba 0xFA, envíe 0x07 (encienda todos los LED), reciba 0xFA. Envíe 0xED, reciba 0xFA, envíe 0x00 (apague el LED), reciba 0xFA.
⑤Permita que el teclado envíe 0xF4 y reciba 0xFA.
Proceso de función de cambio de LED de teclado ps2_ledchange(): enviar 0xED → recibir 0xFA → enviar led_status → recibir 0xFA.
Etiqueta
El controlador está escrito por Keil uVision2 y se ejecuta en el microcontrolador AT89C51. Implementa teclado PS/2 104, cambio de mayúsculas y minúsculas, cambio de bloqueo numérico, teclas de control y clave. soporte combinado. Este programa también puede servir como referencia para la aplicación de teclados PS/2 en otros sistemas embebidos o con microcontroladores.
Referencias
1 Adam Chapsky. Interfaz de teclado ATPS/2.
2Adam Chapweske. Protocolo ratón/teclado PS/2.
3 Empresas de tecnología de redes. Protocolo de teclado y ratón PS/2.
4 Mapa de teclas def del programa del kernel de Linux .cdn _ ckbd . ckybdev . ckboard . es el bit de inicio, que es 0, luego 8 bits de datos, enviando un código de escaneo de teclado de un byte (el código de escaneo es de 1 a 4 bytes), luego el bit de paridad y finalmente el bit de parada 1. Estas señales se envían a través de la línea de datos (pin 1). Cuando no se presiona ningún botón, tanto la línea de datos como la línea siempre permanecen en 1. Cuando se presiona una tecla, la línea de reloj CLOCK emite un pulso y la línea de datos emite datos. El host (aquí MCU 89c51) toma muestras de la línea de datos en el flanco descendente del pulso siempre para obtener los datos. El código de escaneo del teclado incluye código de acceso y código de ruptura, que se envían cuando se presiona la tecla y el código de ruptura se envía cuando se levanta la tecla. Para obtener más detalles, consulte la referencia técnica de PS/2 adjunta.
Basándonos en el principio anterior, podemos conectar la línea de pulso del teclado al puerto de entrada de interrupción externa (INT0 o INT1) del 89c51. Cuando se presiona y levanta el botón, se genera un pulso que provoca que la MCU se interrumpa. Conecte el cable de datos del teclado al puerto de entrada de 89c51 (como P1.0). En el controlador de interrupciones, los datos se leen desde el puerto de entrada y luego los bits de datos leídos se procesan mediante desplazamiento circular. Se pueden descartar 1 (bit de inicio), 10 (paridad) y 11 (bit de parada), y se puede aplicar el bit de paridad si no es problemático. Cuando se recibe una trama de datos, los 2 a 9 bits restantes (es decir, el código de escaneo) se envían a la PC a través del puerto serie, que se puede ver a través del software de monitoreo del puerto serie de la PC (como el "Asistente de depuración del puerto serie").
La conexión de hardware y el código fuente son los siguientes:
Código fuente:
Organización 0000H
AJMP MAIN transferido al programa principal
ORG 0003H dirección de entrada del pin INT0 de interrupción externa P3.2
AJMP INT se transfiere a la subrutina del servicio de interrupción externa
lo siguiente configura el modo de interrupción de la CPU del programa principal.
Producto principal: MOV SCON, #50H está configurado en el modo de puerto serie 1.
MOV·TMOD,#20H generador de velocidad en baudios T1 funciona en modo 2.
MOV PCON, velocidad en baudios #80H duplicada a 2400x2=4800BPS.
MOV TH1, valor inicial preestablecido #0F3H (basado en la velocidad en baudios de 2400 BPS)
MOV TL1, valor inicial preestablecido #0F3H (basado en la velocidad en baudios de 2400 BPS) velocidad preestablecida valor inicial)
SETB EA; activa la solicitud de interrupción total de la CPU
SETB IT0; configura el modo de disparo de INT0 para activar el flanco negativo.
SETB EX0; Activa la solicitud de interrupción INT0
Elemento SJMP
INT:CLR EA; cierra temporalmente todas las solicitudes de interrupción de la CPU.
CJNE R0, #0, L1
L3: INC R0
SJMP L5
l 1:L2 CJNE R0 # 9
SJMP L3
L2: CJNE R0, #10, L4
SETB tr 1; iniciar temporizador T1
MOV·Sibu marido
MOV R0, #0
l5: SETB EA; habilitar interrupción
RETI; salir de subrutina
L4: MOV C, P1. 0
RRC A
SJMP L3
Fin
Cuando se presiona y suelta la tecla, el código de escaneo se mostrará en la computadora .
Cuando el teclado está encendido, realiza una autoprueba. En este momento, las tres luces del teclado están encendidas. Una vez completada la autoprueba, enviará el carácter hexadecimal AA. Respeta al maestro.