📄 main.lis
字号:
0044 8991 ld R24,y+
0046 8FBF out 0x3f,R24
0048 8991 ld R24,y+
004A .dbline 0 ; func end
004A 1895 reti
004C .dbend
004C .dbfunc e adc_init _adc_init fV
.even
004C _adc_init::
004C .dbline -1
004C .dbline 105
004C ; /*if (time>500){sec++;time=0;}
004C ; time++;
004C ; ADCjohu=ADCL;
004C ; ADCjohu|=ADCH << 8;
004C ; ///////////////////////////////////////////////////////////////////平均值滤波 1毫秒采样滤波,10毫秒输出
004C ; if (lvbo==0) {lvbo_num=ADCjohu/2;lvbo++;return;}
004C ; if (lvbo<10) {lvbo_num+=ADCjohu/2;lvbo++;return;}
004C ; else lvbo=0;
004C ; //////////////////////////////////////////////////////////////////////////////
004C ; if ( (ADCjohu<REF-6) || (ADCjohu>REF+6))
004C ; {
004C ; //ADCjohu-=511-10;//-511+31-3.27371 -10
004C ; xx=xx+ADCjohu-REF;//
004C ; }
004C ; ms=1;*/
004C ; }
004C ;
004C ; //ADC initialize
004C ; // Conversion time: 3uS
004C ; void adc_init(void)
004C ; {
004C .dbline 106
004C ; ADCSRA = 0x00; //disable adc
004C 2224 clr R2
004E 26B8 out 0x6,R2
0050 .dbline 107
0050 ; ADMUX = 0x01; //select adc input 0
0050 81E0 ldi R24,1
0052 87B9 out 0x7,R24
0054 .dbline 108
0054 ; ACSR = 0x80;
0054 80E8 ldi R24,128
0056 88B9 out 0x8,R24
0058 .dbline 109
0058 ; ADCSRB = 0x00;
0058 20928E00 sts 142,R2
005C .dbline 110
005C ; ADCSRA = 0xEa;
005C 8AEE ldi R24,234
005E 86B9 out 0x6,R24
0060 .dbline -2
0060 L4:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbend
.area vector(rom, abs)
.org 84
0054 0C943100 jmp _adc_isr
.area text(rom, con, rel)
0062 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
0062 .dbfunc e adc_isr _adc_isr fV
.even
0062 _adc_isr::
0062 8A93 st -y,R24
0064 8FB7 in R24,0x3f
0066 8A93 st -y,R24
0068 .dbline -1
0068 .dbline 115
0068 ; }
0068 ;
0068 ; #pragma interrupt_handler adc_isr:22
0068 ; void adc_isr(void)
0068 ; {
0068 .dbline 124
0068 ; //conversion complete, read value (int) using...
0068 ; // value=ADCL; //Read 8 low bits first (important)
0068 ; // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
0068 ; //ADCjohu==ADCL;
0068 ; //ADCjohu|=(int)ADCH << 8;
0068 ; //PORTD=ADCjohu;
0068 ; //adc=1;
0068 ; //if (v_x==32) return;
0068 ; adc1=1;
0068 81E0 ldi R24,1
006A 80932A00 sts _adc1,R24
006E .dbline 128
006E ;
006E ; //PORTA=ADCL;
006E ;
006E ; return;
006E .dbline -2
006E L5:
006E 8991 ld R24,y+
0070 8FBF out 0x3f,R24
0072 8991 ld R24,y+
0074 .dbline 0 ; func end
0074 1895 reti
0076 .dbend
0076 .dbfunc e init_devices _init_devices fV
.even
0076 _init_devices::
0076 .dbline -1
0076 .dbline 133
0076 ; }
0076 ;
0076 ; //call this routine to initialize all peripherals
0076 ; void init_devices(void)
0076 ; {
0076 .dbline 135
0076 ; //stop errant interrupts until set up
0076 ; CLI(); //disable all interrupts
0076 F894 cli
0078 .dbline 136
0078 ; XDIV = 0x00; //xtal divider
0078 2224 clr R2
007A 2CBE out 0x3c,R2
007C .dbline 137
007C ; XMCRA = 0x00; //external memory
007C 20926D00 sts 109,R2
0080 .dbline 138
0080 ; port_init();
0080 BFDF xcall _port_init
0082 .dbline 139
0082 ; timer2_init();
0082 D2DF xcall _timer2_init
0084 .dbline 142
0084 ;
0084 ; //adc_init();
0084 ; uart1_init();
0084 0DD0 xcall _uart1_init
0086 .dbline 144
0086 ;
0086 ; MCUCR = 0x00;
0086 2224 clr R2
0088 25BE out 0x35,R2
008A .dbline 145
008A ; EICRA = 0x0A; //extended ext ints
008A 8AE0 ldi R24,10
008C 80936A00 sts 106,R24
0090 .dbline 146
0090 ; EICRB = 0x00; //extended ext ints
0090 2ABE out 0x3a,R2
0092 .dbline 147
0092 ; EIMSK = 0x03;
0092 83E0 ldi R24,3
0094 89BF out 0x39,R24
0096 .dbline 149
0096 ; //TIMSK = 0x40; //timer interrupt sources
0096 ; TIMSK = 0x00;
0096 27BE out 0x37,R2
0098 .dbline 150
0098 ; ETIMSK = 0x00; //extended timer interrupt sources
0098 20927D00 sts 125,R2
009C .dbline 151
009C ; SEI(); //re-enable interrupts
009C 7894 sei
009E .dbline -2
009E L6:
009E .dbline 0 ; func end
009E 0895 ret
00A0 .dbend
00A0 .dbfunc e uart1_init _uart1_init fV
.even
00A0 _uart1_init::
00A0 .dbline -1
00A0 .dbline 158
00A0 ; //all peripherals are now initialized
00A0 ; }
00A0 ; //UART1 initialize
00A0 ; // desired baud rate:19200
00A0 ; // actual baud rate:19231 (0.2%)
00A0 ; void uart1_init(void)
00A0 ; {
00A0 .dbline 159
00A0 ; UCSR1B = 0x00; //disable while setting baud rate
00A0 2224 clr R2
00A2 20929A00 sts 154,R2
00A6 .dbline 160
00A6 ; UCSR1A = 0x00;
00A6 20929B00 sts 155,R2
00AA .dbline 161
00AA ; UCSR1C = 0x06;
00AA 86E0 ldi R24,6
00AC 80939D00 sts 157,R24
00B0 .dbline 162
00B0 ; UBRR1L = 0x40; //set baud rate lo
00B0 80E4 ldi R24,64
00B2 80939900 sts 153,R24
00B6 .dbline 163
00B6 ; UBRR1H = 0x00; //set baud rate hi
00B6 20929800 sts 152,R2
00BA .dbline 164
00BA ; UCSR1B = 0x98;
00BA 88E9 ldi R24,152
00BC 80939A00 sts 154,R24
00C0 .dbline -2
00C0 L7:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbend
.area vector(rom, abs)
.org 120
0078 0C946100 jmp _uart1_rx_isr
.area text(rom, con, rel)
00C2 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
00C2 .dbfunc e uart1_rx_isr _uart1_rx_isr fV
.even
00C2 _uart1_rx_isr::
00C2 0A92 st -y,R0
00C4 1A92 st -y,R1
00C6 2A92 st -y,R2
00C8 3A92 st -y,R3
00CA 4A92 st -y,R4
00CC 5A92 st -y,R5
00CE 0A93 st -y,R16
00D0 1A93 st -y,R17
00D2 2A93 st -y,R18
00D4 3A93 st -y,R19
00D6 8A93 st -y,R24
00D8 9A93 st -y,R25
00DA EA93 st -y,R30
00DC FA93 st -y,R31
00DE 0FB6 in R0,0x3f
00E0 0A92 st -y,R0
00E2 0E940000 xcall push_gset2
00E6 .dbline -1
00E6 .dbline 170
00E6 ; }
00E6 ;
00E6 ; #pragma interrupt_handler uart1_rx_isr:31
00E6 ; //cir+00100
00E6 ; void uart1_rx_isr(void)
00E6 ; {
00E6 .dbline 172
00E6 ; //uart has received a character in UDR
00E6 ; if (all==CIR)
00E6 80911400 lds R24,_all
00EA 8130 cpi R24,1
00EC 09F0 breq X2
00EE B8C0 xjmp L9
00F0 X2:
00F0 .dbline 173
00F0 ; {
00F0 .dbline 174
00F0 ; a=b;
00F0 20901600 lds R2,_b
00F4 20921500 sts _a,R2
00F8 .dbline 175
00F8 ; b=c;
00F8 20901700 lds R2,_c
00FC 20921600 sts _b,R2
0100 .dbline 176
0100 ; c=d;
0100 20901800 lds R2,_d
0104 20921700 sts _c,R2
0108 .dbline 177
0108 ; d=e;
0108 20901900 lds R2,_e
010C 20921800 sts _d,R2
0110 .dbline 178
0110 ; e=f;
0110 20901A00 lds R2,_f
0114 20921900 sts _e,R2
0118 .dbline 179
0118 ; f=UDR1;
0118 20909C00 lds R2,156
011C 20921A00 sts _f,R2
0120 .dbline 180
0120 822D mov R24,R2
0122 8033 cpi R24,48
0124 18F0 brlo L13
0126 89E3 ldi R24,57
0128 8215 cp R24,R2
012A 08F4 brsh L11
012C L13:
012C .dbline 180
012C ; if ((f<'0')||(f>'9'))return;
012C D9C1 xjmp L8
012E L11:
012E .dbline 181
012E ; if (a=='+')//0x2b
012E 80911500 lds R24,_a
0132 8B32 cpi R24,43
0134 09F0 breq X3
0136 41C0 xjmp L14
0138 X3:
0138 .dbline 182
0138 ; {jiaodu=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
0138 .dbline 182
0138 20911700 lds R18,_c
013C 3327 clr R19
013E 08EE ldi R16,1000
0140 13E0 ldi R17,3
0142 0E940000 xcall empy16s
0146 C801 movw R24,R16
0148 8058 subi R24,128
014A 9B4B sbci R25,187
014C 20911600 lds R18,_b
0150 3327 clr R19
0152 00E1 ldi R16,10000
0154 17E2 ldi R17,39
0156 0E940000 xcall empy16s
015A F801 movw R30,R16
015C E050 subi R30,0
015E F345 sbci R31,83
0160 E80F add R30,R24
0162 F91F adc R31,R25
0164 20901800 lds R2,_d
0168 84E6 ldi R24,100
016A 829D mul R24,R2
016C C001 movw R24,R0
016E 805C subi R24,192
0170 9241 sbci R25,18
0172 E80F add R30,R24
0174 F91F adc R31,R25
0176 20901900 lds R2,_e
017A 8AE0 ldi R24,10
017C 829D mul R24,R2
017E C001 movw R24,R0
0180 805E subi R24,224
0182 9140 sbci R25,1
0184 E80F add R30,R24
0186 F91F adc R31,R25
0188 80911A00 lds R24,_f
018C 9927 clr R25
018E C097 sbiw R24,48
0190 E80F add R30,R24
0192 F91F adc R31,R25
0194 1F01 movw R2,R30
0196 4424 clr R4
0198 37FC sbrc R3,7
019A 4094 com R4
019C 5524 clr R5
019E 47FC sbrc R4,7
01A0 5094 com R5
01A2 30921C00 sts _jiaodu+1,R3
01A6 20921B00 sts _jiaodu,R2
01AA 50921E00 sts _jiaodu+2+1,R5
01AE 40921D00 sts _jiaodu+2,R4
01B2 .dbline 183
01B2 ; all=0;return;}
01B2 2224 clr R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -