您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 8042键盘控制器介绍
8042KeyboardController(FromIBMTechnicalReferenceManual)KeyboardCommandsInitializingthe8042KeyboardControllerSTATUS_PORTEQU064HKBD_OUT_BUFEQU060HKBD_INPT_BUFEQU060HKBD_CMD_BUFEQU064HKBD_DATA_BUFEQU060HPORT_AEQU060HPORT_BEQU061HOUT_BUF_FULLEQU01HINPT_BUF_FULLEQU02HSYS_FLAGEQU04HCMD_DATAEQU08HKEYBD_INHEQU10HTRANS_TMOUTEQU20HRCV_TMOUTEQU40HPARITY_EVENEQU80HINH_KEYBOARDEQU10HKBD_ENAEQU0AEHKBD_DISEQU0ADH;KeyboardCommandsKB_MENUEQU0F1HKB_ENABLEEQU0F4HKB_MAKEBREAKEQU0F7HKB_ECHOEQU0FEHKB_RESETEQU0FFHKB_LED_CMDEQU0EDH;KeyboardresponsesKB_OKEQU0AAHKB_ACKEQU0FAHKB_OVERRUNEQU0FFHKB_RESENDEQU0FEHKB_BREAKEQU0F0HKB_FAEQU010HKB_FEEQU020HKB_PR_LEDEQU040H;****************************************************************;INITKBD;Thisprocedureintializesthe8042;****************************************************************INITKBDPROCFARPUSHAXPUSHDXPUSHCXSUBCX,CXKBD1:INAL,STATUS_PORT;waitforinputbufferemptyTESTAL,INPT_BUF_FULLLOOPNZKBD1MOVAL,0AAH;SendselftestcommandOUTKBD_CMD_BUF,ALSUBCX,CX;WaitfortesttocompleteKBD2:INAL,STATUS_PORTTESTAL,OUT_BUF_FULLLOOPZKBD2INAL,KBD_OUT_BUF;CheckselftestresultCMPAL,055HJNEKBDFMOVAL,0ABH;SendtestInterfacecommandOUTKBD_CMD_BUF,ALSUBCX,CX;waitfortesttocompleteKBD3:INAL,STATUS_PORTTESTAL,OUT_BUF_FULLLOOPZKBD3INAL,KBD_OUT_BUF;DisplayInterfacetestresultsCMPAL,000H;Shouldbe00JNEKBDFMOVAL,060H;SendcommandbyteOUTKBD_CMD_BUF,ALSUBCX,CXKBD4:INAL,STATUS_PORT;WaituntilinputbufferTESTAL,INPT_BUF_FULL;isnotfullLOOPNZKBD4MOVAL,01101001B;SendcommandbyteOUTKBD_DATA_BUF,ALSUBCX,CXKBD5:INAL,STATUS_PORT;WaituntilinputbufferisnotfullTESTAL,INPT_BUF_FULLLOOPNZKBD5MOVAL,0FFH;SendKeyboardResetcommandOUTKBD_DATA_BUF,ALCALLDLY1SUBCX,CXKBD6:INAL,STATUS_PORT;WaituntiloutputbufferisfullTESTAL,OUT_BUF_FULLLOOPZKBD6INAL,KBD_OUT_BUFMOVAL,0EEH;SendEchoEECommandOUTKBD_DATA_BUF,ALCALLDLY1SUBCX,CXKBD7:INAL,STATUS_PORT;WaituntiloutputbufferisfullTESTAL,OUT_BUF_FULLLOOPZKBD7INAL,KBD_OUT_BUF;ReadEchofromKeyboardCALLDLY1CMPAL,0EEHJNEKBDFMOVAL,0F4H;EnabletheKeyboardOUTKBD_DATA_BUF,ALSUBCX,CXKBD8:INAL,STATUS_PORT;WaituntiloutputbufferisfullTESTAL,OUT_BUF_FULLLOOPZKBD8INAL,KBD_OUT_BUF;CleartheoutputbufferPOPCXPOPDXPOPAXRETKBDF:MOVAL,0FFHAL2DPLYJMP$INITKBDENDP;********************************************C8042PROCFAROUTSTATUS_PORT,ALSUBCX,CXC42:INAL,STATUS_PORTTESTAL,INPT_BUF_FULLLOOPNZC42RETC8042ENDP
本文标题:8042键盘控制器介绍
链接地址:https://www.777doc.com/doc-5431452 .html