📄 main.s
字号:
.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 + -