⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.lis

📁 基于AVR的模数转换程序。是开发单片机必备的基本技巧。 本程序出自高手之手
💻 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 + -