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

📄 adc.lis

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

⌨️ 快捷键说明

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