⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.s

📁 avr的视频采集
💻 S
📖 第 1 页 / 共 3 页
字号:
	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 + -