⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainok.lis

📁 mega8按键数码显示程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -