📄 独立按键.lis
字号:
0074 0C31 cpi R16,28
0076 11F4 brne L12
0078 X2:
0078 .dbline 38
0078 ; {
0078 .dbline 39
0078 ; return 0;
0078 0027 clr R16
007A 01C0 xjmp L11
007C L12:
007C .dbline 42
007C ; }
007C ; else
007C ; {
007C .dbline 43
007C ; return 1;
007C 01E0 ldi R16,1
007E .dbline -2
007E L11:
007E .dbline 0 ; func end
007E 0895 ret
0080 .dbsym r j 16 c
0080 .dbend
0080 .dbfunc e key_scan _key_scan fc
0080 ; key -> R20
.even
0080 _key_scan::
0080 0E940000 xcall push_xgsetF000
0084 .dbline -1
0084 .dbline 49
0084 ; }
0084 ;
0084 ; }
0084 ;
0084 ; uchar key_scan()
0084 ; {
0084 .dbline 51
0084 ; uchar key;
0084 ; delay(10);
0084 0AE0 ldi R16,10
0086 10E0 ldi R17,0
0088 BBDF xcall _delay
008A .dbline 52
008A ; if(key_press())
008A E9DF xcall _key_press
008C 0023 tst R16
008E B1F1 breq L15
0090 X3:
0090 .dbline 53
0090 ; {
0090 .dbline 54
0090 ; key=PIND;
0090 40B3 in R20,0x10
0092 .dbline 55
0092 ; key&=0X1c;
0092 4C71 andi R20,28
0094 .dbline 56
0094 ; switch(key)
0094 642F mov R22,R20
0096 7727 clr R23
0098 6431 cpi R22,20
009A E0E0 ldi R30,0
009C 7E07 cpc R23,R30
009E 19F1 breq L26
00A0 X4:
00A0 84E1 ldi R24,20
00A2 90E0 ldi R25,0
00A4 8617 cp R24,R22
00A6 9707 cpc R25,R23
00A8 2CF0 brlt L28
00AA X5:
00AA L27:
00AA 6C30 cpi R22,12
00AC E0E0 ldi R30,0
00AE 7E07 cpc R23,R30
00B0 79F0 breq L23
00B2 X6:
00B2 1DC0 xjmp L17
00B4 L28:
00B4 6831 cpi R22,24
00B6 E0E0 ldi R30,0
00B8 7E07 cpc R23,R30
00BA 09F0 breq L20
00BC X7:
00BC 18C0 xjmp L17
00BE L20:
00BE .dbline 60
00BE ; {
00BE ;
00BE ; case 0X18:
00BE ; key_valu++;
00BE 80911900 lds R24,_key_valu
00C2 8F5F subi R24,255 ; addi 1
00C4 80931900 sts _key_valu,R24
00C8 .dbline 61
00C8 ; if(key_valu==16)
00C8 8031 cpi R24,16
00CA A1F4 brne L30
00CC X8:
00CC .dbline 62
00CC ; key=0;
00CC 4427 clr R20
00CE .dbline 63
00CE ; break;
00CE 12C0 xjmp L30
00D0 L23:
00D0 .dbline 65
00D0 ; case 0X0c:
00D0 ; key_valu--;
00D0 80911900 lds R24,_key_valu
00D4 8150 subi R24,1
00D6 80931900 sts _key_valu,R24
00DA .dbline 66
00DA ; if(key_valu<0)
00DA 8030 cpi R24,0
00DC 58F4 brsh L30
00DE X9:
00DE .dbline 67
00DE ; key_valu=0;
00DE 2224 clr R2
00E0 20921900 sts _key_valu,R2
00E4 .dbline 68
00E4 ; break;
00E4 07C0 xjmp L30
00E6 L26:
00E6 .dbline 70
00E6 ; case 0X14:
00E6 ; key_valu=0;
00E6 2224 clr R2
00E8 20921900 sts _key_valu,R2
00EC .dbline 72
00EC ;
00EC ; break;
00EC 03C0 xjmp L30
00EE L17:
00EE .dbline 74
00EE ; default:
00EE ; key_valu=0;
00EE 2224 clr R2
00F0 20921900 sts _key_valu,R2
00F4 .dbline 75
00F4 ; }
00F4 L29:
00F4 .dbline 76
00F4 ; while(key_press());
00F4 L30:
00F4 .dbline 76
00F4 B4DF xcall _key_press
00F6 0023 tst R16
00F8 E9F7 brne L29
00FA X10:
00FA .dbline 77
00FA ; }
00FA 01C0 xjmp L16
00FC L15:
00FC .dbline 79
00FC ; else
00FC ; {
00FC .dbline 80
00FC ; key=16;
00FC 40E1 ldi R20,16
00FE .dbline 81
00FE ; }
00FE L16:
00FE .dbline 82
00FE ; return key_valu;
00FE 00911900 lds R16,_key_valu
0102 .dbline -2
0102 L14:
0102 .dbline 0 ; func end
0102 0C940000 xjmp pop_xgsetF000
0106 .dbsym r key 20 c
0106 .dbend
0106 .dbfunc e main _main fV
0106 ; l -> R10
0106 ; i -> R10
.even
0106 _main::
0106 .dbline -1
0106 .dbline 85
0106 ; }
0106 ; void main()
0106 ; {
0106 .dbline 87
0106 ; uchar i,l;
0106 ; DDRA=0xff;
0106 8FEF ldi R24,255
0108 8ABB out 0x1a,R24
010A .dbline 88
010A ; DDRB=0XFF;
010A 87BB out 0x17,R24
010C 0BC0 xjmp L34
010E L33:
010E .dbline 90
010E ; while(1)
010E ; {
010E .dbline 91
010E ; i=key_press();
010E A7DF xcall _key_press
0110 A02E mov R10,R16
0112 .dbline 92
0112 ; if(i)
0112 0023 tst R16
0114 39F0 breq L36
0116 X11:
0116 .dbline 93
0116 ; {
0116 .dbline 94
0116 ; l=key_scan();
0116 B4DF xcall _key_scan
0118 A02E mov R10,R16
011A .dbline 96
011A ; //show(l/10,1);
011A ; show(l%10,0);
011A 2227 clr R18
011C 1AE0 ldi R17,10
011E 0E940000 xcall mod8u
0122 83DF xcall _show
0124 .dbline 97
0124 ; }
0124 L36:
0124 .dbline 98
0124 ; }
0124 L34:
0124 .dbline 89
0124 F4CF xjmp L33
0126 X12:
0126 .dbline -2
0126 L32:
0126 .dbline 0 ; func end
0126 0895 ret
0128 .dbsym r l 10 c
0128 .dbsym r i 10 c
0128 .dbend
0128 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -