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

📄 main.lis

📁 AVR单片机ATmega16(L)应用实例1——风机测试仪
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0194 9983              std y+1,R25
 0196 8883              std y+0,R24
 0198 21E0              ldi R18,1
 019A 0027              clr R16
 019C 0E940000          xcall _ePutstr
 01A0                   .dbline 190
 01A0           ; ePutstr(0,2,str2);
 01A0 80E0              ldi R24,<_str2
 01A2 90E0              ldi R25,>_str2
 01A4 9983              std y+1,R25
 01A6 8883              std y+0,R24
 01A8 22E0              ldi R18,2
 01AA 0027              clr R16
 01AC 0E940000          xcall _ePutstr
 01B0                   .dbline 191
 01B0           ; ePutstr(0,3,str3);
 01B0 80E0              ldi R24,<_str3
 01B2 90E0              ldi R25,>_str3
 01B4 9983              std y+1,R25
 01B6 8883              std y+0,R24
 01B8 23E0              ldi R18,3
 01BA 0027              clr R16
 01BC 0E940000          xcall _ePutstr
 01C0                   .dbline -2
 01C0           L22:
 01C0 2296              adiw R28,2
 01C2                   .dbline 0 ; func end
 01C2 0895              ret
 01C4                   .dbend
 01C4                   .dbfunc e test_display _test_display fV
                        .even
 01C4           _test_display::
 01C4 2297              sbiw R28,2
 01C6                   .dbline -1
 01C6                   .dbline 195
 01C6           ; }
 01C6           ; /************************测试界面*************************/
 01C6           ; void test_display(void)
 01C6           ; {
 01C6                   .dbline 196
 01C6           ; ePutstr(0,0,cs0);
 01C6 80E0              ldi R24,<_cs0
 01C8 90E0              ldi R25,>_cs0
 01CA 9983              std y+1,R25
 01CC 8883              std y+0,R24
 01CE 2227              clr R18
 01D0 0027              clr R16
 01D2 0E940000          xcall _ePutstr
 01D6                   .dbline 197
 01D6           ; ePutstr(0,1,cs1);
 01D6 80E0              ldi R24,<_cs1
 01D8 90E0              ldi R25,>_cs1
 01DA 9983              std y+1,R25
 01DC 8883              std y+0,R24
 01DE 21E0              ldi R18,1
 01E0 0027              clr R16
 01E2 0E940000          xcall _ePutstr
 01E6                   .dbline 198
 01E6           ; ePutstr(0,2,cs2);
 01E6 80E0              ldi R24,<_cs2
 01E8 90E0              ldi R25,>_cs2
 01EA 9983              std y+1,R25
 01EC 8883              std y+0,R24
 01EE 22E0              ldi R18,2
 01F0 0027              clr R16
 01F2 0E940000          xcall _ePutstr
 01F6                   .dbline 199
 01F6           ; ePutstr(0,3,cs3);
 01F6 80E0              ldi R24,<_cs3
 01F8 90E0              ldi R25,>_cs3
 01FA 9983              std y+1,R25
 01FC 8883              std y+0,R24
 01FE 23E0              ldi R18,3
 0200 0027              clr R16
 0202 0E940000          xcall _ePutstr
 0206                   .dbline -2
 0206           L23:
 0206 2296              adiw R28,2
 0208                   .dbline 0 ; func end
 0208 0895              ret
 020A                   .dbend
 020A                   .dbfunc e scan_key _scan_key fV
 020A           ;           temp -> R20
                        .even
 020A           _scan_key::
 020A 0E940000          xcall push_gset1
 020E                   .dbline -1
 020E                   .dbline 203
 020E           ; }
 020E           ; /**********************扫描按键**************************/
 020E           ; void scan_key(void)
 020E           ; {
 020E                   .dbline 205
 020E           ; uchar temp;
 020E           ; temp=PINA;
 020E 49B3              in R20,0x19
 0210                   .dbline 206
 0210           ; if(temp==0xbe)status++;
 0210 4E3B              cpi R20,190
 0212 29F4              brne L25
 0214                   .dbline 206
 0214 80910000          lds R24,_status
 0218 8F5F              subi R24,255    ; addi 1
 021A 80930000          sts _status,R24
 021E           L25:
 021E                   .dbline 207
 021E           ; Delay_nms(50);
 021E 02E3              ldi R16,50
 0220 10E0              ldi R17,0
 0222 A5D7              xcall _Delay_nms
 0224                   .dbline -2
 0224           L24:
 0224 0E940000          xcall pop_gset1
 0228                   .dbline 0 ; func end
 0228 0895              ret
 022A                   .dbsym r temp 20 c
 022A                   .dbend
 022A                   .dbfunc e average _average fi
 022A           ;          array -> y+0
 022A           ;            avx -> R20,R21
 022A           ;              i -> R22
                        .even
 022A           _average::
 022A 0E940000          xcall push_gset2
 022E 6497              sbiw R28,20
 0230                   .dbline -1
 0230                   .dbline 211
 0230           ; }
 0230           ; 
 0230           ; uint average(void)//数字化滤波子函数,取样10次后求平均值
 0230           ; {
 0230                   .dbline 213
 0230           ; uchar i;
 0230           ; uint avx=0,array[10];
 0230 4427              clr R20
 0232 5527              clr R21
 0234                   .dbline 214
 0234           ;  for(i=0;i<10;i++)
 0234 6627              clr R22
 0236 0DC0              xjmp L31
 0238           L28:
 0238                   .dbline 215
 0238                   .dbline 216
 0238 85D7              xcall _ADC_Convert
 023A 82E0              ldi R24,2
 023C 869F              mul R24,R22
 023E F001              movw R30,R0
 0240 CE01              movw R24,R28
 0242 E80F              add R30,R24
 0244 F91F              adc R31,R25
 0246 1183              std z+1,R17
 0248 0083              std z+0,R16
 024A                   .dbline 217
 024A 02E0              ldi R16,2
 024C 10E0              ldi R17,0
 024E 8FD7              xcall _Delay_nms
 0250                   .dbline 218
 0250           L29:
 0250                   .dbline 214
 0250 6395              inc R22
 0252           L31:
 0252                   .dbline 214
 0252 6A30              cpi R22,10
 0254 88F3              brlo L28
 0256                   .dbline 219
 0256 6627              clr R22
 0258 0BC0              xjmp L35
 025A           L32:
 025A                   .dbline 219
 025A 82E0              ldi R24,2
 025C 869F              mul R24,R22
 025E F001              movw R30,R0
 0260 CE01              movw R24,R28
 0262 E80F              add R30,R24
 0264 F91F              adc R31,R25
 0266 2080              ldd R2,z+0
 0268 3180              ldd R3,z+1
 026A 420D              add R20,R2
 026C 531D              adc R21,R3
 026E           L33:
 026E                   .dbline 219
 026E 6395              inc R22
 0270           L35:
 0270                   .dbline 219
 0270           ;  {
 0270           ;  array[i]=ADC_Convert();
 0270           ;  Delay_nms(2);
 0270           ;  }
 0270           ;  for(i=0;i<10;i++)avx=avx+array[i];
 0270 6A30              cpi R22,10
 0272 98F3              brlo L32
 0274                   .dbline 220
 0274           ;  avx=avx/10;
 0274 2AE0              ldi R18,10
 0276 30E0              ldi R19,0
 0278 8A01              movw R16,R20
 027A 0E940000          xcall div16u
 027E A801              movw R20,R16
 0280                   .dbline 221
 0280           ; return avx;
 0280                   .dbline -2
 0280           L27:
 0280 6496              adiw R28,20
 0282 0E940000          xcall pop_gset2
 0286                   .dbline 0 ; func end
 0286 0895              ret
 0288                   .dbsym l array 0 A[20:10]i
 0288                   .dbsym r avx 20 i
 0288                   .dbsym r i 22 c
 0288                   .dbend
 0288                   .dbfunc e main _main fV
                        .area func_lit(rom, con, rel)
 0000           L183:
 0000 6E01              .word `L43
 0002 7101              .word `L44
 0004 7E01              .word `L45
 0006 8601              .word `L46
 0008 9301              .word `L47
 000A A301              .word `L50
 000C AE01              .word `L52
 000E CD02              .word `L69
 0010 DF02              .word `L70
 0012 FE02              .word `L73
 0014 0903              .word `L75
 0016 F903              .word `L87
 0018 0704              .word `L88
 001A 1704              .word `L91
 001C 2704              .word `L93
 001E 4004              .word `L96
 0020 5004              .word `L98
 0022 4505              .word `L110
 0024 4A05              .word `L111
 0026 5A05              .word `L114
 0028 6A05              .word `L116
 002A 7D05              .word `L119
 002C 8D05              .word `L121
 002E 8206              .word `L133
 0030 A107              .word `L146
 0032 AA07              .word `L147
 0034 B807              .word `L148
 0036 2E08              .word `L161
                        .area text(rom, con, rel)
 0288                   .dbfile D:\ac18-1\main.c
 0288           ;              f -> y+2
 0288           ;           temp -> R10,R11
 0288           ;              i -> R20
                        .even
 0288           _main::
 0288 2697              sbiw R28,6
 028A                   .dbline -1
 028A                   .dbline 225
 028A           ; }
 028A           ; /**********************主函数*****************************/
 028A           ; void main(void)
 028A           ; {     uint temp;float f;uchar i;
 028A                   .dbline 226
 028A           ;       Delay_nms(400);
 028A 00E9              ldi R16,400
 028C 11E0              ldi R17,1
 028E 6FD7              xcall _Delay_nms
 0290                   .dbline 227
 0290           ;       init_devices();
 0290 69DF              xcall _init_devices
 0292                   .dbline 228
 0292           ;       InitLcd();
 0292 0E940000          xcall _InitLcd
 0296                   .dbline 229
 0296           ;       welcome();
 0296 73DF              xcall _welcome
 0298                   .dbline 230
 0298           ;       LCM_BLCON_ON;
 0298 9498              cbi 0x12,4
 029A                   .dbline 231
 029A           ;       Delay_nms(3000);
 029A 08EB              ldi R16,3000
 029C 1BE0              ldi R17,11
 029E 67D7              xcall _Delay_nms
 02A0                   .dbline 232
 02A0           ;       LCM_BLCON_OFF;
 02A0 949A              sbi 0x12,4
 02A2 4DC7              xjmp L38
 02A4           L37:
 02A4                   .dbline 235
 02A4           ;       /********************************************/
 02A4           ;               while(1)               //无限循环
 02A4           ;               {  
 02A4                   .dbline 236
 02A4           ;                  switch(status)
 02A4 60910000          lds R22,_status
 02A8 7727              clr R23
 02AA 6030              cpi R22,0
 02AC E0E0              ldi R30,0
 02AE 7E07              cpc R23,R30
 02B0 0CF4              brge X2
 02B2 45C7              xjmp L41
 02B4           X2:
 02B4 8BE1              ldi R24,27
 02B6 90E0              ldi R25,0
 02B8 8617              cp R24,R22
 02BA 9707              cpc R25,R23
 02BC 0CF4              brge X3
 02BE 3FC7              xjmp L41
 02C0           X3:
 02C0 02E0              ldi R16,2
 02C2 10E0              ldi R17,0
 02C4 9B01              movw R18,R22
 02C6 0E940000          xcall empy16s
 02CA F801              movw R30,R16
 02CC 80E0              ldi R24,<L183
 02CE 90E0              ldi R25,>L183
 02D0 E80F              add R30,R24
 02D2 F91F              adc R31,R25
 02D4 0590              lpm R0,Z+
 02D6 1490              lpm R1,Z
 02D8 F001              movw R30,R0
 02DA 0994              ijmp
 02DC           X0:
 02DC                   .dbline 237
 02DC           ;                  {
 02DC           L43:
 02DC                   .dbline 238
 02DC           ;                  case 0:scan_key();WDR();//等待按启动键
 02DC 96DF              xcall _scan_key
 02DE                   .dbline 238
 02DE A895              wdr
 02E0                   .dbline 239
 02E0           ;                         break;
 02E0 2EC7              xjmp L41

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -