📄 key_board.lis
字号:
.module key_board.c
.area data(ram, con, rel)
0000 _key_return::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\张秋伟\我的实验\数控电压源\key_board.c
0001 .dbsym e key_return _key_return c
.area bss(ram, con, rel)
0000 .dbfile E:\张秋伟\我的实验\数控电压源\key_board.c
0000 L2:
0000 .blkb 1
0001 L3:
0001 .blkb 1
.area text(rom, con, rel)
0000 .dbfile E:\张秋伟\我的实验\数控电压源\key_board.c
0000 .dbfunc e read_keyboard _read_keyboard fc
0000 .dbsym s key_line L3 c
0000 .dbsym s key_value L2 c
0000 ; i -> R20
.even
0000 _read_keyboard::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 14
0002 ; //包含所需头文件
0002 ; #include <ioM16v.h>
0002 ; #include <macros.h>
0002 ; #include "delay.h"
0002 ; /*------宏定义------*/
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ;
0002 ; #define key_mask 0b00001111
0002 ;
0002 ; //static uchar keyvalue;
0002 ; uchar key_return=0;
0002 ; uchar read_keyboard()
0002 ; {
0002 .dbline 17
0002 ; static uchar key_value,key_line;
0002 ; uchar i;
0002 ; DDRD=0xf0;
0002 80EF ldi R24,240
0004 81BB out 0x11,R24
0006 .dbline 18
0006 ; key_line=0b00010000;
0006 80E1 ldi R24,16
0008 80930100 sts L3,R24
000C .dbline 19
000C ; for(i=1;i<=4;i++)
000C 41E0 ldi R20,1
000E 14C0 rjmp L7
0010 L4:
0010 .dbline 20
0010 ; {
0010 .dbline 21
0010 ; PORTD=~key_line;
0010 20900100 lds R2,L3
0014 2094 com R2
0016 22BA out 0x12,R2
0018 .dbline 22
0018 ; PORTD=~key_line;
0018 20900100 lds R2,L3
001C 2094 com R2
001E 22BA out 0x12,R2
0020 .dbline 23
0020 ; key_value=key_mask&PIND;
0020 80B3 in R24,0x10
0022 8F70 andi R24,15
0024 80930000 sts L2,R24
0028 .dbline 24
0028 ; if(key_value==key_mask)
0028 8F30 cpi R24,15
002A 49F4 brne L6
002C .dbline 25
002C ; key_line<<=1;
002C 20900100 lds R2,L3
0030 220C lsl R2
0032 20920100 sts L3,R2
0036 .dbline 27
0036 ; else
0036 ; break;
0036 L9:
0036 .dbline 28
0036 L5:
0036 .dbline 19
0036 4395 inc R20
0038 L7:
0038 .dbline 19
0038 84E0 ldi R24,4
003A 8417 cp R24,R20
003C 48F7 brsh L4
003E L6:
003E .dbline 29
003E ; }
003E ; delay_nms(5);
003E 05E0 ldi R16,5
0040 10E0 ldi R17,0
0042 00D0 rcall _delay_nms
0044 .dbline 30
0044 ; if(key_value==(key_mask&PIND))
0044 80B3 in R24,0x10
0046 8F70 andi R24,15
0048 20900000 lds R2,L2
004C 2816 cp R2,R24
004E 09F0 breq X1
0050 5EC0 rjmp L10
0052 X1:
0052 .dbline 31
0052 ; {
0052 .dbline 33
0052 ;
0052 ; switch(key_line|key_value)
0052 3324 clr R3
0054 40910100 lds R20,L3
0058 5527 clr R21
005A 4229 or R20,R2
005C 5329 or R21,R3
005E 4732 cpi R20,39
0060 E0E0 ldi R30,0
0062 5E07 cpc R21,R30
0064 09F4 brne X2
0066 48C0 rjmp L22
0068 X2:
0068 4B32 cpi R20,43
006A E0E0 ldi R30,0
006C 5E07 cpc R21,R30
006E 09F4 brne X3
0070 3FC0 rjmp L21
0072 X3:
0072 4D32 cpi R20,45
0074 E0E0 ldi R30,0
0076 5E07 cpc R21,R30
0078 B9F1 breq L20
007A 4E32 cpi R20,46
007C E0E0 ldi R30,0
007E 5E07 cpc R21,R30
0080 79F1 breq L19
0082 8EE2 ldi R24,46
0084 90E0 ldi R25,0
0086 8417 cp R24,R20
0088 9507 cpc R25,R21
008A 8CF0 brlt L26
008C L25:
008C 4731 cpi R20,23
008E E0E0 ldi R30,0
0090 5E07 cpc R21,R30
0092 11F1 breq L18
0094 4B31 cpi R20,27
0096 E0E0 ldi R30,0
0098 5E07 cpc R21,R30
009A D1F0 breq L17
009C 4D31 cpi R20,29
009E E0E0 ldi R30,0
00A0 5E07 cpc R21,R30
00A2 91F0 breq L16
00A4 4E31 cpi R20,30
00A6 E0E0 ldi R30,0
00A8 5E07 cpc R21,R30
00AA 51F0 breq L15
00AC 30C0 rjmp L12
00AE L26:
00AE 4D34 cpi R20,77
00B0 E0E0 ldi R30,0
00B2 5E07 cpc R21,R30
00B4 49F1 breq L24
00B6 4E34 cpi R20,78
00B8 E0E0 ldi R30,0
00BA 5E07 cpc R21,R30
00BC 09F1 breq L23
00BE 27C0 rjmp L12
00C0 X0:
00C0 .dbline 34
00C0 ; {
00C0 L15:
00C0 .dbline 35
00C0 ; case 0b00011110:key_return=1;
00C0 81E0 ldi R24,1
00C2 80930000 sts _key_return,R24
00C6 .dbline 36
00C6 ; break;
00C6 23C0 rjmp L13
00C8 L16:
00C8 .dbline 37
00C8 ; case 0b00011101:key_return=2;
00C8 82E0 ldi R24,2
00CA 80930000 sts _key_return,R24
00CE .dbline 38
00CE ; break;
00CE 1FC0 rjmp L13
00D0 L17:
00D0 .dbline 39
00D0 ; case 0b00011011:key_return=3;
00D0 83E0 ldi R24,3
00D2 80930000 sts _key_return,R24
00D6 .dbline 40
00D6 ; break;
00D6 1BC0 rjmp L13
00D8 L18:
00D8 .dbline 41
00D8 ; case 0b00010111:key_return=4;
00D8 84E0 ldi R24,4
00DA 80930000 sts _key_return,R24
00DE .dbline 42
00DE ; break;
00DE 17C0 rjmp L13
00E0 L19:
00E0 .dbline 43
00E0 ; case 0b00101110:key_return=5;
00E0 85E0 ldi R24,5
00E2 80930000 sts _key_return,R24
00E6 .dbline 44
00E6 ; break;
00E6 13C0 rjmp L13
00E8 L20:
00E8 .dbline 45
00E8 ; case 0b00101101:key_return=6;
00E8 86E0 ldi R24,6
00EA 80930000 sts _key_return,R24
00EE .dbline 46
00EE ; break;
00EE 0FC0 rjmp L13
00F0 L21:
00F0 .dbline 47
00F0 ; case 0b00101011:key_return=7;
00F0 87E0 ldi R24,7
00F2 80930000 sts _key_return,R24
00F6 .dbline 48
00F6 ; break;
00F6 0BC0 rjmp L13
00F8 L22:
00F8 .dbline 49
00F8 ; case 0b00100111:key_return=8;
00F8 88E0 ldi R24,8
00FA 80930000 sts _key_return,R24
00FE .dbline 50
00FE ; break;
00FE 07C0 rjmp L13
0100 L23:
0100 .dbline 51
0100 ; case 0b01001110:key_return=9;
0100 89E0 ldi R24,9
0102 80930000 sts _key_return,R24
0106 .dbline 52
0106 ; break;
0106 03C0 rjmp L13
0108 L24:
0108 .dbline 53
0108 ; case 0b01001101:key_return=0;
0108 2224 clr R2
010A 20920000 sts _key_return,R2
010E .dbline 54
010E ; break;
010E L12:
010E L13:
010E .dbline 56
010E ; }
010E ; }
010E L10:
010E .dbline 57
010E ; return key_return;
010E 00910000 lds R16,_key_return
0112 .dbline -2
0112 L1:
0112 00D0 rcall pop_gset1
0114 .dbline 0 ; func end
0114 0895 ret
0116 .dbsym r i 20 c
0116 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -