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

📄 ps2main.s

📁 AVR单片机(Atmega16)的PS2键盘驱动程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldi R16,40
	xcall _LCD_WriteC
	.dbline 127
; }
	xcall _LCD_Write
	.dbline 128
; }
	ldi R16,40
	xcall _LCD_WriteC
	.dbline 129
; }
	ldi R16,12
	xcall _LCD_WriteC
	.dbline 130
; }
	ldi R16,1
	xcall _LCD_WriteC
	.dbline 131
; }
	ldi R16,2
	ldi R17,0
	xcall _delay_nms
	.dbline 132
; }
	ldi R18,1
	clr R16
	xcall _LCD_SetXY
	.dbline -2
L29:
	.dbline 0 ; func end
	ret
	.dbend
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2/1602.h
_Key_Up::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2/1602.h
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2/KeyCode.h
	.dbsym e Key_Up _Key_Up c
_Finish::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2/KeyCode.h
	.dbsym e Finish _Finish c
	.area lit(rom, con, rel)
_KeyCode::
	.byte 28,'A
	.byte 50,'B
	.byte 33,'C
	.byte 35,'D
	.byte 36,'E
	.byte 43,'F
	.byte 52,'G
	.byte 51,'H
	.byte 'C,'I
	.byte 59,'J
	.byte 'B,'K
	.byte 'K,'L
	.byte 58,'M
	.byte 49,'N
	.byte 'D,'O
	.byte 'M,'P
	.byte 21,'Q
	.byte 45,'R
	.byte 27,'S
	.byte 44,'T
	.byte 60,'U
	.byte 42,'V
	.byte 29,'W
	.byte 34,'X
	.byte 53,'Y
	.byte 26,'Z
	.byte 'E,48
	.byte 22,49
	.byte 30,50
	.byte 38,51
	.byte 37,52
	.byte 46,53
	.byte 54,54
	.byte 61,55
	.byte 62,56
	.byte 'F,57
	.byte 14,126
	.byte 123,62
	.byte 'y,61
	.byte 124,63
	.byte 'w,64
	.byte 'T,123
	.byte 91,125
	.byte 'L,58
	.byte 'R,34
	.byte 'A,60
	.byte 224,60
	.byte 'Z,59
	.byte 'q,58
	.byte 'p,48
	.byte 'i,49
	.byte 'r,50
	.byte 'z,51
	.byte 'k,52
	.byte 's,53
	.byte 't,54
	.byte 'l,55
	.byte 'u,56
	.byte 125,57
	.dbsym e KeyCode _KeyCode A[118:59:2]kc
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2/KeyCode.h
	.dbfunc e Decode _Decode fc
;              i -> R20
;           temp -> R22
;       ScanCode -> R16
	.even
_Decode::
	xcall push_gset2
	.dbline -1
	.dbline 81
	.dbline 83
	mov R20,R16
	clr R21
	cpi R20,224
	ldi R30,0
	cpc R21,R30
	breq L34
	xjmp L31
X0:
	.dbline 84
L34:
	.dbline 85
	.dbline 85
	ldi R24,1
	sts _Key_Up,R24
	.dbline 85
	ldi R20,12
	.dbline 85
	xjmp L32
L31:
	.dbline 87
	clr R22
	xjmp L38
L35:
	.dbline 87
L36:
	.dbline 87
	inc R22
L38:
	.dbline 87
	ldi R24,2
	mul R24,R22
	movw R30,R0
	ldi R24,<_KeyCode
	ldi R25,>_KeyCode
	add R30,R24
	adc R31,R25
	lpm R30,Z
	cp R30,R16
	breq L39
	cpi R22,59
	brlo L35
L39:
	.dbline 88
	ldi R24,2
	mul R24,R22
	movw R30,R0
	ldi R24,<_KeyCode
	ldi R25,>_KeyCode
	add R30,R24
	adc R31,R25
	lpm R30,Z
	cp R30,R16
	brne L40
	.dbline 89
	ldi R24,2
	mul R24,R22
	movw R30,R0
	ldi R24,<_KeyCode+1
	ldi R25,>_KeyCode+1
	add R30,R24
	adc R31,R25
	lpm R20,Z
	subi R20,48
L40:
	.dbline 90
L32:
	.dbline 91
	clr R2
	sts _Finish,R2
	.dbline 92
	mov R16,R20
	.dbline -2
L30:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r temp 22 c
	.dbsym r ScanCode 16 c
	.dbend
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2/KeyCode.h
_Int_Number::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2/KeyCode.h
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2\ps2main.c
	.dbsym e Int_Number _Int_Number c
_Key_Value::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2\ps2main.c
	.dbsym e Key_Value _Key_Value c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2\ps2main.c
	.dbfunc e Init _Init fV
	.even
_Init::
	.dbline -1
	.dbline 15
	.dbline 15
	ldi R24,6
	out 0x12,R24
	.dbline 16
	clr R2
	out 0x11,R2
	.dbline 19
	in R24,0x35
	andi R24,252
	out 0x35,R24
	.dbline 20
	in R24,0x3b
	ori R24,64
	out 0x3b,R24
	.dbline 21
	sei
	.dbline 22
	xcall _LCD_Init
	.dbline -2
L43:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;              j -> R20
;              i -> R22
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 26
	.dbline 27
	clr R20
	.dbline 28
	xcall _Init
	.dbline 29
	ldi R24,<L45
	ldi R25,>L45
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _LCD_Write_String
	.dbline 30
	ldi R18,2
	clr R16
	xcall _LCD_SetXY
	xjmp L47
L46:
	.dbline 31
	.dbline 32
	lds R2,_Finish
	tst R2
	breq L49
	.dbline 33
	.dbline 33
	clr R2
	sts _Finish,R2
	.dbline 34
	lds R16,_Key_Value
	xcall _Decode
	mov R22,R16
	.dbline 35
	cpi R16,0
	brlo L51
	ldi R24,9
	cp R24,R16
	brlo L51
	.dbline 35
	.dbline 36
	ldi R24,<L53
	ldi R25,>L53
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _LCD_Write_String
	.dbline 37
	mov R24,R22
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,2
	mov R16,R20
	xcall _LCD_Write_Char
	.dbline 37
L51:
	.dbline 38
	inc R20
	.dbline 39
	cpi R20,16
	brne L54
	.dbline 39
	.dbline 40
	clr R20
	.dbline 40
	ldi R24,<L56
	ldi R25,>L56
	std y+1,R25
	std y+0,R24
	ldi R18,2
	clr R16
	xcall _LCD_Write_String
	.dbline 40
L54:
	.dbline 41
L49:
	.dbline 41
L47:
	.dbline 31
	xjmp L46
X1:
	.dbline -2
L44:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbend
	.area vector(rom, abs)
	.org 20
	jmp _Serve1
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2\ps2main.c
	.dbfunc e Serve1 _Serve1 fV
	.even
_Serve1::
	st -y,R2
	st -y,R3
	st -y,R24
	st -y,R25
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 49
	.dbline 49
	lds R2,_Key_Up
	tst R2
	brne L58
	.dbline 50
	.dbline 50
	clr R2
	lds R3,_Int_Number
	cp R2,R3
	brsh L60
	mov R24,R3
	cpi R24,9
	brsh L60
	.dbline 51
	.dbline 51
	lds R2,_Key_Value
	lsr R2
	sts _Key_Value,R2
	.dbline 52
	sbis 0x10,1
	rjmp L62
	.dbline 52
	mov R24,R2
	ori R24,128
	sts _Key_Value,R24
L62:
	.dbline 52
L60:
	.dbline 53
	lds R24,_Int_Number
	cpi R24,10
	brne L64
	.dbline 53
	ldi R24,1
	sts _Finish,R24
L64:
	.dbline 54
	lds R24,_Int_Number
	cpi R24,33
	brne L69
	.dbline 54
	clr R2
	sts _Int_Number,R2
L68:
	.dbline 55
L69:
	.dbline 55
	sbis 0x10,2
	rjmp L68
	.dbline 56
	lds R24,_Int_Number
	subi R24,255    ; addi 1
	sts _Int_Number,R24
	.dbline 56
	xjmp L59
L58:
	.dbline 58
	.dbline 58
	clr R2
	lds R3,_Int_Number
	cp R2,R3
	brsh L71
	mov R24,R3
	cpi R24,9
	brsh L71
	.dbline 59
	.dbline 59
	lds R2,_Key_Value
	lsr R2
	sts _Key_Value,R2
	.dbline 60
	sbis 0x10,1
	rjmp L73
	.dbline 60
	mov R24,R2
	ori R24,128
	sts _Key_Value,R24
L73:
	.dbline 60
L71:
	.dbline 61
	lds R24,_Int_Number
	cpi R24,10
	brne L75
	.dbline 61
	ldi R24,1
	sts _Finish,R24
L75:
	.dbline 62
	lds R24,_Int_Number
	cpi R24,55
	brne L80
	.dbline 62
	.dbline 62
	clr R2
	sts _Int_Number,R2
	.dbline 62
	sts _Key_Up,R2
	.dbline 62
L79:
	.dbline 63
L80:
	.dbline 63
	sbis 0x10,2
	rjmp L79
	.dbline 64
	lds R24,_Int_Number
	subi R24,255    ; addi 1
	sts _Int_Number,R24
	.dbline 64
L59:
	.dbline -2
L57:
	ld R2,y+
	out 0x3f,R2
	ld R25,y+
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2\ps2main.c
L56:
	.blkb 30
	.area idata
	.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
	.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2\ps2main.c
L53:
	.blkb 14
	.area idata
	.byte 'S,'u,'c,'c,'e,'s,'s,33,32,32,32,32,32,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2\ps2main.c
L45:
	.blkb 13
	.area idata
	.byte 'P,'l,'e,'a,'s,'e,32,'i,'n,'p,'u,'t,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\wpzhao.USTC\MYDOCU~1\我的文档\我的ICC\我的PS2\ps2main.c

⌨️ 快捷键说明

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