📄 ad.lis
字号:
.module AD.c
.area text(rom, con, rel)
0000 .dbfile AD.c
.area data(ram, con, rel)
0000 .dbfile AD.c
0000 _table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .dbfile AD.c
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .dbfile AD.c
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .dbfile AD.c
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .dbfile AD.c
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile AD.c
000A .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
000A .dbsym e table _table A[10:10]c
000A _LED_W::
000A .blkb 2
.area idata
000A 0001 .byte 0,1
.area data(ram, con, rel)
000C .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
000C .blkb 2
.area idata
000C 0203 .byte 2,3
.area data(ram, con, rel)
000E .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
000E .blkb 2
.area idata
000E 0405 .byte 4,5
.area data(ram, con, rel)
0010 .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
0010 .blkb 2
.area idata
0010 0607 .byte 6,7
.area data(ram, con, rel)
0012 .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
0012 .dbsym e LED_W _LED_W A[8:8]c
.area text(rom, con, rel)
0000 .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_xgsetF000
0004 .dbline -1
0004 .dbline 10
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ;
0004 ; uchar const table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0004 ;
0004 ; uchar const LED_W[8] = {0,1,2,3,4,5,6,7};
0004 ; void delay(uint ms)
0004 ; {
0004 .dbline 12
0004 ; uint i,j;
0004 ; for(i=0;i<ms;i++)
0004 4427 clr R20
0006 5527 clr R21
0008 0BC0 xjmp L5
000A L2:
000A .dbline 13
000A ; {
000A .dbline 14
000A ; for(j=0;j<1141;j++);
000A 6627 clr R22
000C 7727 clr R23
000E 02C0 xjmp L9
0010 L6:
0010 .dbline 14
0010 L7:
0010 .dbline 14
0010 6F5F subi R22,255 ; offset = 1
0012 7F4F sbci R23,255
0014 L9:
0014 .dbline 14
0014 6537 cpi R22,117
0016 E4E0 ldi R30,4
0018 7E07 cpc R23,R30
001A D0F3 brlo L6
001C X0:
001C .dbline 15
001C ; }
001C L3:
001C .dbline 12
001C 4F5F subi R20,255 ; offset = 1
001E 5F4F sbci R21,255
0020 L5:
0020 .dbline 12
0020 4017 cp R20,R16
0022 5107 cpc R21,R17
0024 90F3 brlo L2
0026 X1:
0026 .dbline -2
0026 L1:
0026 .dbline 0 ; func end
0026 0C940000 xjmp pop_xgsetF000
002A .dbsym r i 20 i
002A .dbsym r j 22 i
002A .dbsym r ms 16 i
002A .dbend
002A .dbfunc e show _show fV
002A ; k -> R10
002A ; j -> R12
.even
002A _show::
002A AA92 st -y,R10
002C CA92 st -y,R12
002E A22E mov R10,R18
0030 C02E mov R12,R16
0032 .dbline -1
0032 .dbline 18
0032 ; }
0032 ; void show(uchar j,uchar k)
0032 ; {
0032 .dbline 20
0032 ;
0032 ; DDRA=0xff;
0032 8FEF ldi R24,255
0034 8ABB out 0x1a,R24
0036 .dbline 21
0036 ; PORTA = table[j]; // i 值的 个位数
0036 80E0 ldi R24,<_table
0038 90E0 ldi R25,>_table
003A EC2D mov R30,R12
003C FF27 clr R31
003E E80F add R30,R24
0040 F91F adc R31,R25
0042 2080 ldd R2,z+0
0044 2BBA out 0x1b,R2
0046 .dbline 22
0046 ; PORTC = LED_W[k]; //点亮第一位数码管
0046 80E0 ldi R24,<_LED_W
0048 90E0 ldi R25,>_LED_W
004A EA2D mov R30,R10
004C FF27 clr R31
004E E80F add R30,R24
0050 F91F adc R31,R25
0052 2080 ldd R2,z+0
0054 25BA out 0x15,R2
0056 .dbline 24
0056 ;
0056 ; delay(2);
0056 02E0 ldi R16,2
0058 10E0 ldi R17,0
005A D2DF xcall _delay
005C .dbline -2
005C L10:
005C .dbline 0 ; func end
005C C990 ld R12,y+
005E A990 ld R10,y+
0060 0895 ret
0062 .dbsym r k 10 c
0062 .dbsym r j 12 c
0062 .dbend
0062 .dbfunc e mega16_ad _mega16_ad fi
0062 ; addata -> R10,R11
.even
0062 _mega16_ad::
0062 AA92 st -y,R10
0064 BA92 st -y,R11
0066 .dbline -1
0066 .dbline 32
0066 ;
0066 ;
0066 ;
0066 ; }
0066 ;
0066 ;
0066 ; uint mega16_ad()
0066 ; {
0066 .dbline 34
0066 ; uint addata;
0066 ; DDRA&=~BIT(PA0);
0066 D098 cbi 0x1a,0
0068 .dbline 35
0068 ; PORTA&=~BIT(PA0);
0068 D898 cbi 0x1b,0
006A .dbline 36
006A ; ADMUX=0x40;
006A 80E4 ldi R24,64
006C 87B9 out 0x7,R24
006E .dbline 37
006E ; ADCSR=0X80;
006E 80E8 ldi R24,128
0070 86B9 out 0x6,R24
0072 .dbline 38
0072 ; ADCSR|=BIT(ADSC);
0072 369A sbi 0x6,6
0074 L12:
0074 .dbline 39
0074 ; while(!(ADCSR&(BIT(ADIF))));
0074 L13:
0074 .dbline 39
0074 349B sbis 0x6,4
0076 FECF rjmp L12
0078 X2:
0078 .dbline 40
0078 ; addata=ADCL;
0078 A4B0 in R10,0x4
007A BB24 clr R11
007C .dbline 41
007C ; addata=addata+ADCH*256;
007C 25B1 in R18,0x5
007E 3327 clr R19
0080 00E0 ldi R16,256
0082 11E0 ldi R17,1
0084 0E940000 xcall empy16s
0088 A00E add R10,R16
008A B11E adc R11,R17
008C .dbline 42
008C ; return addata;
008C 8501 movw R16,R10
008E .dbline -2
008E L11:
008E .dbline 0 ; func end
008E B990 ld R11,y+
0090 A990 ld R10,y+
0092 0895 ret
0094 .dbsym r addata 10 i
0094 .dbend
.area data(ram, con, rel)
0012 .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
0012 L16:
0012 .blkb 2
.area idata
0012 0000 .word 0
.area data(ram, con, rel)
0014 .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
0014 .blkb 2
.area idata
0014 0000 .word 0
.area data(ram, con, rel)
0016 .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
0016 .blkb 2
.area idata
0016 0000 .word 0
.area data(ram, con, rel)
0018 .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
0018 .blkb 2
.area idata
0018 0000 .word 0
.area data(ram, con, rel)
001A .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
.area text(rom, con, rel)
0094 .dbfile F:\51&av配套光盘\51&avr配套程序\avr程序\15AD转换\AD.c
0094 .dbfunc e main _main fV
0094 ; i -> <dead>
0094 ; a -> R20,R21
0094 ; ad -> y+0
0094 ; ada -> R10,R11
.even
0094 _main::
0094 2897 sbiw R28,8
0096 .dbline -1
0096 .dbline 46
0096 ; }
0096 ;
0096 ; void main()
0096 ; {
0096 .dbline 47
0096 ; uint ada,i,ad[]={0,0,0,0},a=5000;
0096 80E0 ldi R24,<L16
0098 90E0 ldi R25,>L16
009A FE01 movw R30,R28
009C 08E0 ldi R16,8
009E 10E0 ldi R17,0
00A0 FA93 st -y,R31
00A2 EA93 st -y,R30
00A4 9A93 st -y,R25
00A6 8A93 st -y,R24
00A8 0E940000 xcall asgnblk
00AC .dbline 47
00AC 48E8 ldi R20,5000
00AE 53E1 ldi R21,19
00B0 .dbline 49
00B0 ;
00B0 ; DDRC=0XFF;
00B0 8FEF ldi R24,255
00B2 84BB out 0x14,R24
00B4 .dbline 50
00B4 ; PORTC=0X00;
00B4 2224 clr R2
00B6 25BA out 0x15,R2
00B8 0CC0 xjmp L18
00BA L17:
00BA .dbline 52
00BA ; while(1)
00BA ; {
00BA .dbline 53
00BA ; ada=mega16_ad();//999 0999
00BA D3DF xcall _mega16_ad
00BC 5801 movw R10,R16
00BE .dbline 55
00BE ;
00BE ; if(ada>600)
00BE 88E5 ldi R24,600
00C0 92E0 ldi R25,2
00C2 8017 cp R24,R16
00C4 9107 cpc R25,R17
00C6 18F4 brsh L20
00C8 X3:
00C8 .dbline 56
00C8 ; {
00C8 .dbline 57
00C8 ; DDRA|=BIT(7);
00C8 D79A sbi 0x1a,7
00CA .dbline 58
00CA ; PORTA&=~BIT(7);
00CA DF98 cbi 0x1b,7
00CC .dbline 59
00CC ; }
00CC 02C0 xjmp L21
00CE L20:
00CE .dbline 61
00CE ; else
00CE ; {
00CE .dbline 62
00CE ; DDRA|=BIT(7);
00CE D79A sbi 0x1a,7
00D0 .dbline 63
00D0 ; PORTA|=BIT(7);
00D0 DF9A sbi 0x1b,7
00D2 .dbline 64
00D2 ; }
00D2 L21:
00D2 .dbline 80
00D2 ; /* for(i=0;i<4;i++)
00D2 ; {
00D2 ; ad[3-i]=ada%10;
00D2 ; ada=ada/10;
00D2 ; }
00D2 ;
00D2 ;
00D2 ;
00D2 ; for(i=0;i<4;i++)
00D2 ; {
00D2 ; show(ad[i],i);
00D2 ;
00D2 ; }*/
00D2 ;
00D2 ;
00D2 ; }
00D2 L18:
00D2 .dbline 51
00D2 F3CF xjmp L17
00D4 X4:
00D4 .dbline -2
00D4 L15:
00D4 .dbline 0 ; func end
00D4 2896 adiw R28,8
00D6 0895 ret
00D8 .dbsym l i 1 i
00D8 .dbsym r a 20 i
00D8 .dbsym l ad 0 A[8:4]i
00D8 .dbsym r ada 10 i
00D8 .dbend
00D8 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -