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

📄 dying.asm

📁 该设计使用AT89C2051方便的完成
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	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 + -