📄 ad.lis
字号:
.module ad.c
.area code(ram, con, rel)
.area lit(rom, con, rel)
0000 _table::
0000 3F00 .word 63
0002 0600 .word 6
0004 5B00 .word 91
0006 4F00 .word 79
0008 6600 .word 102
000A 6D00 .word 109
000C 7D00 .word 125
000E 0700 .word 7
0010 7F00 .word 127
0012 6F00 .word 111
0014 7700 .word 119
0016 7C00 .word 124
0018 3900 .word 57
001A 5E00 .word 94
001C 7900 .word 121
001E 7100 .word 113
0020 .dbfile I:\AVR视频教程\视频教程\lesson8\ad/xianshi.c
0020 .dbsym e table _table A[32:16]I
.area text(rom, con, rel)
0000 .dbfile I:\AVR视频教程\视频教程\lesson8\ad/xianshi.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 00D0 rcall push_gset2
0002 .dbline -1
0002 .dbline 6
0002 ; #include <iom16v.h>
0002 ; #include <macros.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ; #include "xianshi.c"
0002 ; uint mega16_ad()
0002 .dbline 8
0002 ; {
0002 ; uint addata;
0002 4427 clr R20
0004 5527 clr R21
0006 0BC0 rjmp L5
0008 L2:
0008 .dbline 9
0008 ; DDRA&=~BIT(PA0);
0008 .dbline 10
0008 6627 clr R22
000A 7727 clr R23
000C 02C0 rjmp L9
000E L6:
000E .dbline 10
000E L7:
000E .dbline 10
000E 6F5F subi R22,255 ; offset = 1
0010 7F4F sbci R23,255
0012 L9:
0012 .dbline 10
0012 6537 cpi R22,117
0014 E4E0 ldi R30,4
0016 7E07 cpc R23,R30
0018 D0F3 brlo L6
001A .dbline 11
001A L3:
001A .dbline 8
001A 4F5F subi R20,255 ; offset = 1
001C 5F4F sbci R21,255
001E L5:
001E .dbline 8
001E 4017 cp R20,R16
0020 5107 cpc R21,R17
0022 90F3 brlo L2
0024 .dbline -2
0024 .dbline 12
0024 ; PORTA&=~BIT(PA0);
0024 ; ADMUX=0;
0024 ; ADCSR=0X80;
0024 L1:
0024 00D0 rcall pop_gset2
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbsym r i 20 i
0028 .dbsym r j 22 i
0028 .dbsym r ms 16 i
0028 .dbend
0028 .dbfunc e show _show fV
0028 ; k -> R20
0028 ; j -> R22
.even
0028 _show::
0028 00D0 rcall push_gset2
002A 422F mov R20,R18
002C 602F mov R22,R16
002E .dbline -1
002E .dbline 14
002E ; ADCSR|=BIT(ADSC);
002E ; while(!(ADCSR&(BIT(ADIF))));
002E .dbline 15
002E ; addata=ADCL;
002E D39A sbi 0x1a,3
0030 .dbline 16
0030 ; addata=addata+ADCH*256;
0030 D49A sbi 0x1a,4
0032 .dbline 17
0032 ; return addata;
0032 8FEF ldi R24,255
0034 87BB out 0x17,R24
0036 .dbline 18
0036 ; }
0036 DB9A sbi 0x1b,3
0038 .dbline 19
0038 ;
0038 80E0 ldi R24,<_table
003A 90E0 ldi R25,>_table
003C 062F mov R16,R22
003E 1127 clr R17
0040 000F lsl R16
0042 111F rol R17
0044 080F add R16,R24
0046 191F adc R17,R25
0048 00D0 rcall lpm16
004A 08BB out 0x18,R16
004C .dbline 20
004C ; void main()
004C DB98 cbi 0x1b,3
004E .dbline 22
004E ; {
004E ; uint ada,i,ad[4];
004E 8FEF ldi R24,255
0050 88BB out 0x18,R24
0052 .dbline 23
0052 ; while(1)
0052 01E0 ldi R16,1
0054 142F mov R17,R20
0056 00D0 rcall lsl8
0058 202E mov R2,R16
005A 2094 com R2
005C 38B2 in R3,0x18
005E 3220 and R3,R2
0060 38BA out 0x18,R3
0062 .dbline 24
0062 ; {
0062 DC9A sbi 0x1b,4
0064 .dbline 25
0064 ; ada=mega16_ad();//999 0999
0064 DC98 cbi 0x1b,4
0066 .dbline 26
0066 ; for(i=0;i<4;i++)
0066 01E0 ldi R16,1
0068 10E0 ldi R17,0
006A CADF rcall _delay
006C .dbline -2
006C .dbline 27
006C ; {
006C L10:
006C 00D0 rcall pop_gset2
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbsym r k 20 c
0070 .dbsym r j 22 c
0070 .dbend
0070 .dbfile I:\AVR视频教程\视频教程\lesson8\ad\ad.c
0070 .dbfunc e mega16_ad _mega16_ad fi
0070 ; addata -> R16,R17
.even
0070 _mega16_ad::
0070 .dbline -1
0070 .dbline 7
0070 .dbline 9
0070 D098 cbi 0x1a,0
0072 .dbline 10
0072 D898 cbi 0x1b,0
0074 .dbline 11
0074 2224 clr R2
0076 27B8 out 0x7,R2
0078 .dbline 12
0078 80E8 ldi R24,128
007A 86B9 out 0x6,R24
007C .dbline 13
007C 369A sbi 0x6,6
007E L12:
007E .dbline 14
007E L13:
007E .dbline 14
007E 349B sbis 0x6,4
0080 FECF rjmp L12
0082 .dbline 15
0082 04B1 in R16,0x4
0084 1127 clr R17
0086 .dbline 16
0086 25B0 in R2,0x5
0088 3324 clr R3
008A 322C mov R3,R2
008C 2224 clr R2
008E 020D add R16,R2
0090 131D adc R17,R3
0092 .dbline 17
0092 .dbline -2
0092 L11:
0092 .dbline 0 ; func end
0092 0895 ret
0094 .dbsym r addata 16 i
0094 .dbend
0094 .dbfunc e main _main fV
0094 ; ad -> y+0
0094 ; ada -> R20,R21
0094 ; i -> R22,R23
.even
0094 _main::
0094 2897 sbiw R28,8
0096 .dbline -1
0096 .dbline 21
0096 3FC0 rjmp L17
0098 L16:
0098 .dbline 24
0098 .dbline 25
0098 EBDF rcall _mega16_ad
009A 402F mov R20,R16
009C 512F mov R21,R17
009E .dbline 26
009E 6627 clr R22
00A0 7727 clr R23
00A2 1AC0 rjmp L22
00A4 L19:
00A4 .dbline 27
00A4 .dbline 28
00A4 E3E0 ldi R30,3
00A6 F0E0 ldi R31,0
00A8 E61B sub R30,R22
00AA F70B sbc R31,R23
00AC EE0F lsl R30
00AE FF1F rol R31
00B0 8C2F mov R24,R28
00B2 9D2F mov R25,R29
00B4 E80F add R30,R24
00B6 F91F adc R31,R25
00B8 2AE0 ldi R18,10
00BA 30E0 ldi R19,0
00BC 042F mov R16,R20
00BE 152F mov R17,R21
00C0 00D0 rcall mod16u
00C2 0083 std z+0,R16
00C4 1183 std z+1,R17
00C6 .dbline 29
00C6 2AE0 ldi R18,10
00C8 30E0 ldi R19,0
00CA 042F mov R16,R20
00CC 152F mov R17,R21
00CE 00D0 rcall div16u
00D0 402F mov R20,R16
00D2 512F mov R21,R17
00D4 .dbline 30
00D4 L20:
00D4 .dbline 26
00D4 6F5F subi R22,255 ; offset = 1
00D6 7F4F sbci R23,255
00D8 L22:
00D8 .dbline 26
00D8 6430 cpi R22,4
00DA E0E0 ldi R30,0
00DC 7E07 cpc R23,R30
00DE 10F3 brlo L19
00E0 .dbline 32
00E0 ; ad[3-i]=ada%10;
00E0 ; ada=ada/10;
00E0 ; }
00E0 ;
00E0 ; for(i=0;i<4;i++)
00E0 6627 clr R22
00E2 7727 clr R23
00E4 14C0 rjmp L26
00E6 L23:
00E6 .dbline 33
00E6 .dbline 34
00E6 262F mov R18,R22
00E8 8C2F mov R24,R28
00EA 9D2F mov R25,R29
00EC E62F mov R30,R22
00EE F72F mov R31,R23
00F0 EE0F lsl R30
00F2 FF1F rol R31
00F4 E80F add R30,R24
00F6 F91F adc R31,R25
00F8 0081 ldd R16,z+0
00FA 96DF rcall _show
00FC .dbline 35
00FC 02E0 ldi R16,2
00FE 10E0 ldi R17,0
0100 7FDF rcall _delay
0102 .dbline 35
0102 D39A sbi 0x1a,3
0104 .dbline 36
0104 D49A sbi 0x1a,4
0106 .dbline 37
0106 8FEF ldi R24,255
0108 87BB out 0x17,R24
010A .dbline 38
010A L24:
010A .dbline 32
010A 6F5F subi R22,255 ; offset = 1
010C 7F4F sbci R23,255
010E L26:
010E .dbline 32
010E 6430 cpi R22,4
0110 E0E0 ldi R30,0
0112 7E07 cpc R23,R30
0114 40F3 brlo L23
0116 .dbline 39
0116 L17:
0116 .dbline 23
0116 C0CF rjmp L16
0118 X0:
0118 .dbline -2
0118 .dbline 40
0118 ; {
0118 ; show(ad[i],i);
0118 ; delay(2); DDRA|=BIT(3);
0118 ; DDRA|=BIT(4);
0118 ; DDRB=0XFF;
0118 ; }
0118 ; }
0118 ; }
0118 L15:
0118 2896 adiw R28,8
011A .dbline 0 ; func end
011A 0895 ret
011C .dbsym l ad 0 A[8:4]i
011C .dbsym r ada 20 i
011C .dbsym r i 22 i
011C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -