📄 main.s
字号:
.dbline 242
lds R2,155
sbrs R2,5
rjmp L52
X36:
.dbline 242
ldi R24,43
sts 156,R24
.dbline 242
L55:
.dbline 243
; while(!(UCSR1A&(1<<UDRE1)));
L56:
.dbline 243
lds R2,155
sbrs R2,5
rjmp L55
X37:
.dbline 244
; UDR1=(n/10000)%10+48;
ldi R24,16
ldi R25,39
ldi R26,0
ldi R27,0
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall div32s
ldi R24,10
ldi R25,0
ldi R26,0
ldi R27,0
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall mod32s
movw R2,R16
movw R4,R18
ldi R24,48
ldi R25,0
ldi R26,0
ldi R27,0
add R2,R24
adc R3,R25
adc R4,R26
adc R5,R27
sts 156,R2
L58:
.dbline 245
; while(!(UCSR1A&(1<<UDRE1)));
L59:
.dbline 245
lds R2,155
sbrs R2,5
rjmp L58
X38:
.dbline 246
; UDR1=(n/1000)%10+48;
ldi R24,232
ldi R25,3
ldi R26,0
ldi R27,0
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall div32s
ldi R24,10
ldi R25,0
ldi R26,0
ldi R27,0
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall mod32s
movw R2,R16
movw R4,R18
ldi R24,48
ldi R25,0
ldi R26,0
ldi R27,0
add R2,R24
adc R3,R25
adc R4,R26
adc R5,R27
sts 156,R2
L61:
.dbline 247
; while(!(UCSR1A&(1<<UDRE1)));
L62:
.dbline 247
lds R2,155
sbrs R2,5
rjmp L61
X39:
.dbline 248
; UDR1=(n/100)%10+48;
ldi R24,100
ldi R25,0
ldi R26,0
ldi R27,0
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall div32s
ldi R24,10
ldi R25,0
ldi R26,0
ldi R27,0
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall mod32s
movw R2,R16
movw R4,R18
ldi R24,48
ldi R25,0
ldi R26,0
ldi R27,0
add R2,R24
adc R3,R25
adc R4,R26
adc R5,R27
sts 156,R2
L64:
.dbline 249
; while(!(UCSR1A&(1<<UDRE1)));
L65:
.dbline 249
lds R2,155
sbrs R2,5
rjmp L64
X40:
.dbline 250
; UDR1=(n/10)%10+48;
ldi R24,10
ldi R25,0
ldi R26,0
ldi R27,0
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall div32s
ldi R24,10
ldi R25,0
ldi R26,0
ldi R27,0
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall mod32s
movw R2,R16
movw R4,R18
ldi R24,48
ldi R25,0
ldi R26,0
ldi R27,0
add R2,R24
adc R3,R25
adc R4,R26
adc R5,R27
sts 156,R2
L67:
.dbline 251
; while(!(UCSR1A&(1<<UDRE1)));
L68:
.dbline 251
lds R2,155
sbrs R2,5
rjmp L67
X41:
.dbline 252
; UDR1=n%10+48;
ldi R24,10
ldi R25,0
ldi R26,0
ldi R27,0
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall mod32s
movw R2,R16
movw R4,R18
ldi R24,48
ldi R25,0
ldi R26,0
ldi R27,0
add R2,R24
adc R3,R25
adc R4,R26
adc R5,R27
sts 156,R2
.dbline 253
; if (huanhang)
ldd R0,y+8
tst R0
breq L79
X42:
.dbline 254
; {
L72:
.dbline 255
; while(!(UCSR1A&(1<<UDRE1)));
L73:
.dbline 255
lds R2,155
sbrs R2,5
rjmp L72
X43:
.dbline 256
; UDR1=0x0d;
ldi R24,13
sts 156,R24
L75:
.dbline 257
; while(!(UCSR1A&(1<<UDRE1)));
L76:
.dbline 257
lds R2,155
sbrs R2,5
rjmp L75
X44:
.dbline 258
; UDR1=0x0a;
ldi R24,10
sts 156,R24
.dbline 259
; }
xjmp L71
L78:
.dbline 262
; else
; {
; while(!(UCSR1A&(1<<UDRE1)));
L79:
.dbline 262
lds R2,155
sbrs R2,5
rjmp L78
X45:
.dbline 263
; UDR1=0x20;
ldi R24,32
sts 156,R24
L81:
.dbline 264
; while(!(UCSR1A&(1<<UDRE1)));
L82:
.dbline 264
lds R2,155
sbrs R2,5
rjmp L81
X46:
.dbline 265
; UDR1=0x20;
ldi R24,32
sts 156,R24
.dbline 266
; }
L71:
.dbline -2
L46:
.dbline 0 ; func end
adiw R28,8
ret
.dbsym l n 0 L
.dbsym l huanhang 8 c
.dbsym l NUM 4 L
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 276
; }
;
;
;
; //TIMER0 initialize - prescale:64
; // WGM: PWM Fast
; // desired value: 1KHz
; // actual value: 0.488KHz (-104.8%)
; void timer0_init(void)
; {
.dbline 277
; TCCR0 = 0x00; //stop
clr R2
out 0x33,R2
.dbline 278
; ASSR = 0x00; //set async mode
out 0x30,R2
.dbline 279
; TCNT0 = 0x01; //set count
ldi R24,1
out 0x32,R24
.dbline 280
; OCR0 = 0x0f;
ldi R24,15
out 0x31,R24
.dbline 281
; TCCR0 = 0x6C; //start timer
ldi R24,108
out 0x33,R24
.dbline -2
L84:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer1_init _timer1_init fV
.even
_timer1_init::
.dbline -1
.dbline 329
; }
;
; //TIMER1 initialize - prescale:64
; // WGM: 5) PWM 8bit fast, TOP=0x00FF
; // desired value: 1KHz
; // actual value: 0.488KHz (104.8%)
; /*void timer1_init(void)
; {
; TCCR1B = 0x00; //stop
; TCNT1H = 0xFF; //setup
; TCNT1L = 0x01;
; OCR1AH = 0x00;
; OCR1AL = 0x0f;
; OCR1BH = 0x00;
; OCR1BL = 0x0f;
; OCR1CH = 0x00;
; OCR1CL = 0x0f;
; ICR1H = 0x00;
; ICR1L = 0xFF;
; TCCR1A = 0xA9;
; TCCR1B = 0x0B; //start Timer
; }*/
; //TIMER1 initialize - prescale:8
; // WGM: 9) PWM phz freq correct, TOP=OCRnA
; // desired value: 40mSec
; // actual value: 40.000mSec (0.0%)
; /*void timer1_init(void)
; {
; TCCR1B = 0x00; //stop
; TCNT1H = 0xB1; //setup
; TCNT1L = 0xE0;
; OCR1AH = 0x4E;
; OCR1AL = 0x20;
; OCR1BH = 0x4E;
; OCR1BL = 0x20;
; OCR1CH = 0x4E;
; OCR1CL = 0x20;
; ICR1H = 0x4E;
; ICR1L = 0x20;
; TCCR1A = 0x01;
; TCCR1B = 0x12; //start Timer
; }*/
; //TIMER1 initialize - prescale:256
; // WGM: 7) PWM 10bit fast, TOP=0x03FF
; // desired value: 40mSec
; // actual value: 32.768mSec (18.1%)
; void timer1_init(void)
; {
.dbline 330
; TCCR1B = 0x00; //stop
clr R2
out 0x2e,R2
.dbline 331
; TCNT1H = 0xFC; //setup
ldi R24,252
out 0x2d,R24
.dbline 332
; TCNT1L = 0x01;
ldi R24,1
out 0x2c,R24
.dbline 333
; OCR1AH = 0x03;
ldi R24,3
out 0x2b,R24
.dbline 334
; OCR1AL = 0xFF;
ldi R24,255
out 0x2a,R24
.dbline 335
; OCR1BH = 0x03;
ldi R24,3
out 0x29,R24
.dbline 336
; OCR1BL = 0xFF;
ldi R24,255
out 0x28,R24
.dbline 337
; OCR1CH = 0x03;
ldi R24,3
sts 121,R24
.dbline 338
; OCR1CL = 0xFF;
ldi R24,255
sts 120,R24
.dbline 339
; ICR1H = 0x03;
ldi R24,3
out 0x27,R24
.dbline 340
; ICR1L = 0xFF;
ldi R24,255
out 0x26,R24
.dbline 341
; TCCR1A = 0xAB;
ldi R24,171
out 0x2f,R24
.dbline 342
; TCCR1B = 0x0C; //start Timer
ldi R24,12
out 0x2e,R24
.dbline -2
L85:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 44
jmp _timer1_capt_isr
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\buhuo\main.c
.dbfunc e timer1_capt_isr _timer1_capt_isr fV
.even
_timer1_capt_isr::
st -y,R2
st -y,R3
st -y,R24
in R2,0x3f
st -y,R2
.dbline -1
.dbline 350
; }
;
; #pragma interrupt_handler timer1_capt_isr:iv_TIM1_CAPT
;
; void timer1_capt_isr(void)
; //ICP输入捕获中断处理程序
; //SIGNAL(SIG_INPUT_CAPTURE1)
; { //PORTF=~PORTF;
.dbline 352
;
; if(shang_johu)
lds R2,_shang_johu
tst R2
breq L87
X47:
.dbline 353
; {
.dbline 355
; //ICR1=0;;
; temp1 = ICR1;
in R2,0x26
in R3,0x27
sts _temp1+1,R3
sts _temp1,R2
.dbline 357
; //TCCR1B |= (1<<ICNC1)|(1<<CS11);//8分频,8M时钟时正好1us
; TCCR1B &= ~(1<<ICES1);
in R24,0x2e
andi R24,191
out 0x2e,R24
.dbline 358
; shang_johu=0;
clr R2
sts _shang_johu,R2
.dbline 360
;
; }
xjmp L88
L87:
.dbline 362
; else
; {
.dbline 363
; temp2 = ICR1;
in R2,0x26
in R3,0x27
sts _temp2+1,R3
sts _temp2,R2
.dbline 372
; //TIMSK &= ~((1<<TICIE1)|(1<<TOIE1));//关闭中断使能
; //TCCR1B &= ~((1<<CS12)|(1<<CS11)|(1<<CS10));
; //TCNT1 = 0;
;
;
; //temp2 -= temp1;
;
; //TCCR1B=0x00;
; TCCR1B |= (1<<ICES1);
in R24,0x2e
ori R24,64
out 0x2e,R24
.dbline 373
; count1=0;
clr R2
sts _count1,R2
.dbline 374
; shang_johu=1;
ldi R24,1
sts _shang_johu,R24
.dbline 375
; }
L88:
.dbline -2
L86:
.dbline 0 ; func end
ld R2,y+
out 0x3f,R2
ld R24,y+
ld R3,y+
ld R2,y+
reti
.dbend
.dbfunc e main _main fI
; n -> <dead>
; i -> R12
; n_juli -> R10
; n_jiaodu -> R10
; n_sec -> R10
; pwm_duoji -> R10,R11
.even
_main::
sbiw R28,1
.dbline -1
.dbline 416
; //shang_johu=!shang_johu;
; /*
; count1++;
; switch(count1)
; {
; case 2://第一次捕获,则开始计数
; {
; ICR1=0;
; temp1 = ICR1;
;
; TCCR1B |= (1<<ICNC1)|(1<<CS11);//8分频,8M时钟时正好1us
; TCCR1B &= ~(1<<ICES1);
;
; }
; break;
; case 3: //第二次捕获,表示一个周期结束,计数结束
; {
; temp2 = ICR1;
; TIMSK &= ~((1<<TICIE1)|(1<<TOIE1));//关闭中断使能
; //TCCR1B &= ~((1<<CS12)|(1<<CS11)|(1<<CS10));
; //TCNT1 = 0;
;
;
; //temp2 -= temp1;
;
; TCCR1B=0x00;
; TCCR1B |= (1<<ICES1);
; count1=0;
; }
; break;
;
; default: ;
; }
; */
; }
;
;
; #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 417
; unsigned char n_jiaodu=0,n_juli=0;
clr R10
.dbline 417
.dbline 418
; unsigned char n_sec=0;
.dbline 419
; unsigned int pwm_duoji=0;
clr R11
.dbline 422
;
;
; unsigned char i=0;
clr R12
.dbline 423
; init_devices();
xcall _init_devices
.dbline 424
; timer1_init();timer0_init();
xcall _timer1_init
.dbline 424
xcall _timer0_init
.dbline 435
; //OCR1AH = 0x00;
; /* OCR1AL = 64;
; //OCR1BH = 0x00;
; OCR1BL = 64;
; //OCR1CH = 0x00;
; OCR1CL = 64;
; OCR0=64;*/
;
;
; //while(1);
; DDRE|=0x38;//while(1);
in R24,0x2
ori R24,56
out 0x2,R24
.dbline 445
; /////////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 446
; 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 447
; 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 448
; 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 449
; delay_ms(3000);
ldi R16,3000
ldi R17,11
xcall _delay_ms
.dbline 450
; 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 454
; //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 455
; PORTE |=0x7c;
in R24,0x3
ori R24,124
out 0x3,R24
.dbline 457
;
; PORTD=0x01;
ldi R24,1
out 0x12,R24
.dbline 464
; //number(0,0,4,-999,1);
; /* OCR1AL = pwm_pingjun;
; OCR1BL = pwm_pingjun;
; OCR1CL = pwm_pingjun;
; OCR0=pwm_pingjun;*/
;
; PORTD &= ~(1<<PD4);
cbi 0x12,4
.dbline 465
; DDRD &= ~(1<<PD4);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -