📄 ps2test.lis
字号:
.module ps2test.c
.area lit(rom, con, rel)
0000 _unshifted::
0000 0D09 .byte 13,9
0002 0E60 .byte 14,96
0004 1571 .byte 21,'q
0006 1631 .byte 22,49
0008 1A7A .byte 26,'z
000A 1B73 .byte 27,'s
000C 1C61 .byte 28,'a
000E 1D77 .byte 29,'w
0010 1E32 .byte 30,50
0012 2163 .byte 33,'c
0014 2278 .byte 34,'x
0016 2364 .byte 35,'d
0018 2465 .byte 36,'e
001A 2534 .byte 37,52
001C 2633 .byte 38,51
001E 2920 .byte 41,32
0020 2A76 .byte 42,'v
0022 2B66 .byte 43,'f
0024 2C74 .byte 44,'t
0026 2D72 .byte 45,'r
0028 2E35 .byte 46,53
002A 316E .byte 49,'n
002C 3262 .byte 50,'b
002E 3368 .byte 51,'h
0030 3467 .byte 52,'g
0032 3579 .byte 53,'y
0034 3636 .byte 54,54
0036 392C .byte 57,44
0038 3A6D .byte 58,'m
003A 3B6A .byte 59,'j
003C 3C75 .byte 60,'u
003E 3D37 .byte 61,55
0040 3E38 .byte 62,56
0042 412C .byte 'A,44
0044 426B .byte 'B,'k
0046 4369 .byte 'C,'i
0048 446F .byte 'D,'o
004A 4530 .byte 'E,48
004C 4639 .byte 'F,57
004E 492E .byte 'I,46
0050 4A2F .byte 'J,47
0052 4B6C .byte 'K,'l
0054 4C3B .byte 'L,59
0056 4D70 .byte 'M,'p
0058 4E2D .byte 'N,45
005A 5227 .byte 'R,39
005C 545B .byte 'T,91
005E 553D .byte 'U,61
0060 5A0D .byte 'Z,13
0062 5B5D .byte 91,93
0064 5D5C .byte 93,92
0066 613C .byte 'a,60
0068 6608 .byte 'f,8
006A 6931 .byte 'i,49
006C 6B34 .byte 'k,52
006E 6C37 .byte 'l,55
0070 7030 .byte 'p,48
0072 712C .byte 'q,44
0074 7232 .byte 'r,50
0076 7335 .byte 's,53
0078 7436 .byte 't,54
007A 7538 .byte 'u,56
007C 792B .byte 'y,43
007E 7A33 .byte 'z,51
0080 7B2D .byte 123,45
0082 7C2A .byte 124,42
0084 7D39 .byte 125,57
0086 0000 .byte 0,0
0088 .dbfile D:\M16开发板实验教程\icc-avr\ps2test/scancodes.h
0088 .dbsym e unshifted _unshifted A[136:68:2]kc
0088 _shifted::
0088 0D09 .byte 13,9
008A 0E7E .byte 14,126
008C 1551 .byte 21,'Q
008E 1621 .byte 22,33
0090 1A5A .byte 26,'Z
0092 1B53 .byte 27,'S
0094 1C41 .byte 28,'A
0096 1D57 .byte 29,'W
0098 1E40 .byte 30,64
009A 2143 .byte 33,'C
009C 2258 .byte 34,'X
009E 2344 .byte 35,'D
00A0 2445 .byte 36,'E
00A2 2524 .byte 37,36
00A4 2623 .byte 38,35
00A6 2920 .byte 41,32
00A8 2A56 .byte 42,'V
00AA 2B46 .byte 43,'F
00AC 2C54 .byte 44,'T
00AE 2D52 .byte 45,'R
00B0 2E25 .byte 46,37
00B2 314E .byte 49,'N
00B4 3242 .byte 50,'B
00B6 3348 .byte 51,'H
00B8 3447 .byte 52,'G
00BA 3559 .byte 53,'Y
00BC 365E .byte 54,94
00BE 394C .byte 57,'L
00C0 3A4D .byte 58,'M
00C2 3B4A .byte 59,'J
00C4 3C55 .byte 60,'U
00C6 3D26 .byte 61,38
00C8 3E2A .byte 62,42
00CA 413C .byte 'A,60
00CC 424B .byte 'B,'K
00CE 4349 .byte 'C,'I
00D0 444F .byte 'D,'O
00D2 4529 .byte 'E,41
00D4 4628 .byte 'F,40
00D6 493E .byte 'I,62
00D8 4A3F .byte 'J,63
00DA 4B4C .byte 'K,'L
00DC 4C3A .byte 'L,58
00DE 4D50 .byte 'M,'P
00E0 4E5F .byte 'N,95
00E2 5222 .byte 'R,34
00E4 547B .byte 'T,123
00E6 552B .byte 'U,43
00E8 5A0D .byte 'Z,13
00EA 5B7D .byte 91,125
00EC 5D7C .byte 93,124
00EE 613E .byte 'a,62
00F0 6608 .byte 'f,8
00F2 6931 .byte 'i,49
00F4 6B34 .byte 'k,52
00F6 6C37 .byte 'l,55
00F8 7030 .byte 'p,48
00FA 712C .byte 'q,44
00FC 7232 .byte 'r,50
00FE 7335 .byte 's,53
0100 7436 .byte 't,54
0102 7538 .byte 'u,56
0104 792B .byte 'y,43
0106 7A33 .byte 'z,51
0108 7B2D .byte 123,45
010A 7C2A .byte 124,42
010C 7D39 .byte 125,57
010E 0000 .byte 0,0
0110 .dbsym e shifted _shifted A[136:68:2]kc
.area text(rom, con, rel)
0000 .dbfile D:\M16开发板实验教程\icc-avr\ps2test/scancodes.h
0000 .dbfile D:\M16开发板实验教程\icc-avr\ps2test/delay.h
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 10
0000 ; /*
0000 ; Title: icc-avr ps2 test
0000 ; Author: dushibiao
0000 ; Date: 2007 10 18
0000 ; Purpose: decode ps2 keyboard code
0000 ; Frequency: internal 8M
0000 ; Software: icc-avr
0000 ; Hardware: AVR mega16 BOARD
0000 ; Connect: dushibiao@126.com
0000 ; */
0000 .dbline 11
0000 ;
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R22,R23
.even
0004 _delay_nus::
0004 0E940000 xcall push_gset2
0008 B801 movw R22,R16
000A .dbline -1
000A .dbline 15
000A ; #include <iom16v.h>
000A ; #include "scancodes.h"
000A ; #include "shumaguan.h"
000A ;
000A .dbline 16
000A ; #define PORT_KB PORTD
000A 4427 clr R20
000C 5527 clr R21
000E .dbline 17
000E ; #define PIN_KB PIND
000E 03C0 xjmp L6
0010 L3:
0010 .dbline 18
0010 F7DF xcall _delay_1us
0012 L4:
0012 .dbline 17
0012 4F5F subi R20,255 ; offset = 1
0014 5F4F sbci R21,255
0016 L6:
0016 .dbline 17
0016 4617 cp R20,R22
0018 5707 cpc R21,R23
001A D0F3 brlo L3
001C .dbline -2
001C L2:
001C 0E940000 xcall pop_gset2
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r i 20 i
0022 .dbsym r n 22 i
0022 .dbend
0022 .dbfunc e delay_1ms _delay_1ms fV
0022 ; i -> R16,R17
.even
0022 _delay_1ms::
0022 .dbline -1
0022 .dbline 22
0022 ; #define PIN_DIR DDRD
0022 ; #define CLOCK 3
0022 ; #define DATAPIN 2
0022 ;
0022 ; //管脚定义
0022 .dbline 24
0022 0027 clr R16
0024 1127 clr R17
0026 02C0 xjmp L11
0028 L8:
0028 .dbline 24
0028 L9:
0028 .dbline 24
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L11:
002C .dbline 24
002C ; #define PIN_RXD 0 //PD0 RXD
002C ; #define PIN_TXD 1 //PD1 TXD
002C 0437 cpi R16,116
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L8
0034 .dbline -2
0034 L7:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 i
0036 .dbend
0036 .dbfunc e delay_nms _delay_nms fV
0036 ; i -> R20,R21
0036 ; n -> R22,R23
.even
0036 _delay_nms::
0036 0E940000 xcall push_gset2
003A B801 movw R22,R16
003C .dbline -1
003C .dbline 28
003C ;
003C ; //常量定义
003C ; #define BAUDRATE 9600 //baudrate
003C ; #define F_CPU 8000000 //the frequency of the global clock
003C .dbline 29
003C ;
003C 4427 clr R20
003E 5527 clr R21
0040 .dbline 30
0040 ;
0040 03C0 xjmp L16
0042 L13:
0042 .dbline 31
0042 EFDF xcall _delay_1ms
0044 L14:
0044 .dbline 30
0044 4F5F subi R20,255 ; offset = 1
0046 5F4F sbci R21,255
0048 L16:
0048 .dbline 30
0048 4617 cp R20,R22
004A 5707 cpc R21,R23
004C D0F3 brlo L13
004E .dbline -2
004E L12:
004E 0E940000 xcall pop_gset2
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r i 20 i
0054 .dbsym r n 22 i
0054 .dbend
.area lit(rom, con, rel)
0110 _discode::
0110 C0F9 .byte 192,249
0112 A4B0 .byte 164,176
0114 9992 .byte 153,146
0116 82F8 .byte 130,248
0118 8090 .byte 128,144
011A 8883 .byte 136,131
011C C6A1 .byte 198,161
011E 868E .byte 134,142
0120 BF .byte 191
0121 .dbfile D:\M16开发板实验教程\icc-avr\ps2test/shumaguan.h
0121 .dbsym e discode _discode A[17:17]kc
.area text(rom, con, rel)
0054 .dbfile D:\M16开发板实验教程\icc-avr\ps2test/shumaguan.h
0054 .dbfunc e display _display fV
0054 ; num -> R20
.even
0054 _display::
0054 0E940000 xcall push_gset1
0058 402F mov R20,R16
005A .dbline -1
005A .dbline 21
005A .dbline 22
005A C098 cbi 0x18,0
005C .dbline 24
005C 80E0 ldi R24,<_discode
005E 90E0 ldi R25,>_discode
0060 E42F mov R30,R20
0062 FF27 clr R31
0064 F595 asr R31
0066 E795 ror R30
0068 F595 asr R31
006A E795 ror R30
006C F595 asr R31
006E E795 ror R30
0070 F595 asr R31
0072 E795 ror R30
0074 E80F add R30,R24
0076 F91F adc R31,R25
0078 E491 lpm R30,Z
007A EBBB out 0x1b,R30
007C .dbline 25
007C 05E0 ldi R16,5
007E 10E0 ldi R17,0
0080 DADF xcall _delay_nms
0082 .dbline 26
0082 C09A sbi 0x18,0
0084 .dbline 28
0084 C198 cbi 0x18,1
0086 .dbline 29
0086 20E1 ldi R18,16
0088 30E0 ldi R19,0
008A 042F mov R16,R20
008C 1127 clr R17
008E 0E940000 xcall mod16s
0092 F801 movw R30,R16
0094 80E0 ldi R24,<_discode
0096 90E0 ldi R25,>_discode
0098 E80F add R30,R24
009A F91F adc R31,R25
009C E491 lpm R30,Z
009E EBBB out 0x1b,R30
00A0 .dbline 30
00A0 05E0 ldi R16,5
00A2 10E0 ldi R17,0
00A4 C8DF xcall _delay_nms
00A6 .dbline 31
00A6 ; unsigned char bitcount;
00A6 C19A sbi 0x18,1
00A8 .dbline -2
00A8 L17:
00A8 0E940000 xcall pop_gset1
00AC .dbline 0 ; func end
00AC 0895 ret
00AE .dbsym r num 20 c
00AE .dbend
00AE .dbfunc e displayerror _displayerror fV
.even
00AE _displayerror::
00AE .dbline -1
00AE .dbline 38
00AE ;
00AE ; volatile unsigned char origialcode=0;
00AE ;
00AE ; void intinitial(void);
00AE ; void portinitial(void); //initialize ports
00AE ; void init_USART(void);
00AE ; unsigned char decode(unsigned char sc);
00AE .dbline 39
00AE ;
00AE C098 cbi 0x18,0
00B0 .dbline 41
00B0 ; /*-----------------------------------------------------------------
00B0 ; function: send a char to the uart
00B0 E0E0 ldi R30,<_discode+16
00B2 F0E0 ldi R31,>_discode+16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -