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

📄 main.s

📁 avr的视频采集
💻 S
📖 第 1 页 / 共 3 页
字号:
	.module main.c
	.area data(ram, con, rel)
_ADCjohu::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e ADCjohu _ADCjohu L
_ms::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e ms _ms I
_xx::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e xx _xx L
_lvbo::
	.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 lvbo _lvbo c
_lvbo_num::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e lvbo_num _lvbo_num L
_pwm_pingjun::
	.blkb 1
	.area idata
	.byte 254
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e pwm_pingjun _pwm_pingjun c
_Rpwm0::
	.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 Rpwm0 _Rpwm0 c
_Rpwm1::
	.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 Rpwm1 _Rpwm1 c
_Lpwm0::
	.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 Lpwm0 _Lpwm0 c
_Lpwm1::
	.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 Lpwm1 _Lpwm1 c
_all::
	.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 all _all c
_a::
	.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 a _a c
_b::
	.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 b _b c
_c::
	.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 c _c c
_d::
	.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 d _d c
_e::
	.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 e _e c
_f::
	.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 f _f c
_jiaodu::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e jiaodu _jiaodu L
_juli::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e juli _juli L
_time::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e time _time I
_sec::
	.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 sec _sec c
_v_num::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbsym e v_num _v_num i
_chang::
	.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 chang _chang c
_hang::
	.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 hang _hang c
_adc1::
	.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 adc1 _adc1 c
	.area text(rom, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 50
; //////////////////////////////
; //////////////////////////////   22967为近似180度
; 
; #include <iom64v.h>
; #include <macros.h>
; 
; #define PREVSONG   BIT(2)
; #define NEXTSONG   BIT(3)
; #define VOLDOWN    BIT(4)
; #define VOLUP      BIT(5)
; #define STOP       BIT(6)
; 
; #define R_pwm0       BIT(4)
; #define R_pwm1       BIT(5)
; #define L_pwm0       BIT(6)
; #define L_pwm1       BIT(7)
; 
; 
; long ADCjohu=0;
; int ms=0;
; long xx=0;
; //int adc=0;
; 
; #define REF 483
; unsigned char lvbo=0;
; long lvbo_num=0;
; 
; unsigned char pwm_pingjun=254;//平均速度
; unsigned char Rpwm0=0;
; unsigned char Rpwm1=0;
; unsigned char Lpwm0=0;
; unsigned char Lpwm1=0;
; unsigned char all=0, a=0,b=0,c=0,d=0,e=0,f=0;
; #define CIR 1
; #define LINE 2
; #define CLS 3
; long jiaodu=0,juli=0;
; int time=0;
; unsigned char sec=0;
; 
; #define video_x 32
; #define video_y 48
; unsigned int  v_num=0;
; unsigned char v_temp[video_y][video_x],chang=0,hang=0,   adc1=0;;
; 
; unsigned char x_adc;
; unsigned char  y_adc;
; 
; void port_init(void)
; {
	.dbline 51
;  PORTA = 0x00;
	clr R2
	out 0x1b,R2
	.dbline 52
;  DDRA  = 0x00;
	out 0x1a,R2
	.dbline 53
;  PORTB = 0x00;
	out 0x18,R2
	.dbline 54
;  DDRB  = 0x00;
	out 0x17,R2
	.dbline 55
;  PORTC = 0x00; //m103 output only
	out 0x15,R2
	.dbline 56
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 57
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 58
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline 59
;  PORTE = 0x00;
	out 0x3,R2
	.dbline 60
;  DDRE  = 0x00;
	out 0x2,R2
	.dbline 61
;  PORTF = 0x00;
	sts 98,R2
	.dbline 62
;  DDRF  = 0x00;
	sts 97,R2
	.dbline 63
;  PORTG = 0x00;
	sts 101,R2
	.dbline 64
;  DDRG  = 0x00;
	sts 100,R2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer2_init _timer2_init fV
	.even
_timer2_init::
	.dbline -1
	.dbline 72
; }
; 
; //TIMER2 initialize - prescale:64
; // WGM: Normal
; // desired value: 1mSec
; // actual value:  1.000mSec (0.0%)
; void timer2_init(void)
; {
	.dbline 73
;  TCCR2 = 0x00; //stop
	clr R2
	out 0x25,R2
	.dbline 74
;  TCNT2 = 0x83; //setup
	ldi R24,131
	out 0x24,R24
	.dbline 75
;  OCR2  = 0x7D;
	ldi R24,125
	out 0x23,R24
	.dbline 76
;  TCCR2 = 0x03; //start
	ldi R24,3
	out 0x25,R24
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 40
	jmp _timer0_ovf_isr
	.area text(rom, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
	.even
_timer0_ovf_isr::
	st -y,R24
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 82
; }
; 
; 
; #pragma interrupt_handler timer0_ovf_isr:11
; void timer0_ovf_isr(void)
; {
	.dbline 83
;  TCNT0 = 0x83; //reload counter value
	ldi R24,131
	out 0x32,R24
	.dbline 84
;  return;//
	.dbline -2
L3:
	ld R24,y+
	out 0x3f,R24
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e adc_init _adc_init fV
	.even
_adc_init::
	.dbline -1
	.dbline 105
;  /*if (time>500){sec++;time=0;}
;  time++;
;  ADCjohu=ADCL;
;  ADCjohu|=ADCH << 8;
; ///////////////////////////////////////////////////////////////////平均值滤波  1毫秒采样滤波,10毫秒输出
;  if (lvbo==0) {lvbo_num=ADCjohu/2;lvbo++;return;}
;  if (lvbo<10) {lvbo_num+=ADCjohu/2;lvbo++;return;}
;  	else lvbo=0;
; //////////////////////////////////////////////////////////////////////////////
;  if ( (ADCjohu<REF-6) || (ADCjohu>REF+6))
;  	{
; 	 //ADCjohu-=511-10;//-511+31-3.27371     -10
;  	 xx=xx+ADCjohu-REF;//
; 	}
;  ms=1;*/
; }
; 
; //ADC initialize
; // Conversion time: 3uS
; void adc_init(void)
; {
	.dbline 106
;  ADCSRA = 0x00; //disable adc
	clr R2
	out 0x6,R2
	.dbline 107
;  ADMUX = 0x01; //select adc input 0
	ldi R24,1
	out 0x7,R24
	.dbline 108
;  ACSR  = 0x80;
	ldi R24,128
	out 0x8,R24
	.dbline 109
;  ADCSRB = 0x00;
	sts 142,R2
	.dbline 110
;  ADCSRA = 0xEa;
	ldi R24,234
	out 0x6,R24
	.dbline -2
L4:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 84
	jmp _adc_isr
	.area text(rom, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbfunc e adc_isr _adc_isr fV
	.even
_adc_isr::
	st -y,R24
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 115
; }
; 
; #pragma interrupt_handler adc_isr:22
; void adc_isr(void)
; {
	.dbline 124
;  //conversion complete, read value (int) using...
;  // value=ADCL;            //Read 8 low bits first (important)
;  // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
;  //ADCjohu==ADCL;
;  //ADCjohu|=(int)ADCH << 8;
;  //PORTD=ADCjohu;
;  //adc=1; 
;  //if (v_x==32) return;
;  adc1=1;
	ldi R24,1
	sts _adc1,R24
	.dbline 128
; 
;  //PORTA=ADCL;
;  
;  return;
	.dbline -2
L5:
	ld R24,y+
	out 0x3f,R24
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 133
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 135
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 136
;  XDIV  = 0x00; //xtal divider
	clr R2
	out 0x3c,R2
	.dbline 137
;  XMCRA = 0x00; //external memory
	sts 109,R2
	.dbline 138
;  port_init();
	xcall _port_init
	.dbline 139
;  timer2_init(); 
	xcall _timer2_init
	.dbline 142
; 
; //adc_init();
; uart1_init();
	xcall _uart1_init
	.dbline 144
; 
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 145
;  EICRA = 0x0A; //extended ext ints
	ldi R24,10
	sts 106,R24
	.dbline 146
;  EICRB = 0x00; //extended ext ints
	out 0x3a,R2
	.dbline 147
;  EIMSK = 0x03;
	ldi R24,3
	out 0x39,R24
	.dbline 149
;  //TIMSK = 0x40; //timer interrupt sources
;  TIMSK = 0x00;
	out 0x37,R2
	.dbline 150
;  ETIMSK = 0x00; //extended timer interrupt sources
	sts 125,R2
	.dbline 151
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart1_init _uart1_init fV
	.even
_uart1_init::
	.dbline -1
	.dbline 158
;  //all peripherals are now initialized
; }
; //UART1 initialize
; // desired baud rate:19200
; // actual baud rate:19231 (0.2%)
; void uart1_init(void)
; {
	.dbline 159
;  UCSR1B = 0x00; //disable while setting baud rate
	clr R2
	sts 154,R2
	.dbline 160
;  UCSR1A = 0x00;
	sts 155,R2
	.dbline 161
;  UCSR1C = 0x06;
	ldi R24,6
	sts 157,R24
	.dbline 162
;  UBRR1L = 0x40; //set baud rate lo
	ldi R24,64
	sts 153,R24
	.dbline 163
;  UBRR1H = 0x00; //set baud rate hi
	sts 152,R2
	.dbline 164
;  UCSR1B = 0x98;
	ldi R24,152
	sts 154,R24
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 120
	jmp _uart1_rx_isr
	.area text(rom, con, rel)
	.dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\1视频处理\main.c
	.dbfunc e uart1_rx_isr _uart1_rx_isr fV
	.even
_uart1_rx_isr::
	st -y,R0
	st -y,R1
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R5
	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
	xcall push_gset2
	.dbline -1
	.dbline 170
; }
; 
; #pragma interrupt_handler uart1_rx_isr:31
; //cir+00100
; void uart1_rx_isr(void)
; {
	.dbline 172
;  //uart has received a character in UDR
;  if (all==CIR)
	lds R24,_all
	cpi R24,1
	breq X2
	xjmp L9
X2:
	.dbline 173
;  	{
	.dbline 174
; 	   a=b;
	lds R2,_b
	sts _a,R2
	.dbline 175
; 	   b=c;
	lds R2,_c
	sts _b,R2
	.dbline 176
; 	   c=d;
	lds R2,_d
	sts _c,R2
	.dbline 177
; 	   d=e;
	lds R2,_e
	sts _d,R2
	.dbline 178
; 	   e=f;
	lds R2,_f
	sts _e,R2
	.dbline 179
; 	   f=UDR1;
	lds R2,156
	sts _f,R2
	.dbline 180
	mov R24,R2
	cpi R24,48
	brlo L13
	ldi R24,57
	cp R24,R2
	brsh L11
L13:
	.dbline 180
; 	   if ((f<'0')||(f>'9'))return;
	xjmp L8
L11:
	.dbline 181
; 	   if (a=='+')//0x2b
	lds R24,_a
	cpi R24,43
	breq X3
	xjmp L14
X3:
	.dbline 182
; 	   	  {jiaodu=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
	.dbline 182
	lds R18,_c
	clr R19
	ldi R16,1000
	ldi R17,3
	xcall empy16s
	movw R24,R16
	subi R24,128
	sbci R25,187
	lds R18,_b
	clr R19
	ldi R16,10000
	ldi R17,39
	xcall empy16s
	movw R30,R16
	subi R30,0
	sbci R31,83
	add R30,R24
	adc R31,R25
	lds R2,_d
	ldi R24,100
	mul R24,R2
	movw R24,R0
	subi R24,192
	sbci R25,18
	add R30,R24
	adc R31,R25
	lds R2,_e
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	add R30,R24
	adc R31,R25
	lds R24,_f
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	movw R2,R30
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _jiaodu+1,R3
	sts _jiaodu,R2
	sts _jiaodu+2+1,R5
	sts _jiaodu+2,R4
	.dbline 183
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 183
	xjmp L8
L14:
	.dbline 184
; 	   else if (a=='-')//0x2d
	lds R24,_a
	cpi R24,45
	breq X4
	xjmp L16
X4:
	.dbline 185
; 	   	  {jiaodu=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
	.dbline 185
	lds R18,_c
	clr R19
	ldi R16,1000
	ldi R17,3
	xcall empy16s
	movw R24,R16
	subi R24,128
	sbci R25,187
	lds R18,_b
	clr R19
	ldi R16,10000
	ldi R17,39
	xcall empy16s
	movw R30,R16
	subi R30,0
	sbci R31,83
	add R30,R24
	adc R31,R25
	lds R2,_d
	ldi R24,100
	mul R24,R2
	movw R24,R0
	subi R24,192
	sbci R25,18
	add R30,R24
	adc R31,R25
	lds R2,_e
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	add R30,R24
	adc R31,R25
	lds R24,_f
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	com R30
	com R31
	subi R30,0xFF
	sbci R31,0xFF
	movw R2,R30
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _jiaodu+1,R3
	sts _jiaodu,R2
	sts _jiaodu+2+1,R5
	sts _jiaodu+2,R4
	.dbline 186
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 186
	xjmp L8
L16:
	.dbline 187

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -