📄 main.lis
字号:
0054 3A93 st -y,R19
0056 8A93 st -y,R24
0058 9A93 st -y,R25
005A 0FB6 in R0,0x3f
005C 0A92 st -y,R0
005E 0E940000 xcall push_xgsetF00C
0062 .dbline -1
0062 .dbline 79
0062 ; }
0062 ;
0062 ;
0062 ; #pragma interrupt_handler timer0_ovf_isr:11
0062 ; void timer0_ovf_isr(void)
0062 ; {
0062 .dbline 80
0062 ; TCNT0 = 0x83; //reload counter value
0062 83E8 ldi R24,131
0064 82BF out 0x32,R24
0066 .dbline 81
0066 ; if (time>500){sec++;time=0;}
0066 84EF ldi R24,500
0068 91E0 ldi R25,1
006A 20902500 lds R2,_time
006E 30902600 lds R3,_time+1
0072 8215 cp R24,R2
0074 9305 cpc R25,R3
0076 5CF4 brge L4
0078 X0:
0078 .dbline 81
0078 .dbline 81
0078 80912700 lds R24,_sec
007C 8F5F subi R24,255 ; addi 1
007E 80932700 sts _sec,R24
0082 .dbline 81
0082 2224 clr R2
0084 3324 clr R3
0086 30922600 sts _time+1,R3
008A 20922500 sts _time,R2
008E .dbline 81
008E L4:
008E .dbline 82
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 83
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 84
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 86
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 86
00FC .dbline 86
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 86
0124 80910C00 lds R24,_lvbo
0128 8F5F subi R24,255 ; addi 1
012A 80930C00 sts _lvbo,R24
012E .dbline 86
012E 77C0 xjmp L3
0130 L6:
0130 .dbline 87
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 87
0138 .dbline 87
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 87
0184 80910C00 lds R24,_lvbo
0188 8F5F subi R24,255 ; addi 1
018A 80930C00 sts _lvbo,R24
018E .dbline 87
018E 47C0 xjmp L3
0190 L8:
0190 .dbline 88
0190 ; else lvbo=0;/**/
0190 2224 clr R2
0192 20920C00 sts _lvbo,R2
0196 .dbline 90
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 91
01CA ; {
01CA .dbline 93
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 94
0212 ; }
0212 L10:
0212 .dbline 95
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 103
0248 ; //ADCjohu==ADCL;
0248 ; //PORTD=ADCjohu;
0248 ; }
0248 ;
0248 ; //ADC initialize
0248 ; // Conversion time: 3uS
0248 ; void adc_init(void)
0248 ; {
0248 .dbline 104
0248 ; ADCSRA = 0x00; //disable adc
0248 2224 clr R2
024A 26B8 out 0x6,R2
024C .dbline 105
024C ; ADMUX = 0x01; //select adc input 0
024C 81E0 ldi R24,1
024E 87B9 out 0x7,R24
0250 .dbline 106
0250 ; ACSR = 0x80;
0250 80E8 ldi R24,128
0252 88B9 out 0x8,R24
0254 .dbline 108
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\buhuo\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 113
0260 ; }
0260 ;
0260 ; #pragma interrupt_handler adc_isr:22
0260 ; void adc_isr(void)
0260 ; {
0260 .dbline 121
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 127
026C ;
026C ; }
026C ;
026C ; //call this routine to initialize all peripherals
026C ; void init_devices(void)
026C ; {
026C .dbline 129
026C ; //stop errant interrupts until set up
026C ; CLI(); //disable all interrupts
026C F894 cli
026E .dbline 130
026E ; XDIV = 0x00; //xtal divider
026E 2224 clr R2
0270 2CBE out 0x3c,R2
0272 .dbline 131
0272 ; XMCRA = 0x00; //external memory
0272 20926D00 sts 109,R2
0276 .dbline 132
0276 ; port_init();
0276 C4DE xcall _port_init
0278 .dbline 133
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -