?? dying.asm
字號:
RRC A
MOV SDA,C ;BIT1
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
XRL ODDBIT,A
RRC A
MOV SDA,C ;BIT2
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
XRL ODDBIT,A
RRC A
MOV SDA,C ;BIT3
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
XRL ODDBIT,A
RRC A
MOV SDA,C ;BIT4
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
XRL ODDBIT,A
SETB SCL
ACALL Delay20uS
RRC A
MOV SDA,C ;BIT5
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
XRL ODDBIT,A
SETB SCL
ACALL Delay20uS
RRC A
MOV SDA,C ;BIT6
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
XRL ODDBIT,A
SETB SCL
ACALL Delay20uS
RRC A
MOV SDA,C ;BIT7
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV A,ODDBIT
RRC A
MOV SDA,C ;Checkout
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
NOP
ACALL Delay20uS
SETB SDA ;STOP
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
NotTransmit:
RET
;-----------------------------------------------------------------
; Output A=PS2 Command
;-----------------------------------------------------------------
ReceiveByte:
; SETB SCL
; SETB SDA
JNB SCL,$
JNB SDA,ReceiveGood
MOV A,#55H
RET
ReceiveGood:
NOP ;START
ACALL DelayPluse
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV C,SDA ;BIT0
RRC A
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV C,SDA ;BIT1
RRC A
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV C,SDA ;BIT2
RRC A
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV C,SDA ;BIT3
RRC A
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV C,SDA ;BIT4
RRC A
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV C,SDA ;BIT5
RRC A
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV C,SDA ;BIT6
RRC A
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
MOV C,SDA ;BIT7
RRC A
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
NOP ;???? ;Checkout
ACALL Delay20uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay20uS
SETB SDA ;STOP
JNB SDA,ReceiveError
ACALL Delay5uS
ACALL Delay5uS
ACALL Delay5uS
CLR SDA ;ACK
ACALL Delay5uS
CLR SCL
ACALL DelayPluse
SETB SCL
ACALL Delay5uS
SETB SDA
RET
ReceiveError:
RET
;----------------------------------------------------------------------
; CPU use 7.3728MHz ;Delay 40uS=246指令周期
;----------------------------------------------------------------------
DelayPluse: ;Delay40uS
MOV R7,#0AH ;1
DJNZ R7,$ ;2
RET ;2
;----------------------------------------------------------------------
Delay50uS: ;Dlay50uS
MOV R7,#0EH
DJNZ R7,$
RET
;---------------------------------------------------------------------
Delay20uS: ;Delay20uS
MOV R7,#03H
DJNZ R7,$
RET
;---------------------------------------------------------------------
Delay5uS: ;Delay5uS
RET
;----------------------------------------------------------------------
InitializationKey:
SETB SecKey
SETB Scroll
SETB Caps
SETB Num
mov r7,#0ffh
dly:
mov r6,#0ffh
djnz r6,$
djnz r7,dly
dly1:
MOV A,#0AAH
ACALL TransmitByte
CLR Scroll
CLR Caps
CLR SecKey
RET
;*********************** Interrupt **************************************
INT_T0:
RETI
;---------------------------------------------------------
INT_Int0:
RETI
;---------------------------------------------------------
INT_Int1:
PUSH ACC ;接收到11個脈沖就認為有標準鍵盤存在
JB KeyboardUsed,Nokeyboard
INC Count
MOV A,Count
CJNE A,#0BH,NoKeyboard
SETB KeyboardUsed
NoKeyboard:
POP ACC
RETI
;-----------------------------------------------------------------
INT_UART:
PUSH PSW
PUSH ACC
MOV PSW,#08H
JBC RI,REC
JNB TI,UARTEnd
CLR TI
SJMP UARTEnd
REC:
cpl Caps
MOV R0,Head
MOV @R0,SBUF
INC R0
CJNE R0,#BufferTail,MoveCurrentPoing
MOV R0,#BufferHead
MoveCurrentPoing:
MOV A,R0
CJNE A,Tail,UARTReceiveGood ;UART BufferOverflow
POP ACC
POP PSW
RETI
UARTReceiveGood:
MOV Head,R0
MOV Current,R0
UARTEnd:
POP ACC
POP PSW
RETI
;***************************************************************
Table:
DB 005H,000H ;0 ;F1
DB 006H,000H ;1 ;F2
DB 004H,000H ;2 ;F3
DB 00CH,000H ;3 ;F4
DB 003H,000H ;4 ;F5
DB 00BH,000H ;5 ;F6
DB 083H,000H ;6 ;F7
DB 00AH,000H ;7 ;F8
DB 001H,000H ;8 ;F9
DB 009H,000H ;9 ;F10
DB 078H,000H ;10 ;F11
DB 007H,000H ;11 ;F12
DB 00DH,000H ;12 ;Tab
DB 05AH,000H ;13 ;Enter
DB 066H,000H ;14 ;BackSpace
DB 012H,000H ;15 ;L_Shift
DB 014H,000H ;16 ;L_Ctrl
DB 0E0H,01FH ;17 ;L_GUI
DB 011H,000H ;18 ;L_Alt
DB 059H,000H ;19 ;R_Shift
DB 0E0H,014H ;20 ;R_Ctrl
DB 0E0H,027H ;21 ;R_GUI
DB 0E0H,011H ;22 ;R_Alt
DB 0E0H,02FH ;23 ;APPS
DB 0E0H,070H ;24 ;Insert
DB 0E0H,06CH ;25 ;Home
DB 0E0H,07DH ;26 ;Page Up
DB 076H,000H ;27 ;ESC
DB 0E0H,075H ;28 ;UP Arrow
DB 0E0H,06BH ;29 ;Left Arrow
DB 0E0H,072H ;30 ;Down Arrow
DB 0E0H,074H ;31 ;Right Arrow
DB 029H,000H ;32 ;SPACE
DB 012H,016H ;33 ;! Shift+1
DB 012H,052H ;34 ;" Shift+'
DB 012H,026H ;35 ;# Shift+3
DB 012H,025H ;36 ;$ Shift+4
DB 012H,02EH ;37 ;% Shift+5
DB 012H,03DH ;38 ;& Shift+7
DB 052H,000H ;39 ;'
DB 012H,046H ;40 ;( Shift+9
DB 012H,045H ;41 ;) Shift+0
DB 012H,03EH ;42 ;* Shift+8
DB 012H,055H ;43 ;+ Shift+=
DB 041H,000H ;44 ;,
DB 04EH,000H ;45 ;-
DB 049H,000H ;46 ;.
DB 04AH,000H ;47 ;/
DB 045H,000H ;48 ;0
DB 016H,000H ;49 ;1
DB 01EH,000H ;50 ;2
DB 026H,000H ;51 ;3
DB 025H,000H ;52 ;4
DB 02EH,000H ;53 ;5
DB 036H,000H ;54 ;6
DB 03DH,000H ;55 ;7
DB 03EH,000H ;56 ;8
DB 046H,000H ;57 ;9
DB 012H,04CH ;58 ;: Shift+;
DB 04CH,000H ;59 ;;
DB 012H,041H ;60 ;< Shift+,
DB 055H,000H ;61 ;=
DB 012H,049H ;62 ;> Shift+.
DB 012H,04AH ;63 ;? Shift+/
DB 012H,01EH ;64 ;@ Shift+A
DB 012H,01CH ;65 ;A Shift+a
DB 012H,032H ;66 ;B Shift+b
DB 012H,021H ;67 ;C Shift+c
DB 012H,023H ;68 ;D Shift+d
DB 012H,024H ;69 ;E Shift+e
DB 012H,02BH ;70 ;F Shift+f
DB 012H,034H ;71 ;G Shift+g
DB 012H,033H ;72 ;H Shift+h
DB 012H,043H ;73 ;I Shift+i
DB 012H,03BH ;74 ;J Shift+j
DB 012H,042H ;75 ;K Shift+k
DB 012H,04BH ;76 ;L Shift+l
DB 012H,03AH ;77 ;M Shift+m
DB 012H,031H ;78 ;N Shift+n
DB 012H,044H ;79 ;O Shift+o
DB 012H,04DH ;80 ;P Shift+p
DB 012H,015H ;81 ;Q Shift+q
DB 012H,02DH ;82 ;R Shift+r
DB 012H,01BH ;83 ;S Shift+s
DB 012H,02CH ;84 ;T Shift+t
DB 012H,03CH ;85 ;U Shift+u
DB 012H,02AH ;86 ;V Shift+v
DB 012H,01DH ;87 ;W Shift+w
DB 012H,022H ;88 ;X Shift+x
DB 012H,035H ;89 ;Y Shift+y
DB 012H,01AH ;90 ;Z Shift+z
DB 054H,000H ;91 ;[
DB 05DH,000H ;92 ;\
DB 05BH,000H ;93 ;]
DB 012H,036H ;94 ;^ Shift+6
DB 012H,04EH ;95 ;_ Shift+-
DB 00EH,000H ;96 ;`
DB 01CH,000H ;97 ;a
DB 032H,000H ;98 ;b
DB 021H,000H ;99 ;c
DB 023H,000H ;100 ;d
DB 024H,000H ;101 ;e
DB 02BH,000H ;102 ;f
DB 034H,000H ;103 ;g
DB 033H,000H ;104 ;h
DB 043H,000H ;105 ;i
DB 03BH,000H ;106 ;j
DB 042H,000H ;107 ;k
DB 04BH,000H ;108 ;l
DB 03AH,000H ;109 ;m
DB 031H,000H ;110 ;n
DB 044H,000H ;111 ;o
DB 04DH,000H ;112 ;p
DB 015H,000H ;113 ;q
DB 02DH,000H ;114 ;r
DB 01BH,000H ;115 ;s
DB 02CH,000H ;116 ;t
DB 03CH,000H ;117 ;u
DB 02AH,000H ;118 ;v
DB 01DH,000H ;119 ;w
DB 022H,000H ;120 ;x
DB 035H,000H ;121 ;y
DB 01AH,000H ;122 ;z
DB 012H,054H ;123 ;{ Shift+[
DB 012H,05DH ;124 ;| Shift+\
DB 012H,05BH ;125 ;} Shift+]
DB 012H,00EH ;126 ;~ Shift+`
DB 0E0H,071H ;127 ;DEL
DB 0E0H,069H ;128 ;End
DB 0E0H,07AH ;129 ;Page Down
DB 077H,000H ;130 ;Num Lock
DB 058H,000H ;131 ;Caps Lock
DB 07EH,000H ;132 ;Scroll Lock
DB 0E0H,037H ;133 ;Power
DB 0E0H,03FH ;134 ;Sleep
DB 0E0H,05EH ;135 ;Wake
DB 014H,022H ;136 ;Ctrl+X
DB 014H,021H ;137 ;Ctrl+C
DB 014H,02AH ;138 ;Ctrl+V
DB 014H,01AH ;139 ;Ctrl+Z
LongTab1:
DB 0E1H,014H ;140 ;Pause Break
DB 077H,0E1H
DB 0F0H,014H
DB 0F0H,077H
LongTab2:
DB 0E0H,012H ;141 ;Print Screen
DB 0E0H,07CH
DB 0E0H,0F0H
DB 07CH,0E0H
LongTab3:
DB 014H,011H ;142 ;Ctrl+Alt+Del
DB 0E0H,071H
DB 0E0H,0F0H
DB 071H,0F0H
DB 011H,0F0H
DB 014H,000H
;**************************** END *********************************
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -