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

📄 键盘驱动.txt

📁 单片机的键盘驱动程序程序 很不错
💻 TXT
字号:
; #########################################################################

      .386
      .model flat, stdcall
      option casemap :none   
; #########################################################################

      include \masm32\include\windows.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc
      include \masm32\include\gdi32.inc
      include \masm32\include\masm32.inc

      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib
      includelib \masm32\lib\gdi32.lib
      includelib \masm32\lib\masm32.lib

; #########################################################################
        
        SetTimer proto :DWORD,:DWORD,:DWORD,:DWORD                   ;创建定时器函数声明
 .const 
  IDC_EDIT equ 100
  ID_TIMER equ 1
.data
        dlgname     db "MyDialog",0
        row              db 0
        col                db  0
        show            db "    ",0
        
.data? 
hInstance HINSTANCE ? 


.code

WndProc proc hWin   :DWORD, uMsg   :DWORD, wParam :DWORD, lParam :DWORD
      
  .if uMsg == WM_INITDIALOG
         mov al,81h
         mov DX,213h
         OUT DX,al
         invoke SetDlgItemText,hWin,IDC_EDIT,ADDR show


 .elseif uMsg == WM_COMMAND
        .if wParam == 1000                              ;"开始接收"         
           invoke SetTimer,hWin,ID_TIMER,1,NULL  

       .elseif wParam==1001                           ;   "暂停"
           invoke KillTimer,hWin,ID_TIMER 
 
       .elseif  wParam==1002                          ; "清除"
           mov show," "
           invoke SetDlgItemText,hWin,IDC_EDIT,ADDR show
     
       .elseif  wParam==1003                         ;"退出"
                invoke EndDialog,hWin,0
                 
         .endif

.elseif uMsg == WM_CLOSE
               invoke EndDialog,hWin,0


.elseif uMsg==WM_TIMER
              mov DX,210h
              mov AL,0 
              OUT DX,al
      
             mov DX,212h
             IN al,DX
             
             mov row,al
             
             and al,7
             cmp al,7
              jz undo  
                                        
                   mov col,0feh   
                                           
                     lop:
                                 mov al,col
                                 mov DX,0210h
                                 OUT DX,al                
                       
                                mov DX,0212h
                                IN al,DX              
                             
                                cmp al,row
                                jz next
 
                                 ROL col,1
                                 jmp lop
         
                 next:                    
                    XOR col,0ffh
                    and row,7
                    XOR row,7
              
                    mov show,0
                    mov al,row
                    mov row,1
                turn1: cmp al,1
                           jz marka
                           ror al,1
                           inc row
                           jmp turn1
                marka: 
                    mov al,8
                    dec row
                    mul row
                    mov show,al


                    mov al,col
                    mov col,1
                turn:cmp al,1
                          jz  markb
                          ror al,1
                          inc col
                          JMP turn
                  markb:  mov al,col
                          dec al 
                          add show,al
                          cmp show,10
                          jb  shu
                          add show,7
                   shu:       add show,30h
                    
                                         
                    invoke SetDlgItemText,hWin,IDC_EDIT,ADDR show

                 undo:     


   .endif
        xor eax, eax    
        ret
WndProc endp
;########################################################################

start:

      invoke GetModuleHandle, NULL
      mov hInstance, eax
      invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0
      invoke ExitProcess,eax

end start

; #########################################################################

⌨️ 快捷键说明

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