📄 main.lis
字号:
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 + -