📄 mainok.lis
字号:
0100 ;
0100 ; DDRC=0x00;/* input */
0100 2224 clr R2
0102 24BA out 0x14,R2
0104 .dbline 100
0104 ; PORTC=0x0f;/* pullup enable */
0104 8FE0 ldi R24,15
0106 85BB out 0x15,R24
0108 ECC0 rjmp L30
010A L29:
010A .dbline 104
010A ;
010A ;
010A ; while(1)
010A ; {
010A .dbline 111
010A ;
010A ;
010A ; //dis[0]=11;dis[1]=11;dis[2]=11;dis[3]=11;
010A ;
010A ;
010A ;
010A ; keynm=keyscan();
010A ABDF rcall _keyscan
010C 602F mov R22,R16
010E 7727 clr R23
0110 .dbline 112
0110 ; if(keynm==4)//set mode
0110 6430 cpi R22,4
0112 E0E0 ldi R30,0
0114 7E07 cpc R23,R30
0116 C1F4 brne L32
0118 .dbline 113
0118 ; {smode=smode+1;
0118 .dbline 113
0118 80910800 lds R24,_smode
011C 90910900 lds R25,_smode+1
0120 0196 adiw R24,1
0122 90930900 sts _smode+1,R25
0126 80930800 sts _smode,R24
012A .dbline 114
012A ; if(smode==5) smode=1;
012A 8530 cpi R24,5
012C E0E0 ldi R30,0
012E 9E07 cpc R25,R30
0130 31F4 brne L34
0132 .dbline 114
0132 81E0 ldi R24,1
0134 90E0 ldi R25,0
0136 90930900 sts _smode+1,R25
013A 80930800 sts _smode,R24
013E L34:
013E .dbline 115
013E ; dis[3]=4;
013E 84E0 ldi R24,4
0140 80930700 sts _dis+3,R24
0144 .dbline 116
0144 ; display();
0144 67DF rcall _display
0146 .dbline 117
0146 ; }
0146 0AC0 rjmp L33
0148 L32:
0148 .dbline 118
0148 ; else if(keynm==3)//enter
0148 6330 cpi R22,3
014A E0E0 ldi R30,0
014C 7E07 cpc R23,R30
014E 31F4 brne L37
0150 .dbline 119
0150 ; {smode=0;
0150 .dbline 119
0150 2224 clr R2
0152 3324 clr R3
0154 30920900 sts _smode+1,R3
0158 20920800 sts _smode,R2
015C .dbline 121
015C ; //save set value
015C ; }
015C L37:
015C L33:
015C .dbline 123
015C ;
015C ; if(smode)
015C 20900800 lds R2,_smode
0160 30900900 lds R3,_smode+1
0164 2220 tst R2
0166 19F4 brne X1
0168 3320 tst R3
016A 09F4 brne X4
016C 8DC0 rjmp L39
016E X4:
016E X1:
016E .dbline 124
016E ; {i=smode-1;
016E .dbline 124
016E 40910800 lds R20,_smode
0172 50910900 lds R21,_smode+1
0176 4150 subi R20,1
0178 5040 sbci R21,0
017A .dbline 125
017A ; switch(keynm)
017A 6130 cpi R22,1
017C E0E0 ldi R30,0
017E 7E07 cpc R23,R30
0180 09F4 brne X5
0182 35C0 rjmp L64
0184 X5:
0184 6230 cpi R22,2
0186 E0E0 ldi R30,0
0188 7E07 cpc R23,R30
018A 09F0 breq L43
018C 5EC0 rjmp L42
018E X2:
018E .dbline 126
018E ; {case 2:
018E L43:
018E .dbline 127
018E ; temp[i]++;
018E 80E0 ldi R24,<_temp
0190 90E0 ldi R25,>_temp
0192 1A01 movw R2,R20
0194 280E add R2,R24
0196 391E adc R3,R25
0198 F101 movw R30,R2
019A 8081 ldd R24,z+0
019C 8F5F subi R24,255 ; addi 1
019E 8083 std z+0,R24
01A0 .dbline 128
01A0 ; if(temp[0]==temp[1])temp[0]=temp[1]-1;
01A0 20900D00 lds R2,_temp+1
01A4 30900C00 lds R3,_temp
01A8 3214 cp R3,R2
01AA 21F4 brne L44
01AC .dbline 128
01AC 822D mov R24,R2
01AE 8150 subi R24,1
01B0 80930C00 sts _temp,R24
01B4 L44:
01B4 .dbline 129
01B4 ; if(temp[1]==temp[2])temp[1]=temp[2]-1;
01B4 20900E00 lds R2,_temp+2
01B8 30900D00 lds R3,_temp+1
01BC 3214 cp R3,R2
01BE 21F4 brne L48
01C0 .dbline 129
01C0 822D mov R24,R2
01C2 8150 subi R24,1
01C4 80930D00 sts _temp+1,R24
01C8 L48:
01C8 .dbline 130
01C8 ; if(temp[2]==temp[3])temp[2]=temp[3]-1;
01C8 20900F00 lds R2,_temp+3
01CC 30900E00 lds R3,_temp+2
01D0 3214 cp R3,R2
01D2 21F4 brne L54
01D4 .dbline 130
01D4 822D mov R24,R2
01D6 8150 subi R24,1
01D8 80930E00 sts _temp+2,R24
01DC L54:
01DC .dbline 131
01DC ; if(temp[3]==99)temp[3]=98;
01DC 80910F00 lds R24,_temp+3
01E0 8336 cpi R24,99
01E2 09F0 breq X6
01E4 32C0 rjmp L42
01E6 X6:
01E6 .dbline 131
01E6 82E6 ldi R24,98
01E8 80930F00 sts _temp+3,R24
01EC .dbline 132
01EC ; break;
01EC 2EC0 rjmp L42
01EE L64:
01EE .dbline 135
01EE ;
01EE ; case 1:
01EE ; temp[i]--;
01EE 80E0 ldi R24,<_temp
01F0 90E0 ldi R25,>_temp
01F2 1A01 movw R2,R20
01F4 280E add R2,R24
01F6 391E adc R3,R25
01F8 F101 movw R30,R2
01FA 8081 ldd R24,z+0
01FC 8150 subi R24,1
01FE 8083 std z+0,R24
0200 .dbline 136
0200 ; if(temp[0]==0)temp[0]=1;
0200 20900C00 lds R2,_temp
0204 2220 tst R2
0206 19F4 brne L65
0208 .dbline 136
0208 81E0 ldi R24,1
020A 80930C00 sts _temp,R24
020E L65:
020E .dbline 137
020E ; if(temp[1]==temp[0])temp[1]=temp[0]+1;
020E 20900C00 lds R2,_temp
0212 30900D00 lds R3,_temp+1
0216 3214 cp R3,R2
0218 21F4 brne L67
021A .dbline 137
021A 822D mov R24,R2
021C 8F5F subi R24,255 ; addi 1
021E 80930D00 sts _temp+1,R24
0222 L67:
0222 .dbline 138
0222 ; if(temp[2]==temp[1])temp[2]=temp[1]+1;
0222 20900D00 lds R2,_temp+1
0226 30900E00 lds R3,_temp+2
022A 3214 cp R3,R2
022C 21F4 brne L71
022E .dbline 138
022E 822D mov R24,R2
0230 8F5F subi R24,255 ; addi 1
0232 80930E00 sts _temp+2,R24
0236 L71:
0236 .dbline 139
0236 ; if(temp[3]==temp[2])temp[3]=temp[2]+1;
0236 20900E00 lds R2,_temp+2
023A 30900F00 lds R3,_temp+3
023E 3214 cp R3,R2
0240 21F4 brne L42
0242 .dbline 139
0242 822D mov R24,R2
0244 8F5F subi R24,255 ; addi 1
0246 80930F00 sts _temp+3,R24
024A .dbline 140
024A ; break;
024A .dbline 141
024A ; default:break;
024A L42:
024A .dbline 143
024A ; }
024A ; dis[0]=smode;dis[1]=11;
024A 20900800 lds R2,_smode
024E 30900900 lds R3,_smode+1
0252 20920400 sts _dis,R2
0256 .dbline 143
0256 8BE0 ldi R24,11
0258 80930500 sts _dis+1,R24
025C .dbline 144
025C ; dis[2]=temp[i]/10;
025C 80E0 ldi R24,<_temp
025E 90E0 ldi R25,>_temp
0260 FA01 movw R30,R20
0262 E80F add R30,R24
0264 F91F adc R31,R25
0266 0081 ldd R16,z+0
0268 1AE0 ldi R17,10
026A 00D0 rcall div8u
026C 00930600 sts _dis+2,R16
0270 .dbline 145
0270 ; dis[3]=temp[i]%10;
0270 80E0 ldi R24,<_temp
0272 90E0 ldi R25,>_temp
0274 FA01 movw R30,R20
0276 E80F add R30,R24
0278 F91F adc R31,R25
027A 0081 ldd R16,z+0
027C 1AE0 ldi R17,10
027E 00D0 rcall mod8u
0280 00930700 sts _dis+3,R16
0284 .dbline 146
0284 ; display();
0284 C7DE rcall _display
0286 .dbline 147
0286 ; }
0286 2DC0 rjmp L40
0288 L39:
0288 .dbline 149
0288 ; else
0288 ; {
0288 .dbline 152
0288 ; //disnm=ADC;
0288 ; //disnm=ADC;
0288 ; dis[0]=disnm/1000;
0288 28EE ldi R18,1000
028A 33E0 ldi R19,3
028C 00910A00 lds R16,_disnm
0290 10910B00 lds R17,_disnm+1
0294 00D0 rcall div16u
0296 00930400 sts _dis,R16
029A .dbline 153
029A ; dis[1]=disnm/100;dis[1]=dis[1]%10;
029A 24E6 ldi R18,100
029C 30E0 ldi R19,0
029E 00910A00 lds R16,_disnm
02A2 10910B00 lds R17,_disnm+1
02A6 00D0 rcall div16u
02A8 00930500 sts _dis+1,R16
02AC .dbline 153
02AC 1AE0 ldi R17,10
02AE 00D0 rcall mod8u
02B0 00930500 sts _dis+1,R16
02B4 .dbline 154
02B4 ; dis[2]=disnm/10;dis[2]=dis[2]%10;
02B4 2AE0 ldi R18,10
02B6 30E0 ldi R19,0
02B8 00910A00 lds R16,_disnm
02BC 10910B00 lds R17,_disnm+1
02C0 00D0 rcall div16u
02C2 00930600 sts _dis+2,R16
02C6 .dbline 154
02C6 1AE0 ldi R17,10
02C8 00D0 rcall mod8u
02CA 00930600 sts _dis+2,R16
02CE .dbline 155
02CE ; dis[3]=disnm%10;
02CE 2AE0 ldi R18,10
02D0 30E0 ldi R19,0
02D2 00910A00 lds R16,_disnm
02D6 10910B00 lds R17,_disnm+1
02DA 00D0 rcall mod16u
02DC 00930700 sts _dis+3,R16
02E0 .dbline 157
02E0 ;
02E0 ; display();
02E0 99DE rcall _display
02E2 .dbline 158
02E2 ; }
02E2 L40:
02E2 .dbline 159
02E2 L30:
02E2 .dbline 103
02E2 13CF rjmp L29
02E4 X3:
02E4 .dbline -2
02E4 L28:
02E4 .dbline 0 ; func end
02E4 0895 ret
02E6 .dbsym l j 1 i
02E6 .dbsym r i 20 i
02E6 .dbsym r keynm 22 i
02E6 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\教学\2008bishe\avrprog\mainok.c
0000 _sm::
0000 .blkb 1
0001 .dbsym e sm _sm c
0001 _se::
0001 .blkb 1
0002 .dbsym e se _se c
0002 _su::
0002 .blkb 1
0003 .dbsym e su _su c
0003 _sd::
0003 .blkb 1
0004 .dbsym e sd _sd c
0004 _dis::
0004 .blkb 4
0008 .dbsym e dis _dis A[4:4]c
0008 _smode::
0008 .blkb 2
000A .dbsym e smode _smode i
000A _disnm::
000A .blkb 2
000C .dbsym e disnm _disnm i
000C _adc_mux::
000C .blkb 1
000D .dbsym e adc_mux _adc_mux c
000D _adc_rel::
000D .blkb 2
000F .dbsym e adc_rel _adc_rel i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -