📄 main.lis
字号:
0086 30922600 sts _time+1,R3
008A 20922500 sts _time,R2
008E .dbline 77
008E L4:
008E .dbline 78
008E ; time++;
008E 80912500 lds R24,_time
0092 90912600 lds R25,_time+1
0096 0196 adiw R24,1
0098 90932600 sts _time+1,R25
009C 80932500 sts _time,R24
00A0 .dbline 79
00A0 ; ADCjohu=ADCL;
00A0 24B0 in R2,0x4
00A2 3324 clr R3
00A4 4424 clr R4
00A6 5524 clr R5
00A8 30920100 sts _ADCjohu+1,R3
00AC 20920000 sts _ADCjohu,R2
00B0 50920300 sts _ADCjohu+2+1,R5
00B4 40920200 sts _ADCjohu+2,R4
00B8 .dbline 80
00B8 ; ADCjohu|=ADCH << 8;
00B8 25B0 in R2,0x5
00BA 3324 clr R3
00BC 322C mov R3,R2
00BE 2224 clr R2
00C0 4424 clr R4
00C2 37FC sbrc R3,7
00C4 4094 com R4
00C6 5524 clr R5
00C8 47FC sbrc R4,7
00CA 5094 com R5
00CC 80900200 lds R8,_ADCjohu+2
00D0 90900300 lds R9,_ADCjohu+2+1
00D4 60900000 lds R6,_ADCjohu
00D8 70900100 lds R7,_ADCjohu+1
00DC 6228 or R6,R2
00DE 7328 or R7,R3
00E0 8428 or R8,R4
00E2 9528 or R9,R5
00E4 70920100 sts _ADCjohu+1,R7
00E8 60920000 sts _ADCjohu,R6
00EC 90920300 sts _ADCjohu+2+1,R9
00F0 80920200 sts _ADCjohu+2,R8
00F4 .dbline 82
00F4 ; ///////////////////////////////////////////////////////////////////平均值滤波 1毫秒采样滤波,10毫秒输出
00F4 ; if (lvbo==0) {lvbo_num=ADCjohu/2;lvbo++;return;}
00F4 20900C00 lds R2,_lvbo
00F8 2220 tst R2
00FA D1F4 brne L6
00FC X1:
00FC .dbline 82
00FC .dbline 82
00FC 42E0 ldi R20,2
00FE 50E0 ldi R21,0
0100 60E0 ldi R22,0
0102 70E0 ldi R23,0
0104 8301 movw R16,R6
0106 9401 movw R18,R8
0108 7A93 st -y,R23
010A 6A93 st -y,R22
010C 5A93 st -y,R21
010E 4A93 st -y,R20
0110 0E940000 xcall div32s
0114 10930E00 sts _lvbo_num+1,R17
0118 00930D00 sts _lvbo_num,R16
011C 30931000 sts _lvbo_num+2+1,R19
0120 20930F00 sts _lvbo_num+2,R18
0124 .dbline 82
0124 80910C00 lds R24,_lvbo
0128 8F5F subi R24,255 ; addi 1
012A 80930C00 sts _lvbo,R24
012E .dbline 82
012E 77C0 xjmp L3
0130 L6:
0130 .dbline 83
0130 ; if (lvbo<10) {lvbo_num+=ADCjohu/2;lvbo++;return;}
0130 80910C00 lds R24,_lvbo
0134 8A30 cpi R24,10
0136 60F5 brsh L8
0138 X2:
0138 .dbline 83
0138 .dbline 83
0138 42E0 ldi R20,2
013A 50E0 ldi R21,0
013C 60E0 ldi R22,0
013E 70E0 ldi R23,0
0140 20910200 lds R18,_ADCjohu+2
0144 30910300 lds R19,_ADCjohu+2+1
0148 00910000 lds R16,_ADCjohu
014C 10910100 lds R17,_ADCjohu+1
0150 7A93 st -y,R23
0152 6A93 st -y,R22
0154 5A93 st -y,R21
0156 4A93 st -y,R20
0158 0E940000 xcall div32s
015C 40900F00 lds R4,_lvbo_num+2
0160 50901000 lds R5,_lvbo_num+2+1
0164 20900D00 lds R2,_lvbo_num
0168 30900E00 lds R3,_lvbo_num+1
016C 200E add R2,R16
016E 311E adc R3,R17
0170 421E adc R4,R18
0172 531E adc R5,R19
0174 30920E00 sts _lvbo_num+1,R3
0178 20920D00 sts _lvbo_num,R2
017C 50921000 sts _lvbo_num+2+1,R5
0180 40920F00 sts _lvbo_num+2,R4
0184 .dbline 83
0184 80910C00 lds R24,_lvbo
0188 8F5F subi R24,255 ; addi 1
018A 80930C00 sts _lvbo,R24
018E .dbline 83
018E 47C0 xjmp L3
0190 L8:
0190 .dbline 84
0190 ; else lvbo=0;/**/
0190 2224 clr R2
0192 20920C00 sts _lvbo,R2
0196 .dbline 86
0196 ; //////////////////////////////////////////////////////////////////////////////
0196 ; if ( (ADCjohu<REF-6) || (ADCjohu>REF+6))
0196 4DED ldi R20,221
0198 51E0 ldi R21,1
019A 60E0 ldi R22,0
019C 70E0 ldi R23,0
019E 40900200 lds R4,_ADCjohu+2
01A2 50900300 lds R5,_ADCjohu+2+1
01A6 20900000 lds R2,_ADCjohu
01AA 30900100 lds R3,_ADCjohu+1
01AE 2416 cp R2,R20
01B0 3506 cpc R3,R21
01B2 4606 cpc R4,R22
01B4 5706 cpc R5,R23
01B6 4CF0 brlt L12
01B8 X3:
01B8 49EE ldi R20,233
01BA 51E0 ldi R21,1
01BC 60E0 ldi R22,0
01BE 70E0 ldi R23,0
01C0 4215 cp R20,R2
01C2 5305 cpc R21,R3
01C4 6405 cpc R22,R4
01C6 7505 cpc R23,R5
01C8 24F5 brge L10
01CA X4:
01CA L12:
01CA .dbline 87
01CA ; {
01CA .dbline 89
01CA ; //ADCjohu-=511-10;//-511+31-3.27371 -10
01CA ; xx=xx+ADCjohu-REF;//
01CA 40900200 lds R4,_ADCjohu+2
01CE 50900300 lds R5,_ADCjohu+2+1
01D2 20900000 lds R2,_ADCjohu
01D6 30900100 lds R3,_ADCjohu+1
01DA 80900800 lds R8,_xx+2
01DE 90900900 lds R9,_xx+2+1
01E2 60900600 lds R6,_xx
01E6 70900700 lds R7,_xx+1
01EA 620C add R6,R2
01EC 731C adc R7,R3
01EE 841C adc R8,R4
01F0 951C adc R9,R5
01F2 43EE ldi R20,227
01F4 51E0 ldi R21,1
01F6 60E0 ldi R22,0
01F8 70E0 ldi R23,0
01FA 641A sub R6,R20
01FC 750A sbc R7,R21
01FE 860A sbc R8,R22
0200 970A sbc R9,R23
0202 70920700 sts _xx+1,R7
0206 60920600 sts _xx,R6
020A 90920900 sts _xx+2+1,R9
020E 80920800 sts _xx+2,R8
0212 .dbline 90
0212 ; }
0212 L10:
0212 .dbline 91
0212 ; ms=1;
0212 81E0 ldi R24,1
0214 90E0 ldi R25,0
0216 90930500 sts _ms+1,R25
021A 80930400 sts _ms,R24
021E .dbline -2
021E L3:
021E .dbline 0 ; func end
021E 0E940000 xcall pop_xgsetF00C
0222 0990 ld R0,y+
0224 0FBE out 0x3f,R0
0226 9991 ld R25,y+
0228 8991 ld R24,y+
022A 3991 ld R19,y+
022C 2991 ld R18,y+
022E 1991 ld R17,y+
0230 0991 ld R16,y+
0232 9990 ld R9,y+
0234 8990 ld R8,y+
0236 7990 ld R7,y+
0238 6990 ld R6,y+
023A 5990 ld R5,y+
023C 4990 ld R4,y+
023E 3990 ld R3,y+
0240 2990 ld R2,y+
0242 1990 ld R1,y+
0244 0990 ld R0,y+
0246 1895 reti
0248 .dbend
0248 .dbfunc e adc_init _adc_init fV
.even
0248 _adc_init::
0248 .dbline -1
0248 .dbline 99
0248 ; //ADCjohu==ADCL;
0248 ; //PORTD=ADCjohu;
0248 ; }
0248 ;
0248 ; //ADC initialize
0248 ; // Conversion time: 3uS
0248 ; void adc_init(void)
0248 ; {
0248 .dbline 100
0248 ; ADCSRA = 0x00; //disable adc
0248 2224 clr R2
024A 26B8 out 0x6,R2
024C .dbline 101
024C ; ADMUX = 0x01; //select adc input 0
024C 81E0 ldi R24,1
024E 87B9 out 0x7,R24
0250 .dbline 102
0250 ; ACSR = 0x80;
0250 80E8 ldi R24,128
0252 88B9 out 0x8,R24
0254 .dbline 104
0254 ; // ADCSRB = 0x00;
0254 ; ADCSRA = 0xEf;
0254 8FEE ldi R24,239
0256 86B9 out 0x6,R24
0258 .dbline -2
0258 L13:
0258 .dbline 0 ; func end
0258 0895 ret
025A .dbend
.area vector(rom, abs)
.org 84
0054 0C942D01 jmp _adc_isr
.area text(rom, con, rel)
025A .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
025A .dbfunc e adc_isr _adc_isr fV
.even
025A _adc_isr::
025A 2A92 st -y,R2
025C 2FB6 in R2,0x3f
025E 2A92 st -y,R2
0260 .dbline -1
0260 .dbline 109
0260 ; }
0260 ;
0260 ; #pragma interrupt_handler adc_isr:22
0260 ; void adc_isr(void)
0260 ; {
0260 .dbline 117
0260 ; //conversion complete, read value (int) using...
0260 ; // value=ADCL; //Read 8 low bits first (important)
0260 ; // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
0260 ; //ADCjohu==ADCL;
0260 ; //ADCjohu|=(int)ADCH << 8;
0260 ; //PORTD=ADCjohu;
0260 ; //adc=1;
0260 ; PORTA=ADCL;
0260 24B0 in R2,0x4
0262 2BBA out 0x1b,R2
0264 .dbline -2
0264 L14:
0264 .dbline 0 ; func end
0264 2990 ld R2,y+
0266 2FBE out 0x3f,R2
0268 2990 ld R2,y+
026A 1895 reti
026C .dbend
026C .dbfunc e init_devices _init_devices fV
.even
026C _init_devices::
026C .dbline -1
026C .dbline 123
026C ;
026C ; }
026C ;
026C ; //call this routine to initialize all peripherals
026C ; void init_devices(void)
026C ; {
026C .dbline 125
026C ; //stop errant interrupts until set up
026C ; CLI(); //disable all interrupts
026C F894 cli
026E .dbline 126
026E ; XDIV = 0x00; //xtal divider
026E 2224 clr R2
0270 2CBE out 0x3c,R2
0272 .dbline 127
0272 ; XMCRA = 0x00; //external memory
0272 20926D00 sts 109,R2
0276 .dbline 128
0276 ; port_init();
0276 C4DE xcall _port_init
0278 .dbline 129
0278 ; timer2_init();
0278 D7DE xcall _timer2_init
027A .dbline 131
027A ;
027A ; adc_init();uart1_init();
027A E6DF xcall _adc_init
027C .dbline 131
027C 0CD0 xcall _uart1_init
027E .dbline 133
027E ;
027E ; MCUCR = 0x00;
027E 2224 clr R2
0280 25BE out 0x35,R2
0282 .dbline 134
0282 ; EICRA = 0x00; //extended ext ints
0282 20926A00 sts 106,R2
0286 .dbline 135
0286 ; EICRB = 0x00; //extended ext ints
0286 2ABE out 0x3a,R2
0288 .dbline 136
0288 ; EIMSK = 0x00;
0288 29BE out 0x39,R2
028A .dbline 137
028A ; TIMSK = 0x40; //timer interrupt sources
028A 80E4 ldi R24,64
028C 87BF out 0x37,R24
028E .dbline 138
028E ; ETIMSK = 0x00; //extended timer interrupt sources
028E 20927D00 sts 125,R2
0292 .dbline 139
0292 ; SEI(); //re-enable interrupts
0292 7894 sei
0294 .dbline -2
0294 L15:
0294 .dbline 0 ; func end
0294 0895 ret
0296 .dbend
0296 .dbfunc e uart1_init _uart1_init fV
.even
0296 _uart1_init::
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -