📄 keypwm.lis
字号:
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 49F1 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 5527 clr R21
0096 4431 cpi R20,20
0098 E0E0 ldi R30,0
009A 5E07 cpc R21,R30
009C B9F0 breq L22
009E X4:
009E 84E1 ldi R24,20
00A0 90E0 ldi R25,0
00A2 8417 cp R24,R20
00A4 9507 cpc R25,R21
00A6 2CF0 brlt L24
00A8 X5:
00A8 L23:
00A8 4C30 cpi R20,12
00AA E0E0 ldi R30,0
00AC 5E07 cpc R21,R30
00AE 51F0 breq L21
00B0 X6:
00B0 11C0 xjmp L17
00B2 L24:
00B2 4831 cpi R20,24
00B4 E0E0 ldi R30,0
00B6 5E07 cpc R21,R30
00B8 09F0 breq L20
00BA X7:
00BA 0CC0 xjmp L17
00BC L20:
00BC .dbline 61
00BC ; {
00BC ;
00BC ; case 0X18:
00BC ;
00BC ; key_valu=5;
00BC 85E0 ldi R24,5
00BE 80931900 sts _key_valu,R24
00C2 .dbline 63
00C2 ;
00C2 ; break;
00C2 0BC0 xjmp L26
00C4 L21:
00C4 .dbline 66
00C4 ; case 0X0c:
00C4 ;
00C4 ; key_valu=10;
00C4 8AE0 ldi R24,10
00C6 80931900 sts _key_valu,R24
00CA .dbline 67
00CA ; break;
00CA 07C0 xjmp L26
00CC L22:
00CC .dbline 70
00CC ; case 0X14:
00CC ;
00CC ; key_valu=15;
00CC 8FE0 ldi R24,15
00CE 80931900 sts _key_valu,R24
00D2 .dbline 72
00D2 ;
00D2 ; break;
00D2 03C0 xjmp L26
00D4 L17:
00D4 .dbline 74
00D4 ; default:
00D4 ; key_valu=0;
00D4 2224 clr R2
00D6 20921900 sts _key_valu,R2
00DA .dbline 75
00DA ; }
00DA L25:
00DA .dbline 76
00DA ; while(key_press());
00DA L26:
00DA .dbline 76
00DA C1DF xcall _key_press
00DC 0023 tst R16
00DE E9F7 brne L25
00E0 X8:
00E0 .dbline 77
00E0 ; }
00E0 03C0 xjmp L16
00E2 L15:
00E2 .dbline 79
00E2 ; else
00E2 ; {
00E2 .dbline 80
00E2 ; key_valu=16;
00E2 80E1 ldi R24,16
00E4 80931900 sts _key_valu,R24
00E8 .dbline 81
00E8 ; }
00E8 L16:
00E8 .dbline 82
00E8 ; return key_valu;
00E8 00911900 lds R16,_key_valu
00EC .dbline -2
00EC L14:
00EC .dbline 0 ; func end
00EC 5991 ld R21,y+
00EE 4991 ld R20,y+
00F0 0895 ret
00F2 .dbsym r key 20 c
00F2 .dbend
00F2 .dbfunc e main _main fV
00F2 ; i -> R10
.even
00F2 _main::
00F2 .dbline -1
00F2 .dbline 85
00F2 ; }
00F2 ; void main()
00F2 ; {
00F2 .dbline 86
00F2 ; uchar i=0;
00F2 AA24 clr R10
00F4 .dbline 87
00F4 ; DDRA=0xff;
00F4 8FEF ldi R24,255
00F6 8ABB out 0x1a,R24
00F8 .dbline 88
00F8 ; DDRB=0XFF;
00F8 87BB out 0x17,R24
00FA .dbline 90
00FA ;
00FA ; DDRD|=0X30;
00FA 81B3 in R24,0x11
00FC 8063 ori R24,48
00FE 81BB out 0x11,R24
0100 .dbline 92
0100 ;
0100 ; TCCR1A=0X63;
0100 83E6 ldi R24,99
0102 8FBD out 0x2f,R24
0104 .dbline 93
0104 ; TCCR1B=0X13;
0104 83E1 ldi R24,19
0106 8EBD out 0x2e,R24
0108 .dbline 95
0108 ;
0108 ; OCR1A=1249;
0108 81EE ldi R24,1249
010A 94E0 ldi R25,4
010C 9BBD out 0x2b,R25
010E 8ABD out 0x2a,R24
0110 .dbline 96
0110 ; OCR1B=31;
0110 8FE1 ldi R24,31
0112 90E0 ldi R25,0
0114 99BD out 0x29,R25
0116 88BD out 0x28,R24
0118 2DC0 xjmp L30
011A L29:
011A .dbline 100
011A ;
011A ;
011A ; while(1)
011A ; {
011A .dbline 101
011A ; if(key_press())
011A A1DF xcall _key_press
011C 0023 tst R16
011E 51F1 breq L32
0120 X9:
0120 .dbline 102
0120 ; {
0120 .dbline 103
0120 ; i=key_scan();
0120 AFDF xcall _key_scan
0122 A02E mov R10,R16
0124 .dbline 104
0124 ; switch(i)
0124 4A2D mov R20,R10
0126 5527 clr R21
0128 4A30 cpi R20,10
012A E0E0 ldi R30,0
012C 5E07 cpc R21,R30
012E A1F0 breq L38
0130 X10:
0130 8AE0 ldi R24,10
0132 90E0 ldi R25,0
0134 8417 cp R24,R20
0136 9507 cpc R25,R21
0138 2CF0 brlt L41
013A X11:
013A L40:
013A 4530 cpi R20,5
013C E0E0 ldi R30,0
013E 5E07 cpc R21,R30
0140 31F0 breq L37
0142 X12:
0142 14C0 xjmp L34
0144 L41:
0144 4F30 cpi R20,15
0146 E0E0 ldi R30,0
0148 5E07 cpc R21,R30
014A 59F0 breq L39
014C X13:
014C 0FC0 xjmp L34
014E L37:
014E .dbline 107
014E ; {
014E ; case 5:
014E ; OCR1B=31;
014E 8FE1 ldi R24,31
0150 90E0 ldi R25,0
0152 99BD out 0x29,R25
0154 88BD out 0x28,R24
0156 .dbline 108
0156 ; break;
0156 0EC0 xjmp L35
0158 L38:
0158 .dbline 110
0158 ; case 10:
0158 ; OCR1B=62;
0158 8EE3 ldi R24,62
015A 90E0 ldi R25,0
015C 99BD out 0x29,R25
015E 88BD out 0x28,R24
0160 .dbline 111
0160 ; break;
0160 09C0 xjmp L35
0162 L39:
0162 .dbline 113
0162 ; case 15:
0162 ; OCR1B=93;
0162 8DE5 ldi R24,93
0164 90E0 ldi R25,0
0166 99BD out 0x29,R25
0168 88BD out 0x28,R24
016A .dbline 114
016A ; break;
016A 04C0 xjmp L35
016C L34:
016C .dbline 117
016C ;
016C ; default:
016C ; OCR1B=124;
016C 8CE7 ldi R24,124
016E 90E0 ldi R25,0
0170 99BD out 0x29,R25
0172 88BD out 0x28,R24
0174 .dbline 118
0174 ; }
0174 L35:
0174 .dbline 119
0174 ; }
0174 L32:
0174 .dbline 120
0174 ; }
0174 L30:
0174 .dbline 99
0174 D2CF xjmp L29
0176 X14:
0176 .dbline -2
0176 L28:
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r i 10 c
0178 .dbend
0178 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -