📄 xkey.lis
字号:
.module XKEY.C
.area text(rom, con, rel)
0000 .dbfile I:\AVR视频教程\视频教程\lesson7\XKEY/lesson5.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 00D0 rcall push_gset2
0002 .dbline -1
0002 .dbline 7
0002 ; #include <iom16v.h>
0002 ; #include <macros.h>
0002 ; #include "lesson5.c"
0002 ; void main()
0002 ; {
0002 ; uchar i;
0002 ; DDRD|=0X30;
0002 .dbline 9
0002 ;
0002 ; TCCR1A=0X63;
0002 4427 clr R20
0004 5527 clr R21
0006 0BC0 rjmp L5
0008 L2:
0008 .dbline 10
0008 ; TCCR1B=0X13;
0008 .dbline 11
0008 6627 clr R22
000A 7727 clr R23
000C 02C0 rjmp L9
000E L6:
000E .dbline 11
000E L7:
000E .dbline 11
000E 6F5F subi R22,255 ; offset = 1
0010 7F4F sbci R23,255
0012 L9:
0012 .dbline 11
0012 6537 cpi R22,117
0014 E4E0 ldi R30,4
0016 7E07 cpc R23,R30
0018 D0F3 brlo L6
001A .dbline 12
001A L3:
001A .dbline 9
001A 4F5F subi R20,255 ; offset = 1
001C 5F4F sbci R21,255
001E L5:
001E .dbline 9
001E 4017 cp R20,R16
0020 5107 cpc R21,R17
0022 90F3 brlo L2
0024 .dbline -2
0024 .dbline 13
0024 ;
0024 ; OCR1A=1249;
0024 ; OCR1B=31;
0024 L1:
0024 00D0 rcall pop_gset2
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbsym r i 20 i
0028 .dbsym r j 22 i
0028 .dbsym r ms 16 i
0028 .dbend
0028 .dbfunc e key_press _key_press fc
0028 ; j -> R16
.even
0028 _key_press::
0028 .dbline -1
0028 .dbline 16
0028 ;
0028 ; while(1)
0028 ; {
0028 .dbline 18
0028 ; if(key_press())
0028 ; {
0028 81B3 in R24,0x11
002A 8F60 ori R24,15
002C 81BB out 0x11,R24
002E .dbline 19
002E ; i=key_scan();
002E 82B3 in R24,0x12
0030 8F60 ori R24,15
0032 82BB out 0x12,R24
0034 .dbline 21
0034 ; switch(i)
0034 ; {
0034 81B3 in R24,0x11
0036 807F andi R24,240
0038 81BB out 0x11,R24
003A .dbline 23
003A ; case 1:
003A ; OCR1B=31;
003A 00B3 in R16,0x10
003C .dbline 24
003C ; break;
003C 0F70 andi R16,15
003E .dbline 25
003E ; case 2:
003E 0F30 cpi R16,15
0040 11F4 brne L11
0042 .dbline 26
0042 ; OCR1B=62;
0042 .dbline 27
0042 ; break;
0042 0027 clr R16
0044 01C0 rjmp L10
0046 L11:
0046 .dbline 30
0046 ; case 3:
0046 ; OCR1B=93;
0046 ; break;
0046 .dbline 31
0046 ; case 4:
0046 01E0 ldi R16,1
0048 .dbline -2
0048 L10:
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbsym r j 16 c
004A .dbend
004A .dbfunc e key_scan _key_scan fc
004A ; key -> R20
.even
004A _key_scan::
004A 00D0 rcall push_gset2
004C .dbline -1
004C .dbline 37
004C ; OCR1B=124;
004C ; break;
004C ; default:
004C ; OCR1B=31;
004C ; }
004C ; }
004C .dbline 39
004C ; }
004C ; }
004C 0AE0 ldi R16,10
004E 10E0 ldi R17,0
0050 D7DF rcall _delay
0052 .dbline 40
0052 ; }
0052 EADF rcall _key_press
0054 0023 tst R16
0056 11F1 breq L14
0058 .dbline 41
0058 ; }
0058 .dbline 42
0058 ; }
0058 40B3 in R20,0x10
005A .dbline 43
005A ; }
005A 4F70 andi R20,15
005C .dbline 44
005C ; }
005C 642F mov R22,R20
005E 7727 clr R23
0060 6730 cpi R22,7
0062 E0E0 ldi R30,0
0064 7E07 cpc R23,R30
0066 99F0 breq L22
0068 6B30 cpi R22,11
006A E0E0 ldi R30,0
006C 7E07 cpc R23,R30
006E 69F0 breq L21
0070 6D30 cpi R22,13
0072 E0E0 ldi R30,0
0074 7E07 cpc R23,R30
0076 39F0 breq L20
0078 6E30 cpi R22,14
007A E0E0 ldi R30,0
007C 7E07 cpc R23,R30
007E 09F0 breq L19
0080 08C0 rjmp L16
0082 X0:
0082 .dbline 45
0082 ; }
0082 L19:
0082 .dbline 47
0082 ; }
0082 ; }
0082 41E0 ldi R20,1
0084 .dbline 48
0084 ; }
0084 07C0 rjmp L24
0086 L20:
0086 .dbline 50
0086 ; }
0086 ; }
0086 42E0 ldi R20,2
0088 .dbline 51
0088 ; }
0088 05C0 rjmp L24
008A L21:
008A .dbline 53
008A ; }
008A ; }
008A 43E0 ldi R20,3
008C .dbline 54
008C ; }
008C 03C0 rjmp L24
008E L22:
008E .dbline 56
008E ; }
008E ; }
008E 44E0 ldi R20,4
0090 .dbline 57
0090 ; }
0090 01C0 rjmp L24
0092 L16:
0092 .dbline 59
0092 ; }
0092 ; }
0092 40E1 ldi R20,16
0094 .dbline 60
0094 ; }
0094 L23:
0094 .dbline 61
0094 L24:
0094 .dbline 61
0094 ; }
0094 C9DF rcall _key_press
0096 0023 tst R16
0098 E9F7 brne L23
009A .dbline 62
009A ; }
009A 01C0 rjmp L15
009C L14:
009C .dbline 64
009C ; }
009C ; }
009C .dbline 65
009C ; }
009C 40E1 ldi R20,16
009E .dbline 66
009E ; }
009E L15:
009E .dbline 67
009E ; }
009E 042F mov R16,R20
00A0 .dbline -2
00A0 L13:
00A0 00D0 rcall pop_gset2
00A2 .dbline 0 ; func end
00A2 0895 ret
00A4 .dbsym r key 20 c
00A4 .dbend
00A4 .dbfile I:\AVR视频教程\视频教程\lesson7\XKEY\XKEY.C
00A4 .dbfunc e main _main fV
00A4 ; i -> R22
.even
00A4 _main::
00A4 .dbline -1
00A4 .dbline 5
00A4 .dbline 7
00A4 81B3 in R24,0x11
00A6 8063 ori R24,48
00A8 81BB out 0x11,R24
00AA .dbline 9
00AA 83E6 ldi R24,99
00AC 8FBD out 0x2f,R24
00AE .dbline 10
00AE 83E1 ldi R24,19
00B0 8EBD out 0x2e,R24
00B2 .dbline 12
00B2 81EE ldi R24,1249
00B4 94E0 ldi R25,4
00B6 90934B00 sts 74+1,R25
00BA 80934A00 sts 74,R24
00BE .dbline 13
00BE 8FE1 ldi R24,31
00C0 90E0 ldi R25,0
00C2 90934900 sts 72+1,R25
00C6 80934800 sts 72,R24
00CA 3AC0 rjmp L28
00CC L27:
00CC .dbline 16
00CC .dbline 17
00CC ADDF rcall _key_press
00CE 0023 tst R16
00D0 B9F1 breq L30
00D2 .dbline 18
00D2 .dbline 19
00D2 BBDF rcall _key_scan
00D4 602F mov R22,R16
00D6 .dbline 20
00D6 462F mov R20,R22
00D8 5527 clr R21
00DA 4130 cpi R20,1
00DC E0E0 ldi R30,0
00DE 5E07 cpc R21,R30
00E0 69F0 breq L35
00E2 4230 cpi R20,2
00E4 E0E0 ldi R30,0
00E6 5E07 cpc R21,R30
00E8 81F0 breq L36
00EA 4330 cpi R20,3
00EC E0E0 ldi R30,0
00EE 5E07 cpc R21,R30
00F0 99F0 breq L37
00F2 4430 cpi R20,4
00F4 E0E0 ldi R30,0
00F6 5E07 cpc R21,R30
00F8 B1F0 breq L38
00FA 1CC0 rjmp L32
00FC X1:
00FC .dbline 21
00FC L35:
00FC .dbline 23
00FC 8FE1 ldi R24,31
00FE 90E0 ldi R25,0
0100 90934900 sts 72+1,R25
0104 80934800 sts 72,R24
0108 .dbline 24
0108 1BC0 rjmp L33
010A L36:
010A .dbline 26
010A 8EE3 ldi R24,62
010C 90E0 ldi R25,0
010E 90934900 sts 72+1,R25
0112 80934800 sts 72,R24
0116 .dbline 27
0116 14C0 rjmp L33
0118 L37:
0118 .dbline 29
0118 8DE5 ldi R24,93
011A 90E0 ldi R25,0
011C 90934900 sts 72+1,R25
0120 80934800 sts 72,R24
0124 .dbline 30
0124 0DC0 rjmp L33
0126 L38:
0126 .dbline 32
0126 8CE7 ldi R24,124
0128 90E0 ldi R25,0
012A 90934900 sts 72+1,R25
012E 80934800 sts 72,R24
0132 .dbline 33
0132 06C0 rjmp L33
0134 L32:
0134 .dbline 35
0134 8FE1 ldi R24,31
0136 90E0 ldi R25,0
0138 90934900 sts 72+1,R25
013C 80934800 sts 72,R24
0140 .dbline 36
0140 L33:
0140 .dbline 37
0140 L30:
0140 .dbline 38
0140 L28:
0140 .dbline 15
0140 C5CF rjmp L27
0142 X2:
0142 .dbline -2
0142 .dbline 39
0142 L26:
0142 .dbline 0 ; func end
0142 0895 ret
0144 .dbsym r i 22 c
0144 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -