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

📄 read_adc.s

📁 单片机 mega16L 电池放电器源码
💻 S
字号:
	.module read_adc.c
	.area text(rom, con, rel)
	.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\read_adc.c
	.dbfunc e T_BT1_T _T_BT1_T fi
;           BT_T -> R20,R21
;              a -> R22,R23
;              i -> R10
	.even
_T_BT1_T::
	rcall push_gset3
	.dbline -1
	.dbline 13
; #include <iom8v.h> //和单片机类型相对应的头文件,选择Atmega8做实验;
; #include <macros.h>
; #include "discharge.h"
; #include <stdio.h>
; #include "LCD_1602.h"
; 
; /*---------------------------------------------
;        电池1温度测量程序
;        最大测量温度:88度
;        测量64次取平均数
; ----------------------------------------------*/
; unsigned int T_BT1_T(void)
; {
	.dbline 15
;  unsigned char i;
;  unsigned int a=0;
	clr R22
	clr R23
	.dbline 17
;  unsigned int BT_T;//电池1温度
;      i=read_adc(0,1);//第一次转换,不要
	ldi R18,1
	clr R16
	rcall _read_adc
	.dbline 18
;      for (i=0;i<1;i++)
	clr R10
	rjmp L5
L2:
	.dbline 19
	.dbline 20
	ldi R18,1
	clr R16
	rcall _read_adc
	add R22,R16
	adc R23,R17
	.dbline 21
L3:
	.dbline 18
	inc R10
L5:
	.dbline 18
	mov R24,R10
	cpi R24,1
	brlo L2
	.dbline 22
; 		    {
; 			  a+=read_adc(0,1);//外部基准(1.024V),ADC1			 
; 			}
; 	  BT_T=(a>>0);
	movw R20,R22
	.dbline 23
; 	  if(BT_T>65530)
	ldi R24,65530
	ldi R25,255
	cp R24,R22
	cpc R25,R23
	brsh L6
	.dbline 24
; 	    BT_T=0;
	clr R20
	clr R21
L6:
	.dbline 25
; 		return BT_T;
	movw R16,R20
	.dbline -2
L1:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r BT_T 20 i
	.dbsym r a 22 i
	.dbsym r i 10 c
	.dbend
	.dbfunc e T_BT1_V _T_BT1_V fi
;           BT_V -> R20,R21
;              a -> R22,R23
;              i -> R10
	.even
_T_BT1_V::
	rcall push_gset3
	.dbline -1
	.dbline 34
; }
; 
; /*---------------------------------------------
;         电池1电压测量程序
;         最大测量电压:4.096V
; 	    测量64次取平均数
; ----------------------------------------------*/
; unsigned int  T_BT1_V(void)
; {
	.dbline 36
;  unsigned char i;
;  unsigned int a=0;
	clr R22
	clr R23
	.dbline 38
;  unsigned int BT_V;//电池1电压
;  i=read_adc(0,0);//第一次转换,不要
	clr R18
	clr R16
	rcall _read_adc
	.dbline 39
;      for (i=0;i<16;i++)
	clr R10
	rjmp L12
L9:
	.dbline 40
	.dbline 41
	clr R18
	clr R16
	rcall _read_adc
	add R22,R16
	adc R23,R17
	.dbline 42
L10:
	.dbline 39
	inc R10
L12:
	.dbline 39
	mov R24,R10
	cpi R24,16
	brlo L9
	.dbline 43
; 		    {
; 			  a+=read_adc(0,0);//外部基准(1.024V),ADC0			 
; 			}
; 	  BT_V=(a>>4)*3;
	movw R18,R22
	lsr R19
	ror R18
	lsr R19
	ror R18
	lsr R19
	ror R18
	lsr R19
	ror R18
	ldi R16,3
	ldi R17,0
	rcall empy16s
	movw R20,R16
	.dbline 44
; 	  if(BT_V>65530)
	ldi R24,65530
	ldi R25,255
	cp R24,R16
	cpc R25,R17
	brsh L13
	.dbline 45
; 	    BT_V=0;
	clr R20
	clr R21
L13:
	.dbline 46
; 		return BT_V;
	movw R16,R20
	.dbline -2
L8:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r BT_V 20 i
	.dbsym r a 22 i
	.dbsym r i 10 c
	.dbend
	.dbfunc e T_BT1_I _T_BT1_I fi
;           BT_I -> R20,R21
;              a -> R22,R23
;              i -> R10
	.even
_T_BT1_I::
	rcall push_gset3
	.dbline -1
	.dbline 55
; } 
; 
; /*---------------------------------------------
;         电池1电流测量程序
;         最大测量电流:2.048A
;         测量64次取平均数
; ----------------------------------------------*/
; unsigned int T_BT1_I(void)
; {
	.dbline 57
;  unsigned char i;
;  unsigned int a=0;
	clr R22
	clr R23
	.dbline 59
;  unsigned int BT_I;//电池1电流
;  i=read_adc(0,3);//第一次转换,不要
	ldi R18,3
	clr R16
	rcall _read_adc
	.dbline 60
;      for (i=0;i<16;i++)
	clr R10
	rjmp L19
L16:
	.dbline 61
	.dbline 62
	ldi R18,3
	clr R16
	rcall _read_adc
	add R22,R16
	adc R23,R17
	.dbline 63
L17:
	.dbline 60
	inc R10
L19:
	.dbline 60
	mov R24,R10
	cpi R24,16
	brlo L16
	.dbline 64
; 		    {
; 			  a+=read_adc(0,3);//外部基准(1.024V),ADC3			 
; 			}
; 	  BT_I=(a>>4)*50/49;//衰减1.2倍 1.1*1.1=1.21
	movw R18,R22
	lsr R19
	ror R18
	lsr R19
	ror R18
	lsr R19
	ror R18
	lsr R19
	ror R18
	ldi R16,50
	ldi R17,0
	rcall empy16s
	ldi R18,49
	ldi R19,0
	rcall div16u
	movw R20,R16
	.dbline 65
; 	   return BT_I;
	.dbline -2
L15:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r BT_I 20 i
	.dbsym r a 22 i
	.dbsym r i 10 c
	.dbend

⌨️ 快捷键说明

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