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

📄 adc.lis

📁 数控电压源程序数控电压源程序数控电压源程序数控电压源程序
💻 LIS
字号:
                        .module ADC.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\张秋伟\我的实验\数控电压源\ADC.c
 0000                   .dbfunc e adc_init _adc_init fV
                        .even
 0000           _adc_init::
 0000                   .dbline -1
 0000                   .dbline 13
 0000           ; //包含所需头文件
 0000           ; #include <ioM16v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; /*------宏定义------*/
 0000           ; #define uchar unsigned char
 0000           ; #define uint  unsigned int
 0000           ; #define DAC_DATA    PORTB
 0000           ; #define DAC_DDR     DDRB
 0000           ; 
 0000           ; 
 0000           ; void adc_init(void)
 0000           ; {
 0000                   .dbline 15
 0000           ;  //adc转换初始化
 0000           ;  ADCSRA       = 0x00; //禁止AD转换
 0000 2224              clr R2
 0002 26B8              out 0x6,R2
 0004                   .dbline 16
 0004           ;  ADMUX        = 0x47;
 0004 87E4              ldi R24,71
 0006 87B9              out 0x7,R24
 0008                   .dbline 17
 0008           ;  SFIOR |= 0x00;
 0008 20B6              in R2,0x30
 000A 20BE              out 0x30,R2
 000C                   .dbline 18
 000C           ;  ACSR = 0x80; //禁止模拟比较器
 000C 80E8              ldi R24,128
 000E 88B9              out 0x8,R24
 0010                   .dbline 19
 0010           ;  ADCSRA       = 0xCE;
 0010 8EEC              ldi R24,206
 0012 86B9              out 0x6,R24
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e adc_calc _adc_calc fi
 0016           ;        voltage -> R10,R11
 0016           ;          value -> y+0
                        .even
 0016           _adc_calc::
 0016 0E940000          xcall push_gset3
 001A 2497              sbiw R28,4
 001C                   .dbline -1
 001C                   .dbline 24
 001C           ; }
 001C           ; 
 001C           ; 
 001C           ; unsigned int adc_calc(void)
 001C           ; {
 001C                   .dbline 26
 001C           ;  //计算实际电压
 001C           ;  unsigned long value=0;
 001C 40E0              ldi R20,0
 001E 50E0              ldi R21,0
 0020 60E0              ldi R22,0
 0022 70E0              ldi R23,0
 0024 FE01              movw R30,R28
 0026 4083              std z+0,R20
 0028 5183              std z+1,R21
 002A 6283              std z+2,R22
 002C 7383              std z+3,R23
 002E                   .dbline 27
 002E           ;  unsigned int voltage=0; //电压单位为(mV)
 002E AA24              clr R10
 0030 BB24              clr R11
 0032                   .dbline 28
 0032           ;  value=ADCL;           //首先读低位
 0032 24B0              in R2,0x4
 0034 3324              clr R3
 0036 4424              clr R4
 0038 5524              clr R5
 003A FE01              movw R30,R28
 003C 2082              std z+0,R2
 003E 3182              std z+1,R3
 0040 4282              std z+2,R4
 0042 5382              std z+3,R5
 0044                   .dbline 29
 0044           ;  value|=(int)ADCH << 8; //然后读高位
 0044 25B0              in R2,0x5
 0046 3324              clr R3
 0048 322C              mov R3,R2
 004A 2224              clr R2
 004C 4424              clr R4
 004E 37FC              sbrc R3,7
 0050 4094              com R4
 0052 5524              clr R5
 0054 47FC              sbrc R4,7
 0056 5094              com R5
 0058 FE01              movw R30,R28
 005A 6080              ldd R6,z+0
 005C 7180              ldd R7,z+1
 005E 8280              ldd R8,z+2
 0060 9380              ldd R9,z+3
 0062 6228              or R6,R2
 0064 7328              or R7,R3
 0066 8428              or R8,R4
 0068 9528              or R9,R5
 006A FE01              movw R30,R28
 006C 6082              std z+0,R6
 006E 7182              std z+1,R7
 0070 8282              std z+2,R8
 0072 9382              std z+3,R9
 0074                   .dbline 30
 0074           ;  voltage=(value*5000)>>10;
 0074 FE01              movw R30,R28
 0076 2080              ldd R2,z+0
 0078 3180              ldd R3,z+1
 007A 4280              ldd R4,z+2
 007C 5380              ldd R5,z+3
 007E 48E8              ldi R20,136
 0080 53E1              ldi R21,19
 0082 60E0              ldi R22,0
 0084 70E0              ldi R23,0
 0086 5A92              st -y,R5
 0088 4A92              st -y,R4
 008A 3A92              st -y,R3
 008C 2A92              st -y,R2
 008E 8A01              movw R16,R20
 0090 9B01              movw R18,R22
 0092 0E940000          xcall empy32u
 0096 8AE0              ldi R24,10
 0098 90E0              ldi R25,0
 009A 8A93              st -y,R24
 009C 0E940000          xcall lsr32
 00A0 5801              movw R10,R16
 00A2                   .dbline 31
 00A2           ;  return voltage;
 00A2                   .dbline -2
 00A2           L2:
 00A2 2496              adiw R28,4
 00A4 0E940000          xcall pop_gset3
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbsym r voltage 10 i
 00AA                   .dbsym l value 0 l
 00AA                   .dbend

⌨️ 快捷键说明

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