📄 main.s
字号:
sbrs R2,5
rjmp L71
.dbline 274
; UDR1=0x20;
ldi R24,32
sts 156,R24
L74:
.dbline 275
L75:
.dbline 275
lds R2,155
sbrs R2,5
rjmp L74
.dbline 276
ldi R24,32
sts 156,R24
.dbline 277
L64:
.dbline -2
L39:
adiw R28,4
xcall pop_gset3
adiw R28,4
.dbline 0 ; func end
ret
.dbsym l n 0 L
.dbsym r huanhang 10 c
.dbsym l NUM 10 L
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 287
; while(!(UCSR1A&(1<<UDRE1)));
; UDR1=0x20;
; }
; }
;
;
;
; //TIMER0 initialize - prescale:64
; // WGM: PWM Fast
; // desired value: 1KHz
; // actual value: 0.488KHz (-104.8%)
; void timer0_init(void)
; {
.dbline 288
; TCCR0 = 0x00; //stop
clr R2
out 0x33,R2
.dbline 289
; ASSR = 0x00; //set async mode
out 0x30,R2
.dbline 290
; TCNT0 = 0x01; //set count
ldi R24,1
out 0x32,R24
.dbline 291
; OCR0 = 0x0f;
ldi R24,15
out 0x31,R24
.dbline 292
; TCCR0 = 0x6C; //start timer
ldi R24,108
out 0x33,R24
.dbline -2
L77:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer1_init _timer1_init fV
.even
_timer1_init::
.dbline -1
.dbline 300
; }
;
; //TIMER1 initialize - prescale:64
; // WGM: 5) PWM 8bit fast, TOP=0x00FF
; // desired value: 1KHz
; // actual value: 0.488KHz (104.8%)
; void timer1_init(void)
; {
.dbline 301
; TCCR1B = 0x00; //stop
clr R2
out 0x2e,R2
.dbline 302
; TCNT1H = 0xFF; //setup
ldi R24,255
out 0x2d,R24
.dbline 303
; TCNT1L = 0x01;
ldi R24,1
out 0x2c,R24
.dbline 304
; OCR1AH = 0x00;
out 0x2b,R2
.dbline 305
; OCR1AL = 0x0f;
ldi R24,15
out 0x2a,R24
.dbline 306
; OCR1BH = 0x00;
out 0x29,R2
.dbline 307
; OCR1BL = 0x0f;
out 0x28,R24
.dbline 308
; OCR1CH = 0x00;
sts 121,R2
.dbline 309
; OCR1CL = 0x0f;
sts 120,R24
.dbline 310
; ICR1H = 0x00;
out 0x27,R2
.dbline 311
; ICR1L = 0xFF;
ldi R24,255
out 0x26,R24
.dbline 312
; TCCR1A = 0xA9;
ldi R24,169
out 0x2f,R24
.dbline 313
; TCCR1B = 0x0B; //start Timer
ldi R24,11
out 0x2e,R24
.dbline -2
L78:
.dbline 0 ; func end
ret
.dbend
.area data(ram, con, rel)
.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
_shuliang::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
.dbsym e shuliang _shuliang c
_xuanze::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
.dbsym e xuanze _xuanze c
.area vector(rom, abs)
.org 4
jmp _int0_isr
.area data(ram, con, rel)
.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
.area text(rom, con, rel)
.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
.dbfunc e int0_isr _int0_isr fV
.even
_int0_isr::
st -y,R2
st -y,R3
st -y,R24
in R2,0x3f
st -y,R2
.dbline -1
.dbline 319
; }
; unsigned char shuliang=0;
; unsigned char xuanze=0;
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
.dbline 322
; //external interupt on INT0
;
; x_adc=0;y_adc=0;
clr R2
sts _x_adc,R2
.dbline 322
sts _y_adc,R2
.dbline 323
; chang=1;
ldi R24,1
sts _chang,R24
.dbline 324
; shuliang=ms;
lds R2,_ms
lds R3,_ms+1
sts _shuliang,R2
.dbline 325
; ms=0;
clr R2
clr R3
sts _ms+1,R3
sts _ms,R2
.dbline -2
L79:
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视频处理\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 331
;
; }
;
; #pragma interrupt_handler int1_isr:3
; void int1_isr(void)
; {//CLI();
.dbline 335
; //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 L81
.dbline 335
.dbline 335
clr R2
sts _xuanze,R2
.dbline 335
sts _x_adc,R2
.dbline 335
lds R24,_y_adc
subi R24,255 ; addi 1
sts _y_adc,R24
.dbline 335
L81:
.dbline 337
;
; x_adc=video_x+1;
ldi R24,33
sts _x_adc,R24
.dbline 339
; //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
L80:
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 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 348
; //hang=1;
; //SEI();
; }
;
; #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 349
; unsigned char n_jiaodu=0,n_juli=0;
clr R10
.dbline 349
.dbline 350
; unsigned char n_sec=0;
.dbline 352
;
; unsigned int v_num_now=0;//x_now,y_now;
clr R11
.dbline 355
; unsigned char xv,yv;
;
; init_devices();
xcall _init_devices
.dbline 364
; //timer1_init();timer0_init();
; //OCR1AH = 0x00;
; /* OCR1AL = 64;
; //OCR1BH = 0x00;
; OCR1BL = 64;
; //OCR1CH = 0x00;
; OCR1CL = 64;
; OCR0=64;*/
; PORTD|=0x03;//外部中断
in R24,0x12
ori R24,3
out 0x12,R24
.dbline 365
; DDRD&=~03;
in R24,0x11
andi R24,252
out 0x11,R24
.dbline 367
; //while(1);
; DDRE|=0x38;//while(1);
in R24,0x2
ori R24,56
out 0x2,R24
.dbline 377
; /////////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 378
; 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 379
; 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 380
; 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 381
; delay_ms(3000);
ldi R16,3000
ldi R17,11
xcall _delay_ms
.dbline 382
; 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 385
; //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 386
; PORTE |=0x7c;
in R24,0x3
ori R24,124
out 0x3,R24
.dbline 387
; DDRE=0x00;PORTE=0xff;
clr R2
out 0x2,R2
.dbline 387
ldi R24,255
out 0x3,R24
xjmp L85
L84:
.dbline 394
; //number(0,0,4,-999,1);
; /* OCR1AL = pwm_pingjun;
; OCR1BL = pwm_pingjun;
; OCR1CL = pwm_pingjun;
; OCR0=pwm_pingjun;*/
; while(1)
; {
.dbline 397
;
; //for(xv=0;xv<video_x;xv++)
; ADMUX = 0x01; // A/D converter input pin number = 0
ldi R24,1
out 0x7,R24
.dbline 398
; ADCSRA = 0xc2;//|ADATE; // single A/D conversion, fCK/32, conversion now started
ldi R24,194
out 0x6,R24
.dbline 401
; //for(y_adc=0;y_adc<video_y;y_adc++)
; //while(PINE!=0xff)
; if (xuanze==0)
lds R2,_xuanze
tst R2
breq X14
xjmp L87
X14:
.dbline 402
; {
.dbline 403
; for(x_adc=0;x_adc<video_x;x_adc++)
clr R2
sts _x_adc,R2
xjmp L92
L89:
.dbline 404
; {
L93:
.dbline 406
; do
; {
.dbline 408
L94:
.dbline 408
; //PORTE=~PORTE;
; } while(!(ADCSRA&(1<<ADIF)));// ADSC // Wait for A/D conversion to finish
sbis 0x6,4
rjmp L93
.dbline 413
; /*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 415
; //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 L96
mov R24,R2
cpi R24,2
brsh L96
.dbline 416
; 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 L97
L96:
.dbline 418
; 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
L97:
.dbline 420
L90:
.dbline 403
lds R24,_x_adc
subi R24,255 ; addi 1
sts _x_adc,R24
L92:
.dbline 403
lds R24,_x_adc
cpi R24,32
brsh X15
xjmp L89
X15:
.dbline 421
;
; }
; }
L87:
.dbline 422
; ADCSRA = 0x00; // disable AD converter
clr R2
out 0x6,R2
.dbline 434
;
; /*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 L98
.dbline 435
; {
.dbline 436
; for(yv=0;yv<video_y;yv++)
clr R10
xjmp L103
L100:
.dbline 437
; {
.dbline 438
; for(xv=0;xv<video_x;xv++)
clr R12
xjmp L107
X12:
.dbline 439
; { //SEI();
L108:
.dbline 440
L109:
.dbline 440
lds R2,155
sbrs R2,5
rjmp L108
.dbline 441
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 442
L105:
.dbline 438
inc R12
L107:
.dbline 438
mov R24,R12
cpi R24,32
brlo L109
L111:
.dbline 443
L112:
.dbline 443
; while(!(UCSR1A&(1<<UDRE1)));
; UDR1=v_temp[yv][xv];//CLI();
; }
; while(!(UCSR1A&(1<<UDRE1)));
lds R2,155
sbrs R2,5
rjmp L111
.dbline 444
; UDR1=50;
ldi R24,50
sts 156,R24
L114:
.dbline 445
L115:
.dbline 445
lds R2,155
sbrs R2,5
rjmp L114
.dbline 446
ldi R24,2
sts 156,R24
.dbline 447
L101:
.dbline 436
inc R10
L103:
.dbline 436
mov R24,R10
cpi R24,48
brlo L100
L117:
.dbline 448
L118:
.dbline 448
; while(!(UCSR1A&(1<<UDRE1)));
; UDR1=2;
; }
; while(!(UCSR1A&(1<<UDRE1)));
lds R2,155
sbrs R2,5
rjmp L117
.dbline 449
; UDR1=100;
ldi R24,100
sts 156,R24
L120:
.dbline 450
L121:
.dbline 450
; while(!(UCSR1A&(1<<UDRE1)));
lds R2,155
sbrs R2,5
rjmp L120
.dbline 451
; UDR1=4;
ldi R24,4
sts 156,R24
.dbline 452
; }
L98:
.dbline 453
; if (!(PINE & PREVSONG))
sbic 0x1,2
rjmp L123
.dbline 455
; //if (chang==1)
; {number_uart1(shuliang,0);
.dbline 455
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 456
; 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 457
; 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 458
; chang=0;
clr R2
sts _chang,R2
.dbline 459
; ms=0;
clr R3
sts _ms+1,R3
sts _ms,R2
.dbline 460
; }
L123:
.dbline 473
L85:
.dbline 393
xjmp L84
X13:
.dbline -2
L83:
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视频处理\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 + -