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

📄 adc.lis

📁 AVR之ATMega16
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module ADC.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
 0000                   .dbfunc e DelayUS _DelayUS fV
 0000           ;           time -> R16,R17
                        .even
 0000           _DelayUS::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; //内部晶振 8M
 0000           ; #include <ioM16v.h>
 0000           ; #include <macros.h>
 0000           ; #include"delay.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /*------宏定义------*/
 0000 02C0              xjmp L3
 0002           L2:
 0002                   .dbline 11
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006           L3:
 0006                   .dbline 10
 0006           ; #define uchar unsigned char
 0006 81E0              ldi R24,1
 0008 90E0              ldi R25,0
 000A 8017              cp R24,R16
 000C 9107              cpc R25,R17
 000E C8F3              brlo L2
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r time 16 i
 0012                   .dbend
 0012                   .dbfunc e DelayMS _DelayMS fV
 0012           ;              i -> R20,R21
 0012           ;           time -> R16,R17
                        .even
 0012           _DelayMS::
 0012 0E940000          xcall push_gset1
 0016                   .dbline -1
 0016                   .dbline 20
 0016           ; #define uint  unsigned int
 0016           ; uchar led_date[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管段位
 0016           ; uchar led_seg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//数码管片选
 0016           ; uchar vol,vol1=0,vol2=0,i;
 0016           ; 
 0016           ; //端口初始化
 0016           ; void port_init(void)
 0016           ; {
 0016           ;  PORTA = 0x00;//设置端口数据和方向
 0016           ;  DDRA  = 0x00;
 0016 09C0              xjmp L7
 0018           L6:
 0018                   .dbline 23
 0018           ;  PORTB = 0x00;
 0018           ;  DDRB  = 0xFF;
 0018           ;  PORTC = 0x00;
 0018                   .dbline 24
 0018           ;  DDRC  = 0x00;
 0018 41E0              ldi R20,1
 001A 50E0              ldi R21,0
 001C 02C0              xjmp L12
 001E           L9:
 001E                   .dbline 25
 001E           L10:
 001E                   .dbline 24
 001E 4F5F              subi R20,255  ; offset = 1
 0020 5F4F              sbci R21,255
 0022           L12:
 0022                   .dbline 24
 0022 4637              cpi R20,118
 0024 E4E0              ldi R30,4
 0026 5E07              cpc R21,R30
 0028 D0F3              brlo L9
 002A                   .dbline 26
 002A           L7:
 002A                   .dbline 22
 002A 1801              movw R2,R16
 002C 0150              subi R16,1
 002E 1040              sbci R17,0
 0030 2220              tst R2
 0032 91F7              brne L6
 0034 3320              tst R3
 0036 81F7              brne L6
 0038           X0:
 0038                   .dbline -2
 0038           L5:
 0038 0E940000          xcall pop_gset1
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r i 20 i
 003E                   .dbsym r time 16 i
 003E                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
 0000           _led_date::
 0000                   .blkb 2
                        .area idata
 0000 C0F9              .byte 192,249
                        .area data(ram, con, rel)
 0002                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
 0002                   .blkb 2
                        .area idata
 0002 A4B0              .byte 164,176
                        .area data(ram, con, rel)
 0004                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
 0004                   .blkb 2
                        .area idata
 0004 9992              .byte 153,146
                        .area data(ram, con, rel)
 0006                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
 0006                   .blkb 2
                        .area idata
 0006 82F8              .byte 130,248
                        .area data(ram, con, rel)
 0008                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
 0008                   .blkb 2
                        .area idata
 0008 8090              .byte 128,144
                        .area data(ram, con, rel)
 000A                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC/delay.h
 000A                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
 000A                   .dbsym e led_date _led_date A[10:10]c
 000A           _led_seg::
 000A                   .blkb 2
                        .area idata
 000A FEFD              .byte 254,253
                        .area data(ram, con, rel)
 000C                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
 000C                   .blkb 2
                        .area idata
 000C FBF7              .byte 251,247
                        .area data(ram, con, rel)
 000E                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
 000E                   .blkb 2
                        .area idata
 000E EFDF              .byte 239,223
                        .area data(ram, con, rel)
 0010                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
 0010                   .blkb 2
                        .area idata
 0010 BF7F              .byte 191,127
                        .area data(ram, con, rel)
 0012                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
 0012                   .dbsym e led_seg _led_seg A[8:8]c
 0012           _vol1::
 0012                   .blkb 1
                        .area idata
 0012 00                .byte 0
                        .area data(ram, con, rel)
 0013                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
 0013                   .dbsym e vol1 _vol1 c
 0013           _vol2::
 0013                   .blkb 1
                        .area idata
 0013 00                .byte 0
                        .area data(ram, con, rel)
 0014                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
 0014                   .dbsym e vol2 _vol2 c
                        .area text(rom, con, rel)
 003E                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
 003E                   .dbfunc e port_init _port_init fV
                        .even
 003E           _port_init::
 003E                   .dbline -1
 003E                   .dbline 18
 003E                   .dbline 19
 003E 2224              clr R2
 0040 2BBA              out 0x1b,R2
 0042                   .dbline 20
 0042 2ABA              out 0x1a,R2
 0044                   .dbline 21
 0044 28BA              out 0x18,R2
 0046                   .dbline 22
 0046 8FEF              ldi R24,255
 0048 87BB              out 0x17,R24
 004A                   .dbline 23
 004A 25BA              out 0x15,R2
 004C                   .dbline 24
 004C 24BA              out 0x14,R2
 004E                   .dbline 25
 004E           ;  PORTD = 0x00;
 004E 22BA              out 0x12,R2
 0050                   .dbline 26
 0050           ;  DDRD  = 0xFF;
 0050 81BB              out 0x11,R24
 0052                   .dbline -2
 0052           L13:
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbend
 0054                   .dbfunc e adc_init _adc_init fV
                        .even
 0054           _adc_init::
 0054                   .dbline -1
 0054                   .dbline 31
 0054           ; }
 0054           ; 
 0054           ; 
 0054           ; void adc_init(void)
 0054           ; {
 0054                   .dbline 33
 0054           ;  //adc转换初始化
 0054           ;  ADCSRA       = 0x00; //禁止AD转换
 0054 2224              clr R2
 0056 26B8              out 0x6,R2
 0058                   .dbline 34
 0058           ;  ADMUX        = 0xe0;//ADC0单端输入,2.56V片内基准电源,转换结果左对齐
 0058 80EE              ldi R24,224
 005A 87B9              out 0x7,R24
 005C                   .dbline 35
 005C           ;  SFIOR |= 0x00;//自动触发源禁止
 005C 20B6              in R2,0x30
 005E 20BE              out 0x30,R2
 0060                   .dbline 36
 0060           ;  ACSR = 0x80; //禁止模拟比较器
 0060 80E8              ldi R24,128
 0062 88B9              out 0x8,R24
 0064                   .dbline 37
 0064           ;  ADCSRA       = 0x8F;//ADC使能,中断使能,128分频
 0064 8FE8              ldi R24,143
 0066 86B9              out 0x6,R24
 0068                   .dbline -2
 0068           L14:
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbend
 006A                   .dbfunc e adc_calc _adc_calc fi
 006A           ;        voltage -> R10,R11
 006A           ;          value -> y+0
                        .even
 006A           _adc_calc::
 006A 0E940000          xcall push_gset3
 006E 2497              sbiw R28,4
 0070                   .dbline -1
 0070                   .dbline 42
 0070           ; }
 0070           ; 
 0070           ; 
 0070           ; unsigned int adc_calc(void)
 0070           ; {
 0070                   .dbline 44
 0070           ;  //计算实际电压
 0070           ;  unsigned long value=0;
 0070 40E0              ldi R20,0
 0072 50E0              ldi R21,0
 0074 60E0              ldi R22,0
 0076 70E0              ldi R23,0
 0078 FE01              movw R30,R28
 007A 4083              std z+0,R20
 007C 5183              std z+1,R21
 007E 6283              std z+2,R22
 0080 7383              std z+3,R23
 0082                   .dbline 45
 0082           ;  unsigned int voltage=0; //电压单位为(mV)
 0082 AA24              clr R10
 0084 BB24              clr R11
 0086                   .dbline 46
 0086           ;  value=ADCL>>6;                //首先读低位
 0086 26E0              ldi R18,6
 0088 30E0              ldi R19,0
 008A 04B1              in R16,0x4
 008C 1127              clr R17
 008E 0E940000          xcall asr16
 0092 1801              movw R2,R16
 0094 4424              clr R4
 0096 37FC              sbrc R3,7
 0098 4094              com R4
 009A 5524              clr R5
 009C 47FC              sbrc R4,7
 009E 5094              com R5
 00A0 FE01              movw R30,R28
 00A2 2082              std z+0,R2
 00A4 3182              std z+1,R3
 00A6 4282              std z+2,R4
 00A8 5382              std z+3,R5
 00AA                   .dbline 47
 00AA           ;  value|=(int)ADCH << 2; //然后读高位
 00AA 25B0              in R2,0x5
 00AC 3324              clr R3
 00AE 220C              lsl R2
 00B0 331C              rol R3
 00B2 220C              lsl R2
 00B4 331C              rol R3
 00B6 4424              clr R4
 00B8 37FC              sbrc R3,7

⌨️ 快捷键说明

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