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

📄 read_adc.lis

📁 单片机 mega16L 电池放电器源码
💻 LIS
字号:
                        .module read_adc.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\read_adc.c
 0000                   .dbfunc e T_BT1_T _T_BT1_T fi
 0000           ;           BT_T -> R20,R21
 0000           ;              a -> R22,R23
 0000           ;              i -> R10
                        .even
 0000           _T_BT1_T::
 0000 00D0              rcall push_gset3
 0002                   .dbline -1
 0002                   .dbline 13
 0002           ; #include <iom8v.h> //和单片机类型相对应的头文件,选择Atmega8做实验;
 0002           ; #include <macros.h>
 0002           ; #include "discharge.h"
 0002           ; #include <stdio.h>
 0002           ; #include "LCD_1602.h"
 0002           ; 
 0002           ; /*---------------------------------------------
 0002           ;        电池1温度测量程序
 0002           ;        最大测量温度:88度
 0002           ;        测量64次取平均数
 0002           ; ----------------------------------------------*/
 0002           ; unsigned int T_BT1_T(void)
 0002           ; {
 0002                   .dbline 15
 0002           ;  unsigned char i;
 0002           ;  unsigned int a=0;
 0002 6627              clr R22
 0004 7727              clr R23
 0006                   .dbline 17
 0006           ;  unsigned int BT_T;//电池1温度
 0006           ;      i=read_adc(0,1);//第一次转换,不要
 0006 21E0              ldi R18,1
 0008 0027              clr R16
 000A 00D0              rcall _read_adc
 000C                   .dbline 18
 000C           ;      for (i=0;i<1;i++)
 000C AA24              clr R10
 000E 06C0              rjmp L5
 0010           L2:
 0010                   .dbline 19
 0010                   .dbline 20
 0010 21E0              ldi R18,1
 0012 0027              clr R16
 0014 00D0              rcall _read_adc
 0016 600F              add R22,R16
 0018 711F              adc R23,R17
 001A                   .dbline 21
 001A           L3:
 001A                   .dbline 18
 001A A394              inc R10
 001C           L5:
 001C                   .dbline 18
 001C 8A2D              mov R24,R10
 001E 8130              cpi R24,1
 0020 B8F3              brlo L2
 0022                   .dbline 22
 0022           ;                   {
 0022           ;                         a+=read_adc(0,1);//外部基准(1.024V),ADC1                       
 0022           ;                       }
 0022           ;         BT_T=(a>>0);
 0022 AB01              movw R20,R22
 0024                   .dbline 23
 0024           ;         if(BT_T>65530)
 0024 8AEF              ldi R24,65530
 0026 9FEF              ldi R25,255
 0028 8617              cp R24,R22
 002A 9707              cpc R25,R23
 002C 10F4              brsh L6
 002E                   .dbline 24
 002E           ;           BT_T=0;
 002E 4427              clr R20
 0030 5527              clr R21
 0032           L6:
 0032                   .dbline 25
 0032           ;               return BT_T;
 0032 8A01              movw R16,R20
 0034                   .dbline -2
 0034           L1:
 0034 00D0              rcall pop_gset3
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbsym r BT_T 20 i
 0038                   .dbsym r a 22 i
 0038                   .dbsym r i 10 c
 0038                   .dbend
 0038                   .dbfunc e T_BT1_V _T_BT1_V fi
 0038           ;           BT_V -> R20,R21
 0038           ;              a -> R22,R23
 0038           ;              i -> R10
                        .even
 0038           _T_BT1_V::
 0038 00D0              rcall push_gset3
 003A                   .dbline -1
 003A                   .dbline 34
 003A           ; }
 003A           ; 
 003A           ; /*---------------------------------------------
 003A           ;         电池1电压测量程序
 003A           ;         最大测量电压:4.096V
 003A           ;           测量64次取平均数
 003A           ; ----------------------------------------------*/
 003A           ; unsigned int  T_BT1_V(void)
 003A           ; {
 003A                   .dbline 36
 003A           ;  unsigned char i;
 003A           ;  unsigned int a=0;
 003A 6627              clr R22
 003C 7727              clr R23
 003E                   .dbline 38
 003E           ;  unsigned int BT_V;//电池1电压
 003E           ;  i=read_adc(0,0);//第一次转换,不要
 003E 2227              clr R18
 0040 0027              clr R16
 0042 00D0              rcall _read_adc
 0044                   .dbline 39
 0044           ;      for (i=0;i<16;i++)
 0044 AA24              clr R10
 0046 06C0              rjmp L12
 0048           L9:
 0048                   .dbline 40
 0048                   .dbline 41
 0048 2227              clr R18
 004A 0027              clr R16
 004C 00D0              rcall _read_adc
 004E 600F              add R22,R16
 0050 711F              adc R23,R17
 0052                   .dbline 42
 0052           L10:
 0052                   .dbline 39
 0052 A394              inc R10
 0054           L12:
 0054                   .dbline 39
 0054 8A2D              mov R24,R10
 0056 8031              cpi R24,16
 0058 B8F3              brlo L9
 005A                   .dbline 43
 005A           ;                   {
 005A           ;                         a+=read_adc(0,0);//外部基准(1.024V),ADC0                       
 005A           ;                       }
 005A           ;         BT_V=(a>>4)*3;
 005A 9B01              movw R18,R22
 005C 3695              lsr R19
 005E 2795              ror R18
 0060 3695              lsr R19
 0062 2795              ror R18
 0064 3695              lsr R19
 0066 2795              ror R18
 0068 3695              lsr R19
 006A 2795              ror R18
 006C 03E0              ldi R16,3
 006E 10E0              ldi R17,0
 0070 00D0              rcall empy16s
 0072 A801              movw R20,R16
 0074                   .dbline 44
 0074           ;         if(BT_V>65530)
 0074 8AEF              ldi R24,65530
 0076 9FEF              ldi R25,255
 0078 8017              cp R24,R16
 007A 9107              cpc R25,R17
 007C 10F4              brsh L13
 007E                   .dbline 45
 007E           ;           BT_V=0;
 007E 4427              clr R20
 0080 5527              clr R21
 0082           L13:
 0082                   .dbline 46
 0082           ;               return BT_V;
 0082 8A01              movw R16,R20
 0084                   .dbline -2
 0084           L8:
 0084 00D0              rcall pop_gset3
 0086                   .dbline 0 ; func end
 0086 0895              ret
 0088                   .dbsym r BT_V 20 i
 0088                   .dbsym r a 22 i
 0088                   .dbsym r i 10 c
 0088                   .dbend
 0088                   .dbfunc e T_BT1_I _T_BT1_I fi
 0088           ;           BT_I -> R20,R21
 0088           ;              a -> R22,R23
 0088           ;              i -> R10
                        .even
 0088           _T_BT1_I::
 0088 00D0              rcall push_gset3
 008A                   .dbline -1
 008A                   .dbline 55
 008A           ; } 
 008A           ; 
 008A           ; /*---------------------------------------------
 008A           ;         电池1电流测量程序
 008A           ;         最大测量电流:2.048A
 008A           ;         测量64次取平均数
 008A           ; ----------------------------------------------*/
 008A           ; unsigned int T_BT1_I(void)
 008A           ; {
 008A                   .dbline 57
 008A           ;  unsigned char i;
 008A           ;  unsigned int a=0;
 008A 6627              clr R22
 008C 7727              clr R23
 008E                   .dbline 59
 008E           ;  unsigned int BT_I;//电池1电流
 008E           ;  i=read_adc(0,3);//第一次转换,不要
 008E 23E0              ldi R18,3
 0090 0027              clr R16
 0092 00D0              rcall _read_adc
 0094                   .dbline 60
 0094           ;      for (i=0;i<16;i++)
 0094 AA24              clr R10
 0096 06C0              rjmp L19
 0098           L16:
 0098                   .dbline 61
 0098                   .dbline 62
 0098 23E0              ldi R18,3
 009A 0027              clr R16
 009C 00D0              rcall _read_adc
 009E 600F              add R22,R16
 00A0 711F              adc R23,R17
 00A2                   .dbline 63
 00A2           L17:
 00A2                   .dbline 60
 00A2 A394              inc R10
 00A4           L19:
 00A4                   .dbline 60
 00A4 8A2D              mov R24,R10
 00A6 8031              cpi R24,16
 00A8 B8F3              brlo L16
 00AA                   .dbline 64
 00AA           ;                   {
 00AA           ;                         a+=read_adc(0,3);//外部基准(1.024V),ADC3                       
 00AA           ;                       }
 00AA           ;         BT_I=(a>>4)*50/49;//衰减1.2倍 1.1*1.1=1.21
 00AA 9B01              movw R18,R22
 00AC 3695              lsr R19
 00AE 2795              ror R18
 00B0 3695              lsr R19
 00B2 2795              ror R18
 00B4 3695              lsr R19
 00B6 2795              ror R18
 00B8 3695              lsr R19
 00BA 2795              ror R18
 00BC 02E3              ldi R16,50
 00BE 10E0              ldi R17,0
 00C0 00D0              rcall empy16s
 00C2 21E3              ldi R18,49
 00C4 30E0              ldi R19,0
 00C6 00D0              rcall div16u
 00C8 A801              movw R20,R16
 00CA                   .dbline 65
 00CA           ;          return BT_I;
 00CA                   .dbline -2
 00CA           L15:
 00CA 00D0              rcall pop_gset3
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbsym r BT_I 20 i
 00CE                   .dbsym r a 22 i
 00CE                   .dbsym r i 10 c
 00CE                   .dbend

⌨️ 快捷键说明

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