📄 test.lis
字号:
.module test.c
.area text(rom, con, rel)
0000 .dbfile E:\工作\数字功放\程序\test.c
0000 .dbfunc e adc_init _adc_init fV
.even
0000 _adc_init::
0000 .dbline -1
0000 .dbline 9
0000 ; #include <iom88v.h>
0000 ; #include <macros.h>
0000 ; #include <math.h>
0000 ;
0000 ;
0000 ;
0000 ; //******************************************************/
0000 ; void adc_init(void)
0000 ; {
0000 .dbline 10
0000 ; ADCSRA = 0x00;
0000 2224 clr R2
0002 20927A00 sts 122,R2
0006 .dbline 11
0006 ; ACSR = (1<<ACD);
0006 80E8 ldi R24,128
0008 80BF out 0x30,R24
000A .dbline 12
000A ; ADCSRA = (1<<ADEN)|(1<<ADPS2);
000A 84E8 ldi R24,132
000C 80937A00 sts 122,R24
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
0012 .dbfunc e timer1_init _timer1_init fV
.even
0012 _timer1_init::
0012 .dbline -1
0012 .dbline 16
0012 ; }
0012 ; //****************************************************/
0012 ; void timer1_init(void)
0012 ; {
0012 .dbline 19
0012 ;
0012 ;
0012 ; TCCR1B = 0x00;
0012 2224 clr R2
0014 20928100 sts 129,R2
0018 .dbline 21
0018 ;
0018 ; TCNT1H = 0xFF;
0018 8FEF ldi R24,255
001A 80938500 sts 133,R24
001E .dbline 22
001E ; TCNT1L = 0x38;
001E 88E3 ldi R24,56
0020 80938400 sts 132,R24
0024 .dbline 24
0024 ;
0024 ; OCR1AH = 0x00;
0024 20928900 sts 137,R2
0028 .dbline 25
0028 ; OCR1AL = 0x00;
0028 20928800 sts 136,R2
002C .dbline 27
002C ;
002C ; OCR1BH = 0x00;
002C 20928B00 sts 139,R2
0030 .dbline 28
0030 ; OCR1BL = 0x00;
0030 20928A00 sts 138,R2
0034 .dbline 30
0034 ;
0034 ; ICR1H = 0x01;
0034 81E0 ldi R24,1
0036 80938700 sts 135,R24
003A .dbline 31
003A ; ICR1L = 0x8F;
003A 8FE8 ldi R24,143
003C 80938600 sts 134,R24
0040 .dbline 33
0040 ;
0040 ; TCCR1A = (1<<COM1A1)|(1<<COM1B0)|(1<<COM1B1)|(1<<WGM11);
0040 82EB ldi R24,178
0042 80938000 sts 128,R24
0046 .dbline 34
0046 ; TCCR1B = (1<<WGM13)|(1<<WGM12)|(1<<CS10);
0046 89E1 ldi R24,25
0048 80938100 sts 129,R24
004C .dbline 35
004C ; TIMSK1 = 0x20;
004C 80E2 ldi R24,32
004E 80936F00 sts 111,R24
0052 .dbline -2
0052 L2:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbend
.area vector(rom, abs)
.org 20
0014 2AC0 rjmp _timer1_capt_isr
.area text(rom, con, rel)
0054 .dbfile E:\工作\数字功放\程序\test.c
0054 .dbfunc e timer1_capt_isr _timer1_capt_isr fV
.even
0054 _timer1_capt_isr::
0054 8A93 st -y,R24
0056 9A93 st -y,R25
0058 8FB7 in R24,0x3f
005A 8A93 st -y,R24
005C .dbline -1
005C .dbline 40
005C ; }
005C ; //*************************************************/
005C ; #pragma interrupt_handler timer1_capt_isr:11
005C ; void timer1_capt_isr(void)
005C ; {
005C .dbline 41
005C ; ADMUX = 0x43;
005C 83E4 ldi R24,67
005E 80937C00 sts 124,R24
0062 .dbline 42
0062 ; ADCSRA |= (1<<ADSC);
0062 80917A00 lds R24,122
0066 8064 ori R24,64
0068 80937A00 sts 122,R24
006C .dbline 44
006C ;
006C ; OCR1A = ADC & 0x03FF;
006C 80917800 lds R24,120
0070 90917900 lds R25,120+1
0074 9370 andi R25,3
0076 90938900 sts 136+1,R25
007A 80938800 sts 136,R24
007E .dbline 45
007E ; OCR1B = ADC & 0x03FF;
007E 80917800 lds R24,120
0082 90917900 lds R25,120+1
0086 9370 andi R25,3
0088 90938B00 sts 138+1,R25
008C 80938A00 sts 138,R24
0090 .dbline -2
0090 L3:
0090 8991 ld R24,y+
0092 8FBF out 0x3f,R24
0094 9991 ld R25,y+
0096 8991 ld R24,y+
0098 .dbline 0 ; func end
0098 1895 reti
009A .dbend
.area vector(rom, abs)
.org 42
002A 4DC0 rjmp _adc_isr
.area text(rom, con, rel)
009A .dbfile E:\工作\数字功放\程序\test.c
009A .dbfunc e adc_isr _adc_isr fV
.even
009A _adc_isr::
009A .dbline -1
009A .dbline 50
009A ; }
009A ; //*******************************************************************
009A ; #pragma interrupt_handler adc_isr:22
009A ; void adc_isr(void)
009A ; {
009A .dbline -2
009A L4:
009A .dbline 0 ; func end
009A 1895 reti
009C .dbend
009C .dbfunc e delay_1us _delay_1us fV
.even
009C _delay_1us::
009C .dbline -1
009C .dbline 57
009C ;
009C ; }
009C ; /*********************************************************************
009C ; 延时
009C ; *********************************************************************/
009C ; void delay_1us(void)
009C ; {
009C .dbline 58
009C ; asm("nop");
009C 0000 nop
009E .dbline -2
009E L5:
009E .dbline 0 ; func end
009E 0895 ret
00A0 .dbend
00A0 .dbfunc e delay_nus _delay_nus fV
00A0 ; i -> R20,R21
00A0 ; n -> R22,R23
.even
00A0 _delay_nus::
00A0 00D0 rcall push_gset2
00A2 B801 movw R22,R16
00A4 .dbline -1
00A4 .dbline 61
00A4 ; }
00A4 ; void delay_nus(unsigned int n)
00A4 ; {
00A4 .dbline 62
00A4 ; unsigned int i=0;
00A4 4427 clr R20
00A6 5527 clr R21
00A8 .dbline 63
00A8 03C0 rjmp L10
00AA L7:
00AA .dbline 63
00AA F8DF rcall _delay_1us
00AC L8:
00AC .dbline 63
00AC 4F5F subi R20,255 ; offset = 1
00AE 5F4F sbci R21,255
00B0 L10:
00B0 .dbline 63
00B0 ; for (i=0;i<n;i++) delay_1us();
00B0 4617 cp R20,R22
00B2 5707 cpc R21,R23
00B4 D0F3 brlo L7
00B6 .dbline -2
00B6 L6:
00B6 00D0 rcall pop_gset2
00B8 .dbline 0 ; func end
00B8 0895 ret
00BA .dbsym r i 20 i
00BA .dbsym r n 22 i
00BA .dbend
00BA .dbfunc e delay_1ms _delay_1ms fV
00BA ; i -> R16,R17
.even
00BA _delay_1ms::
00BA .dbline -1
00BA .dbline 66
00BA ; }
00BA ; void delay_1ms(void)
00BA ; {
00BA .dbline 68
00BA 0027 clr R16
00BC 1127 clr R17
00BE 02C0 rjmp L15
00C0 L12:
00C0 .dbline 68
00C0 L13:
00C0 .dbline 68
00C0 0F5F subi R16,255 ; offset = 1
00C2 1F4F sbci R17,255
00C4 L15:
00C4 .dbline 68
00C4 ; unsigned int i;
00C4 ; for (i=0;i<1140;i++);
00C4 0437 cpi R16,116
00C6 E4E0 ldi R30,4
00C8 1E07 cpc R17,R30
00CA D0F3 brlo L12
00CC .dbline -2
00CC L11:
00CC .dbline 0 ; func end
00CC 0895 ret
00CE .dbsym r i 16 i
00CE .dbend
00CE .dbfunc e delay_nms _delay_nms fV
00CE ; i -> R20,R21
00CE ; n -> R22,R23
.even
00CE _delay_nms::
00CE 00D0 rcall push_gset2
00D0 B801 movw R22,R16
00D2 .dbline -1
00D2 .dbline 71
00D2 ; }
00D2 ; void delay_nms(unsigned int n)
00D2 ; {
00D2 .dbline 72
00D2 ; unsigned int i=0;
00D2 4427 clr R20
00D4 5527 clr R21
00D6 .dbline 73
00D6 03C0 rjmp L20
00D8 L17:
00D8 .dbline 73
00D8 F0DF rcall _delay_1ms
00DA L18:
00DA .dbline 73
00DA 4F5F subi R20,255 ; offset = 1
00DC 5F4F sbci R21,255
00DE L20:
00DE .dbline 73
00DE ; for (i=0;i<n;i++) delay_1ms();
00DE 4617 cp R20,R22
00E0 5707 cpc R21,R23
00E2 D0F3 brlo L17
00E4 .dbline -2
00E4 L16:
00E4 00D0 rcall pop_gset2
00E6 .dbline 0 ; func end
00E6 0895 ret
00E8 .dbsym r i 20 i
00E8 .dbsym r n 22 i
00E8 .dbend
00E8 .dbfunc e main _main fV
.even
00E8 _main::
00E8 .dbline -1
00E8 .dbline 77
00E8 ; }
00E8 ; //******************************************************************
00E8 ; void main(void)
00E8 ; {
00E8 .dbline 78
00E8 ; WDR();
00E8 A895 wdr
00EA .dbline 79
00EA ; WDTCSR = 0x1F;
00EA 8FE1 ldi R24,31
00EC 80936000 sts 96,R24
00F0 .dbline 80
00F0 ; WDTCSR = 0x0F;
00F0 8FE0 ldi R24,15
00F2 80936000 sts 96,R24
00F6 .dbline 81
00F6 ; WDR();
00F6 A895 wdr
00F8 .dbline 83
00F8 ;
00F8 ; DDRB |= (1<<PB1)|(1<<PB2);
00F8 84B1 in R24,0x4
00FA 8660 ori R24,6
00FC 84B9 out 0x4,R24
00FE .dbline 85
00FE ;
00FE ; CLI();
00FE F894 cli
0100 .dbline 86
0100 ; timer1_init();
0100 88DF rcall _timer1_init
0102 .dbline 87
0102 ; adc_init();
0102 7EDF rcall _adc_init
0104 .dbline 88
0104 ; SEI();
0104 7894 sei
0106 01C0 rjmp L23
0108 L22:
0108 .dbline 91
0108 .dbline 92
0108 A895 wdr
010A .dbline 93
010A L23:
010A .dbline 90
010A FECF rjmp L22
010C X0:
010C .dbline -2
010C L21:
010C .dbline 0 ; func end
010C 0895 ret
010E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -