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

📄 main.s

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