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

📄 m16_ad.lis

📁 Maga16
💻 LIS
字号:
                        .module M16_AD.c
                        .area data(ram, con, rel)
 0000           _Table::
 0000                   .blkb 2
                        .area idata
 0000 3F06              .byte 63,6
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 5B4F              .byte 91,'O
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 666D              .byte 'f,'m
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 7D07              .byte 125,7
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 7F6F              .byte 127,'o
                        .area data(ram, con, rel)
 000A                   .dbfile F:\myavr\temp\M16_AD\M16_AD.c
 000A                   .dbsym e Table _Table A[10:10]c
 000A           _Data::
 000A                   .blkb 2
                        .area idata
 000A 0000              .byte 0,0
                        .area data(ram, con, rel)
 000C                   .dbfile F:\myavr\temp\M16_AD\M16_AD.c
 000C                   .blkb 2
                        .area idata
 000C 0000              .byte 0,0
                        .area data(ram, con, rel)
 000E                   .dbfile F:\myavr\temp\M16_AD\M16_AD.c
 000E                   .dbsym e Data _Data A[4:4]c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\myavr\temp\M16_AD\M16_AD.c
 0000                   .dbfunc e DelayMs _DelayMs fV
 0000           ;              j -> R20
 0000           ;              i -> R16,R17
                        .even
 0000           _DelayMs::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 10
 0004           ; #include<iom16v.h>
 0004           ; #define uchar unsigned char
 0004           ; #define uint  unsigned int
 0004           ; 
 0004           ; 
 0004           ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
 0004           ; uchar Data[4]={0,0,0,0};
 0004           ; 
 0004           ; void DelayMs(uint i)  //0.25ms
 0004           ; {uchar j;
 0004                   .dbline 11
 0004           ;  for(;i!=0;i--)
 0004 07C0              xjmp L5
 0006           L2:
 0006                   .dbline 12
 0006                   .dbline 12
 0006 4AEF              ldi R20,250
 0008 01C0              xjmp L9
 000A           L6:
 000A                   .dbline 12
 000A                   .dbline 12
 000A                   .dbline 12
 000A           L7:
 000A                   .dbline 12
 000A 4A95              dec R20
 000C           L9:
 000C                   .dbline 12
 000C 4423              tst R20
 000E E9F7              brne L6
 0010                   .dbline 12
 0010           L3:
 0010                   .dbline 11
 0010 0150              subi R16,1
 0012 1040              sbci R17,0
 0014           L5:
 0014                   .dbline 11
 0014 0030              cpi R16,0
 0016 0107              cpc R16,R17
 0018 B1F7              brne L2
 001A           X0:
 001A                   .dbline -2
 001A                   .dbline 13
 001A           ;   {for(j=250;j!=0;j--) {;}}
 001A           ; }
 001A           L1:
 001A 0E940000          xcall pop_gset1
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r j 20 c
 0020                   .dbsym r i 16 i
 0020                   .dbend
 0020                   .dbfunc e Display _Display fV
 0020           ;            sel -> R20
 0020           ;              i -> R22
 0020           ;              p -> R10,R11
                        .even
 0020           _Display::
 0020 0E940000          xcall push_gset3
 0024 5801              movw R10,R16
 0026                   .dbline -1
 0026                   .dbline 16
 0026           ; 
 0026           ; void Display(uchar *p) //间隔5ms显示
 0026           ; {uchar i,sel=0x01;
 0026                   .dbline 16
 0026 41E0              ldi R20,1
 0028                   .dbline 17
 0028           ;  for(i=0;i<4;i++)
 0028 6627              clr R22
 002A 17C0              xjmp L14
 002C           L11:
 002C                   .dbline 18
 002C                   .dbline 18
 002C 42BB              out 0x12,R20
 002E                   .dbline 19
 002E E62F              mov R30,R22
 0030 FF27              clr R31
 0032 EA0D              add R30,R10
 0034 FB1D              adc R31,R11
 0036 E081              ldd R30,z+0
 0038 FF27              clr R31
 003A 80E0              ldi R24,<_Table
 003C 90E0              ldi R25,>_Table
 003E E80F              add R30,R24
 0040 F91F              adc R31,R25
 0042 2080              ldd R2,z+0
 0044 3324              clr R3
 0046 8FEF              ldi R24,255
 0048 90E0              ldi R25,0
 004A 8219              sub R24,R2
 004C 9309              sbc R25,R3
 004E 88BB              out 0x18,R24
 0050                   .dbline 20
 0050 0AE0              ldi R16,10
 0052 10E0              ldi R17,0
 0054 D5DF              xcall _DelayMs
 0056                   .dbline 21
 0056 440F              lsl R20
 0058                   .dbline 22
 0058           L12:
 0058                   .dbline 17
 0058 6395              inc R22
 005A           L14:
 005A                   .dbline 17
 005A 6430              cpi R22,4
 005C 38F3              brlo L11
 005E                   .dbline -2
 005E                   .dbline 23
 005E           ;   {PORTD=sel;
 005E           ;    PORTB=0xff-Table[p[i]];
 005E           ;    DelayMs(10);
 005E           ;    sel=sel<<1;
 005E           ;   }
 005E           ; }
 005E           L10:
 005E 0E940000          xcall pop_gset3
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbsym r sel 20 c
 0064                   .dbsym r i 22 c
 0064                   .dbsym r p 10 pc
 0064                   .dbend
 0064                   .dbfunc e ADC_Convert _ADC_Convert fi
 0064           ;          temp1 -> R18,R19
 0064           ;          temp2 -> R16,R17
                        .even
 0064           _ADC_Convert::
 0064                   .dbline -1
 0064                   .dbline 26
 0064           ; 
 0064           ; uint ADC_Convert(void)
 0064           ; {uint temp1,temp2;
 0064                   .dbline 27
 0064           ;  temp1=(uint)ADCL;
 0064                   .dbline 28
 0064           ;  temp2=(uint)ADCH;
 0064                   .dbline 29
 0064           ;  temp2=(temp2<<8)+temp1;
 0064                   .dbline 30
 0064           ;  return(temp2);
 0064 24B1              in R18,0x4
 0066 3327              clr R19
 0068 05B1              in R16,0x5
 006A 1127              clr R17
 006C 1801              movw R2,R16
 006E 322C              mov R3,R2
 0070 2224              clr R2
 0072 220E              add R2,R18
 0074 331E              adc R3,R19
 0076 8101              movw R16,R2
 0078                   .dbline -2
 0078           L15:
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbsym r temp1 18 i
 007A                   .dbsym r temp2 16 i
 007A                   .dbend
 007A                   .dbfunc e Process _Process fV
 007A           ;              p -> R20,R21
 007A           ;              i -> R22,R23
                        .even
 007A           _Process::
 007A 0E940000          xcall push_gset2
 007E A901              movw R20,R18
 0080 B801              movw R22,R16
 0082                   .dbline -1
 0082                   .dbline 34
 0082           ; }
 0082           ; 
 0082           ; void Process(uint i,uchar *p)
 0082           ; {p[0]=i/1000;
 0082                   .dbline 34
 0082 28EE              ldi R18,1000
 0084 33E0              ldi R19,3
 0086 8B01              movw R16,R22
 0088 0E940000          xcall div16u
 008C FA01              movw R30,R20
 008E 0083              std z+0,R16
 0090                   .dbline 35
 0090           ;  i=i%1000;
 0090                   .dbline 36
 0090           ;  p[1]=i/100;
 0090 28EE              ldi R18,1000
 0092 33E0              ldi R19,3
 0094 8B01              movw R16,R22
 0096 0E940000          xcall mod16u
 009A B801              movw R22,R16
 009C 24E6              ldi R18,100
 009E 30E0              ldi R19,0
 00A0 0E940000          xcall div16u
 00A4 FA01              movw R30,R20
 00A6 0183              std z+1,R16
 00A8                   .dbline 37
 00A8           ;  i=i%100;
 00A8                   .dbline 38
 00A8           ;  p[2]=i/10;
 00A8 24E6              ldi R18,100
 00AA 30E0              ldi R19,0
 00AC 8B01              movw R16,R22
 00AE 0E940000          xcall mod16u
 00B2 B801              movw R22,R16
 00B4 2AE0              ldi R18,10
 00B6 30E0              ldi R19,0
 00B8 0E940000          xcall div16u
 00BC FA01              movw R30,R20
 00BE 0283              std z+2,R16
 00C0                   .dbline 39
 00C0           ;  i=i%10;
 00C0                   .dbline 40
 00C0           ;  p[3]=i;
 00C0 2AE0              ldi R18,10
 00C2 30E0              ldi R19,0
 00C4 8B01              movw R16,R22
 00C6 0E940000          xcall mod16u
 00CA B801              movw R22,R16
 00CC FA01              movw R30,R20
 00CE 6383              std z+3,R22
 00D0                   .dbline -2
 00D0                   .dbline 41
 00D0           ; }
 00D0           L16:
 00D0 0E940000          xcall pop_gset2
 00D4                   .dbline 0 ; func end
 00D4 0895              ret
 00D6                   .dbsym r p 20 pc
 00D6                   .dbsym r i 22 i
 00D6                   .dbend
 00D6                   .dbfunc e main _main fV
 00D6           ;              i -> R20,R21
                        .even
 00D6           _main::
 00D6                   .dbline -1
 00D6                   .dbline 44
 00D6           ; 
 00D6           ; void main(void)
 00D6           ; {uint i;
 00D6                   .dbline 45
 00D6           ;  DDRA=0x00;                    //设置A口为不带上拉输入;
 00D6 2224              clr R2
 00D8 2ABA              out 0x1a,R2
 00DA                   .dbline 46
 00DA           ;  PORTA=0x00;
 00DA 2BBA              out 0x1b,R2
 00DC                   .dbline 47
 00DC           ;  DDRB=0xff;                    //设置B口为推挽1输出;
 00DC 8FEF              ldi R24,255
 00DE 87BB              out 0x17,R24
 00E0                   .dbline 48
 00E0           ;  PORTB=0xff;
 00E0 88BB              out 0x18,R24
 00E2                   .dbline 49
 00E2           ;  DDRD=0xff;                    //设置C口为推挽1输出;
 00E2 81BB              out 0x11,R24
 00E4                   .dbline 50
 00E4           ;  PORTD=0xff;
 00E4 82BB              out 0x12,R24
 00E6                   .dbline 51
 00E6           ;  PORTB=0x00;                   //B口初始化输出1;C口初始化输出0;点亮全部数码管;
 00E6 28BA              out 0x18,R2
 00E8                   .dbline 52
 00E8           ;  PORTD=0xff;
 00E8 82BB              out 0x12,R24
 00EA                   .dbline 53
 00EA           ;  ADMUX=0x01;                   //选择第二通道ADC1;
 00EA 81E0              ldi R24,1
 00EC 87B9              out 0x7,R24
 00EE                   .dbline 54
 00EE           ;  ADCSR=0xe6;                   //125K转换速率,自由转换模式;启动AD转换器;
 00EE 86EE              ldi R24,230
 00F0 86B9              out 0x6,R24
 00F2                   .dbline 55
 00F2           ;  DelayMs(3000);                //延时待系统稳定;
 00F2 08EB              ldi R16,3000
 00F4 1BE0              ldi R17,11
 00F6 84DF              xcall _DelayMs
 00F8 08C0              xjmp L19
 00FA           L18:
 00FA                   .dbline 57
 00FA                   .dbline 57
 00FA B4DF              xcall _ADC_Convert
 00FC A801              movw R20,R16
 00FE                   .dbline 58
 00FE 20E0              ldi R18,<_Data
 0100 30E0              ldi R19,>_Data
 0102 BBDF              xcall _Process
 0104                   .dbline 59
 0104 00E0              ldi R16,<_Data
 0106 10E0              ldi R17,>_Data
 0108 8BDF              xcall _Display
 010A                   .dbline 60
 010A           L19:
 010A                   .dbline 56
 010A F7CF              xjmp L18
 010C           X1:
 010C                   .dbline -2
 010C                   .dbline 61
 010C           ;  while(1)
 010C           ;  {i=ADC_Convert();
 010C           ;   Process(i,Data);
 010C           ;   Display(Data);
 010C           ;  }
 010C           ; }
 010C           L17:
 010C                   .dbline 0 ; func end
 010C 0895              ret
 010E                   .dbsym r i 20 i
 010E                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -