📄 main.lis
字号:
028C .dbline 319
028C ; }
028C ;
028C ;
028C ; /****************************************************************
028C ; 端口初始化
028C ; ****************************************************************/
028C ; void port_init(void)
028C ; {
028C .dbline 328
028C ; //PORTA = 0xff;
028C ; //DDRA = 0xdf;
028C ; //PORTB = 0x00;
028C ; //DDRB = 0x00;
028C ; //PORTC = 0b01111110;
028C ; //DDRC = 0b10000001;
028C ; //PORTD = 0xff;
028C ; //DDRD = 0x00;
028C ; PORTC&=~(1<<INT);
028C A998 cbi 0x15,1
028E .dbline 329
028E ; DDRC |=(1<<INT);
028E A19A sbi 0x14,1
0290 .dbline -2
0290 L53:
0290 .dbline 0 ; func end
0290 0895 ret
0292 .dbend
0292 .dbfunc e pull_start _pull_start fV
.even
0292 _pull_start::
0292 .dbline -1
0292 .dbline 336
0292 ; }
0292 ;
0292 ; /******************************************************
0292 ; 脉冲输入开始函数
0292 ; ******************************************************/
0292 ; void pull_start(void)
0292 ; {
0292 .dbline 337
0292 ; GICR|=(1<<INT0);
0292 8BB7 in R24,0x3b
0294 8064 ori R24,64
0296 8BBF out 0x3b,R24
0298 .dbline 338
0298 ; TIMSK|=(1<<OCIE2);
0298 89B7 in R24,0x39
029A 8068 ori R24,128
029C 89BF out 0x39,R24
029E .dbline 339
029E ; pull_number=0;
029E 2224 clr R2
02A0 3324 clr R3
02A2 30921E00 sts _pull_number+1,R3
02A6 20921D00 sts _pull_number,R2
02AA .dbline 340
02AA ; counter=0;
02AA 20920200 sts _counter,R2
02AE .dbline 341
02AE ; OCR2=0XFF;
02AE 8FEF ldi R24,255
02B0 83BD out 0x23,R24
02B2 .dbline -2
02B2 L54:
02B2 .dbline 0 ; func end
02B2 0895 ret
02B4 .dbend
02B4 .dbfunc e pull_stop _pull_stop fV
.even
02B4 _pull_stop::
02B4 .dbline -1
02B4 .dbline 347
02B4 ; }
02B4 ; /******************************************************
02B4 ; 脉冲输入开始函数
02B4 ; ******************************************************/
02B4 ; void pull_stop(void)
02B4 ; {
02B4 .dbline 348
02B4 ; GICR&=~(1<<INT0);
02B4 8BB7 in R24,0x3b
02B6 8F7B andi R24,191
02B8 8BBF out 0x3b,R24
02BA .dbline 349
02BA ; TIMSK&=~(1<<OCIE2);
02BA 89B7 in R24,0x39
02BC 8F77 andi R24,127
02BE 89BF out 0x39,R24
02C0 .dbline -2
02C0 L55:
02C0 .dbline 0 ; func end
02C0 0895 ret
02C2 .dbend
02C2 .dbfunc e da_init _da_init fV
.even
02C2 _da_init::
02C2 .dbline -1
02C2 .dbline 355
02C2 ; }
02C2 ; /******************************************************
02C2 ; D/A初始化函数
02C2 ; ******************************************************/
02C2 ; void da_init(void)
02C2 ; {
02C2 .dbline 356
02C2 ; cal_timer1(speed);
02C2 00912100 lds R16,_speed
02C6 10912200 lds R17,_speed+1
02CA 02D1 xcall _cal_timer1
02CC .dbline 357
02CC ; PORTA|=(1<<DA_WR);
02CC D99A sbi 0x1b,1
02CE .dbline 358
02CE ; PORTD|=(1<<DA_CS);
02CE 969A sbi 0x12,6
02D0 .dbline 359
02D0 ; DDRA|=(1<<DA_WR);
02D0 D19A sbi 0x1a,1
02D2 .dbline 360
02D2 ; DDRD|=(1<<DA_CS)|(1<<DA_AB);
02D2 81B3 in R24,0x11
02D4 806C ori R24,192
02D6 81BB out 0x11,R24
02D8 .dbline 361
02D8 ; DDRC|=(1<<DA_SIN)|(1<<DA_COS);
02D8 84B3 in R24,0x14
02DA 806C ori R24,192
02DC 84BB out 0x14,R24
02DE .dbline 362
02DE ; DATA_OUT=0x00;
02DE 2224 clr R2
02E0 28BA out 0x18,R2
02E2 .dbline 363
02E2 ; DATA_IO=0xff;
02E2 8FEF ldi R24,255
02E4 87BB out 0x17,R24
02E6 .dbline 364
02E6 ; timer1_init();
02E6 C3DF xcall _timer1_init
02E8 .dbline -2
02E8 L56:
02E8 .dbline 0 ; func end
02E8 0895 ret
02EA .dbend
02EA .dbfunc e adc_init _adc_init fV
.even
02EA _adc_init::
02EA .dbline -1
02EA .dbline 372
02EA ; }
02EA ;
02EA ;
02EA ; /****************************************************************
02EA ; A/D初始化
02EA ; ****************************************************************/
02EA ; void adc_init(void)
02EA ; {
02EA .dbline 373
02EA ; ADMUX=0b00000000; //选择ADC0做AD输入
02EA 2224 clr R2
02EC 27B8 out 0x7,R2
02EE .dbline 374
02EE ; ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADATE); //允许AD转换,128分频
02EE 87EA ldi R24,167
02F0 86B9 out 0x6,R24
02F2 .dbline -2
02F2 L57:
02F2 .dbline 0 ; func end
02F2 0895 ret
02F4 .dbend
02F4 .dbfunc e adc_change _adc_change fV
02F4 ; l -> R22
02F4 ; g -> R20,R21
02F4 ; s -> y+0
02F4 ; j -> R12,R13
02F4 ; k -> R10
02F4 ; i -> R14
.even
02F4 _adc_change::
02F4 0E940000 xcall push_gset5
02F8 6497 sbiw R28,20
02FA .dbline -1
02FA .dbline 380
02FA ; }
02FA ;
02FA ;
02FA ;
02FA ; void adc_change(void)
02FA ; {
02FA .dbline 387
02FA ; unsigned char i;
02FA ; unsigned char k;
02FA ; unsigned int j;
02FA ; unsigned int g;
02FA ; unsigned char l;
02FA ; unsigned int s[10];
02FA ; g=0;
02FA 4427 clr R20
02FC 5527 clr R21
02FE .dbline 388
02FE ; for (l=0;l<10;l++)
02FE 6627 clr R22
0300 36C0 xjmp L62
0302 L59:
0302 .dbline 389
0302 ; {
0302 .dbline 390
0302 ; for (k=0;k<10;k++)
0302 AA24 clr R10
0304 12C0 xjmp L66
0306 L63:
0306 .dbline 391
0306 ; {
0306 .dbline 392
0306 ; ADCSRA|=(1<<ADSC);
0306 369A sbi 0x6,6
0308 .dbline 393
0308 ; i=ADCSRA;
0308 E6B0 in R14,0x6
030A 01C0 xjmp L68
030C L67:
030C .dbline 395
030C .dbline 395
030C E6B0 in R14,0x6
030E .dbline 395
030E L68:
030E .dbline 394
030E E4FE sbrs R14,4
0310 FDCF rjmp L67
0312 .dbline 396
0312 C4B0 in R12,0x4
0314 D5B0 in R13,0x5
0316 .dbline 397
0316 82E0 ldi R24,2
0318 8A9D mul R24,R10
031A F001 movw R30,R0
031C CE01 movw R24,R28
031E E80F add R30,R24
0320 F91F adc R31,R25
0322 D182 std z+1,R13
0324 C082 std z+0,R12
0326 .dbline 398
0326 349A sbi 0x6,4
0328 .dbline 399
0328 L64:
0328 .dbline 390
0328 A394 inc R10
032A L66:
032A .dbline 390
032A 8A2D mov R24,R10
032C 8A30 cpi R24,10
032E 58F3 brlo L63
0330 .dbline 400
0330 ; while ((i&(1<<ADIF))==0)
0330 ; {i=ADCSRA;}
0330 ; j=ADC;
0330 ; s[k]=j;
0330 ; ADCSRA|=(1<<ADIF);
0330 ; }
0330 ; ins(s,10);
0330 2AE0 ldi R18,10
0332 8E01 movw R16,R28
0334 4ED0 xcall _ins
0336 .dbline 401
0336 ; j=0;
0336 CC24 clr R12
0338 DD24 clr R13
033A .dbline 402
033A ; for (k=0;k<5;k++)
033A AA24 clr R10
033C 0CC0 xjmp L73
033E L70:
033E .dbline 403
033E .dbline 404
033E 82E0 ldi R24,2
0340 8A9D mul R24,R10
0342 F001 movw R30,R0
0344 CE01 movw R24,R28
0346 0496 adiw R24,4
0348 E80F add R30,R24
034A F91F adc R31,R25
034C 2080 ldd R2,z+0
034E 3180 ldd R3,z+1
0350 C20C add R12,R2
0352 D31C adc R13,R3
0354 .dbline 405
0354 L71:
0354 .dbline 402
0354 A394 inc R10
0356 L73:
0356 .dbline 402
0356 8A2D mov R24,R10
0358 8530 cpi R24,5
035A 88F3 brlo L70
035C .dbline 406
035C 25E0 ldi R18,5
035E 30E0 ldi R19,0
0360 8601 movw R16,R12
0362 0E940000 xcall div16u
0366 6801 movw R12,R16
0368 .dbline 407
0368 400F add R20,R16
036A 511F adc R21,R17
036C .dbline 408
036C L60:
036C .dbline 388
036C 6395 inc R22
036E L62:
036E .dbline 388
036E 6A30 cpi R22,10
0370 08F4 brsh X0
0372 C7CF xjmp L59
0374 X0:
0374 .dbline 409
0374 ; {
0374 ; j=j+s[k+2];
0374 ; }
0374 ; j=j/5;
0374 ; g=g+j;
0374 ; }
0374 ; g=g/10;
0374 2AE0 ldi R18,10
0376 30E0 ldi R19,0
0378 8A01 movw R16,R20
037A 0E940000 xcall div16u
037E A801 movw R20,R16
0380 .dbline 410
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -