?? main.s
字號:
sts _chang,R24
.dbline 224
; shuliang=ms;
lds R2,_ms
lds R3,_ms+1
sts _shuliang,R2
.dbline 225
; ms=0;
clr R2
clr R3
sts _ms+1,R3
sts _ms,R2
.dbline -2
L73:
ld R2,y+
out 0x3f,R2
ld R24,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.area vector(rom, abs)
.org 8
jmp _int1_isr
.area text(rom, con, rel)
.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1視頻處理\fang__2\main.c
.dbfunc e int1_isr _int1_isr fV
.even
_int1_isr::
st -y,R2
st -y,R3
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 231
;
; }
;
; #pragma interrupt_handler int1_isr:3
; void int1_isr(void)
; {//CLI();
.dbline 235
; //external interupt on INT1
; /*while(x_adc<video_x)
; { v_temp[y_adc*video_x + x_adc] =0;x_adc++;}*/
; if(xuanze++>5){xuanze=0;x_adc=0;y_adc++;}
lds R2,_xuanze
clr R3
mov R24,R2
subi R24,255 ; addi 1
sts _xuanze,R24
ldi R24,5
cp R24,R2
brsh L75
.dbline 235
.dbline 235
clr R2
sts _xuanze,R2
.dbline 235
sts _x_adc,R2
.dbline 235
lds R24,_y_adc
subi R24,255 ; addi 1
sts _y_adc,R24
.dbline 235
L75:
.dbline 237
;
; x_adc=video_x+1;
ldi R24,33
sts _x_adc,R24
.dbline 239
; //v_num=(v_num/video_x+1)*video_x;
; ms++;
lds R24,_ms
lds R25,_ms+1
adiw R24,1
sts _ms+1,R25
sts _ms,R24
.dbline -2
L74:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 249
; //hang=1;
; //SEI();
; }
;
; //TIMER0 initialize - prescale:8
; // WGM: Normal
; // desired value: 2uSec
; // actual value: 2.000uSec (0.0%)
; void timer0_init(void)
; {
.dbline 250
; TCCR0 = 0x00; //stop
clr R2
out 0x33,R2
.dbline 251
; ASSR = 0x00; //set async mode
out 0x30,R2
.dbline 252
; TCNT0 = 0xFB; //set count
ldi R24,251
out 0x32,R24
.dbline 253
; OCR0 = 0x05;
ldi R24,5
out 0x31,R24
.dbline 254
; TCCR0 = 0x02; //start timer
ldi R24,2
out 0x33,R24
.dbline -2
L77:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 64
jmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1視頻處理\fang__2\main.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
_timer0_ovf_isr::
st -y,R0
st -y,R1
st -y,R2
st -y,R3
st -y,R4
st -y,R5
st -y,R6
st -y,R7
st -y,R16
st -y,R17
st -y,R18
st -y,R19
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R0,0x3f
st -y,R0
.dbline -1
.dbline 259
; }
;
; #pragma interrupt_handler timer0_ovf_isr:17
; void timer0_ovf_isr(void)
; {
.dbline 260
; TCNT0 = 0xFB; //reload counter value
ldi R24,251
out 0x32,R24
.dbline 261
; if ( (xuanze!=0) && (xuanze<2) )//濾波均值
lds R2,_xuanze
tst R2
breq L79
mov R24,R2
cpi R24,2
brsh L79
.dbline 262
; v_temp[y_adc][x_adc]=v_temp[y_adc][x_adc]/4+ADC/4;
lds R2,_y_adc
ldi R24,32
mul R24,R2
movw R2,R0
ldi R24,<_v_temp
ldi R25,>_v_temp
add R2,R24
adc R3,R25
lds R4,_x_adc
clr R5
add R4,R2
adc R5,R3
ldi R18,4
ldi R19,0
movw R30,R4
ldd R16,z+0
clr R17
xcall div16s
movw R2,R16
in R6,0x4
in R7,0x5
lsr R7
ror R6
lsr R7
ror R6
add R2,R6
adc R3,R7
movw R30,R4
std z+0,R2
xjmp L80
L79:
.dbline 264
lds R2,_y_adc
ldi R24,32
mul R24,R2
movw R2,R0
ldi R24,<_v_temp
ldi R25,>_v_temp
add R2,R24
adc R3,R25
lds R30,_x_adc
clr R31
add R30,R2
adc R31,R3
in R2,0x4
in R3,0x5
lsr R3
ror R2
std z+0,R2
L80:
.dbline -2
L78:
ld R0,y+
out 0x3f,R0
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R19,y+
ld R18,y+
ld R17,y+
ld R16,y+
ld R7,y+
ld R6,y+
ld R5,y+
ld R4,y+
ld R3,y+
ld R2,y+
ld R1,y+
ld R0,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fI
; n -> <dead>
; v_num_now -> R10,R11
; n_sec -> R10
; n_juli -> R10
; n_jiaodu -> R10
; yv -> R10
; xv -> R12
.even
_main::
sbiw R28,1
.dbline -1
.dbline 270
; else /**/
; v_temp[y_adc][x_adc]=ADC>>1;
; }
; #define PWM_ON DDRB|= R_pwm0 | R_pwm1 | L_pwm0 | L_pwm1;
; #define PWM_OFF DDRB&= ~(R_pwm0 | R_pwm1 | L_pwm0 | L_pwm1);
;
; main()
; {int n;
.dbline 271
; unsigned char n_jiaodu=0,n_juli=0;
clr R10
.dbline 271
.dbline 272
; unsigned char n_sec=0;
.dbline 274
;
; unsigned int v_num_now=0;//x_now,y_now;
clr R11
.dbline 277
; unsigned char xv,yv;
;
; init_devices();
xcall _init_devices
.dbline 278
; PORTD|=0x03;//外部中斷
in R24,0x12
ori R24,3
out 0x12,R24
.dbline 279
; DDRD&=~03;
in R24,0x11
andi R24,252
out 0x11,R24
.dbline 281
; //while(1);
; DDRE|=0x38;//while(1);
in R24,0x2
ori R24,56
out 0x2,R24
.dbline 291
; /////////LCD
; /* DDRB = 0xBF; //SI輸入,SO,SCK,SS輸出
; SPCR = 0x50; //setup SPI
; SPSR = 0x01; //setup SPI*/
; /*while(!(UCSR0A&(1<<UDRE0)));
; UDR0='a';while(!(UCSR0A&(1<<UDRE0)));
; UDR0='a';while(!(UCSR0A&(1<<UDRE0)));
; UDR0='a';while(!(UCSR0A&(1<<UDRE0)));
; UDR0='a';*/
; delay_ms(3000);
ldi R16,3000
ldi R17,11
xcall _delay_ms
.dbline 292
; number_uart1(1010,1);
ldi R24,1
std y+0,R24
ldi R16,242
ldi R17,3
ldi R18,0
ldi R19,0
xcall _number_uart1
.dbline 293
; number_uart1(xx,0);
clr R2
std y+0,R2
lds R18,_xx+2
lds R19,_xx+2+1
lds R16,_xx
lds R17,_xx+1
xcall _number_uart1
.dbline 294
; number_uart1(ADCjohu,1);
ldi R24,1
std y+0,R24
lds R18,_ADCjohu+2
lds R19,_ADCjohu+2+1
lds R16,_ADCjohu
lds R17,_ADCjohu+1
xcall _number_uart1
.dbline 295
; delay_ms(3000);
ldi R16,3000
ldi R17,11
xcall _delay_ms
.dbline 296
; xx=0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _xx+1,R21
sts _xx,R20
sts _xx+2+1,R23
sts _xx+2,R22
.dbline 299
; //LCD_Init();
; //LCD_clear();
; DDRE &= ~0x7c;//if (!(PORTE & STOP)) if (!(PORTE & VOLDOWN)) if (!(PORTE & VOLUP)) if (!(PORTE & NEXTSONG)) if (!(PORTE & PREVSONG))
in R24,0x2
andi R24,131
out 0x2,R24
.dbline 300
; PORTE |=0x7c;
in R24,0x3
ori R24,124
out 0x3,R24
.dbline 301
; DDRE=0x00;PORTE=0xff;
clr R2
out 0x2,R2
.dbline 301
ldi R24,255
out 0x3,R24
xjmp L83
L82:
.dbline 303
; while(1)
; {
.dbline 306
;
; //for(xv=0;xv<video_x;xv++)
; ADMUX = 0x01; // A/D converter input pin number = 0
ldi R24,1
out 0x7,R24
.dbline 307
; ADCSRA = 0xc0;//|ADATE; // single A/D conversion, fCK/32, conversion now started
ldi R24,192
out 0x6,R24
.dbline 310
; //for(y_adc=0;y_adc<video_y;y_adc++)
; //while(PINE!=0xff)
; if (xuanze==0)
lds R2,_xuanze
tst R2
breq X14
xjmp L85
X14:
.dbline 311
; {
.dbline 312
; for(x_adc=0;x_adc<video_x;x_adc++)
clr R2
sts _x_adc,R2
xjmp L90
L87:
.dbline 313
; {
L91:
.dbline 315
; do
; {
.dbline 317
L92:
.dbline 317
; //PORTE=~PORTE;
; } while(!(ADCSRA&(1<<ADIF)));// ADSC // Wait for A/D conversion to finish
sbis 0x6,4
rjmp L91
.dbline 322
; /*count = 6;
; do // Customize this loop to 66 cycles !!
; {
; } while(--count);*/ // wait some cycles
; ADCSRA |= 0x40; // start new A/D conversion
sbi 0x6,6
.dbline 324
; //write_to_flash(ADC-0x1D5); // read data, convert to 8 bit and store in flash
; if ( (xuanze!=0) && (xuanze<2) )//濾波均值
lds R2,_xuanze
tst R2
breq L94
mov R24,R2
cpi R24,2
brsh L94
.dbline 325
; v_temp[y_adc][x_adc]=v_temp[y_adc][x_adc]/4+ADC/4;
lds R2,_y_adc
ldi R24,32
mul R24,R2
movw R2,R0
ldi R24,<_v_temp
ldi R25,>_v_temp
add R2,R24
adc R3,R25
lds R4,_x_adc
clr R5
add R4,R2
adc R5,R3
ldi R18,4
ldi R19,0
movw R30,R4
ldd R16,z+0
clr R17
xcall div16s
movw R2,R16
in R6,0x4
in R7,0x5
lsr R7
ror R6
lsr R7
ror R6
add R2,R6
adc R3,R7
movw R30,R4
std z+0,R2
xjmp L95
L94:
.dbline 327
; else /**/
; v_temp[y_adc][x_adc]=ADC>>1;
lds R2,_y_adc
ldi R24,32
mul R24,R2
movw R2,R0
ldi R24,<_v_temp
ldi R25,>_v_temp
add R2,R24
adc R3,R25
lds R30,_x_adc
clr R31
add R30,R2
adc R31,R3
in R2,0x4
in R3,0x5
lsr R3
ror R2
std z+0,R2
L95:
.dbline 329
L88:
.dbline 312
lds R24,_x_adc
subi R24,255 ; addi 1
sts _x_adc,R24
L90:
.dbline 312
lds R24,_x_adc
cpi R24,32
brsh X15
xjmp L87
X15:
.dbline 330
;
; }
; }
L85:
.dbline 331
; ADCSRA = 0x00; // disable AD converter
clr R2
out 0x6,R2
.dbline 343
;
; /*if (adc1>0)
; {//if (n_sec++>1000)
; {
; v_temp[v_num++]=ADC;
; adc1=0;
; if (v_num>1023)v_num=0;
; n_sec=0;
; }
; adc1=0;
; }*/
; if (!(PINE & NEXTSONG))//( v_num_now!=v_num )
sbic 0x1,3
rjmp L96
.dbline 344
; {
.dbline 345
; for(yv=0;yv<video_y;yv++)
clr R10
xjmp L101
L98:
.dbline 346
; {
.dbline 347
; for(xv=0;xv<video_x;xv++)
clr R12
xjmp L105
X12:
.dbline 348
; { //SEI();
L106:
.dbline 349
L107:
.dbline 349
lds R2,155
sbrs R2,5
rjmp L106
.dbline 350
ldi R24,32
mul R24,R10
movw R2,R0
ldi R24,<_v_temp
ldi R25,>_v_temp
add R2,R24
adc R3,R25
mov R30,R12
clr R31
add R30,R2
adc R31,R3
ldd R2,z+0
sts 156,R2
.dbline 351
L103:
.dbline 347
inc R12
L105:
.dbline 347
mov R24,R12
cpi R24,32
brlo L107
L109:
.dbline 352
L110:
.dbline 352
; while(!(UCSR1A&(1<<UDRE1)));
; UDR1=v_temp[yv][xv];//CLI();
; }
; while(!(UCSR1A&(1<<UDRE1)));
lds R2,155
sbrs R2,5
rjmp L109
.dbline 353
; UDR1=50;
ldi R24,50
sts 156,R24
L112:
.dbline 354
L113:
.dbline 354
lds R2,155
sbrs R2,5
rjmp L112
.dbline 355
ldi R24,2
sts 156,R24
.dbline 356
L99:
.dbline 345
inc R10
L101:
.dbline 345
mov R24,R10
cpi R24,48
brlo L98
L115:
.dbline 357
L116:
.dbline 357
; while(!(UCSR1A&(1<<UDRE1)));
; UDR1=2;
; }
; while(!(UCSR1A&(1<<UDRE1)));
lds R2,155
sbrs R2,5
rjmp L115
.dbline 358
; UDR1=100;
ldi R24,100
sts 156,R24
L118:
.dbline 359
L119:
.dbline 359
; while(!(UCSR1A&(1<<UDRE1)));
lds R2,155
sbrs R2,5
rjmp L118
.dbline 360
; UDR1=4;
ldi R24,4
sts 156,R24
.dbline 361
; }
L96:
.dbline 362
; if (!(PINE & PREVSONG))
sbic 0x1,2
rjmp L121
.dbline 364
; //if (chang==1)
; {number_uart1(shuliang,0);
.dbline 364
clr R2
std y+0,R2
lds R2,_shuliang
clr R3
clr R4
clr R5
movw R16,R2
movw R18,R4
xcall _number_uart1
.dbline 365
; number_uart1(shuliang,0);
clr R2
std y+0,R2
lds R2,_shuliang
clr R3
clr R4
clr R5
movw R16,R2
movw R18,R4
xcall _number_uart1
.dbline 366
; number_uart1(shuliang,1);
ldi R24,1
std y+0,R24
lds R2,_shuliang
clr R3
clr R4
clr R5
movw R16,R2
movw R18,R4
xcall _number_uart1
.dbline 367
; chang=0;
clr R2
sts _chang,R2
.dbline 368
; ms=0;
clr R3
sts _ms+1,R3
sts _ms,R2
.dbline 369
; }
L121:
.dbline 382
L83:
.dbline 302
xjmp L82
X13:
.dbline -2
L81:
adiw R28,1
.dbline 0 ; func end
ret
.dbsym l n 2 I
.dbsym r v_num_now 10 i
.dbsym r n_sec 10 c
.dbsym r n_juli 10 c
.dbsym r n_jiaodu 10 c
.dbsym r yv 10 c
.dbsym r xv 12 c
.dbend
.area bss(ram, con, rel)
.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1視頻處理\fang__2\main.c
_y_adc::
.blkb 1
.dbsym e y_adc _y_adc c
_x_adc::
.blkb 1
.dbsym e x_adc _x_adc c
_v_temp::
.blkb 1536
.dbsym e v_temp _v_temp A[1536:48:32]c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -