亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lion.asm

?? AVR官方設計的充電器
?? ASM
字號:

;  Last change:  JB    00/07/11 (YY/MM/DD)
 
;**************************** MODULE INFO  *******************************
;
;   File name   :  bclion.asm
;   AUTHOR      :  Atmel
;   VERSION     :  1.2
;   DATE        :  July 10th 2000
;
;   Compiler    :  Atmel AVR Assembler 1.30
;   Contents    :  Travel Battery Charger Reference Design with ATtiny15
;                    
;	Change log
;	V1.2		JB	Fixed bug when stopping PWM output

;*************************[ Included Define Files ]***********************
; Define files included here 
; Note: Battery Specific Functions are included at the end of this file

.include	"tn15def.inc"
.include    	"bc.inc"
.include 	"liion.inc"				;Battery spec.


;*************************[ Interrupt Vector Table ]**********************
; Execution always starts here
 
	.org 0x00
 	ldi			temp, 0x05
 	out			TCCR0, temp				; TCNT0 CK/1024
 	ldi			temp, 0x41				; TCNT1 8-bit PWM @ 100 kHz
 	out			TCCR1, temp				; output DISCONNECTED
	rjmp		fast_charge

	.org OVF0addr
	
;*****************[ Timer 0 Overflow Interrupt Handler ]******************
Timer0_OVF_Int:
	in			SREG_Storage, SREG		; Store SREG Contents

	dec			tick_cnt				; Decrement tick Counter
	brne		t0ovf_exit
	
	; This code is executed once a second	
	ldi			tick_cnt, sec_duration	; Reset Tick Counter
	; *** Insert user code here (approx 1 second)
	inc			t_sec					; Increment second counter
	cpi			t_sec, min_duration
	brne		t0ovf_exit				; Test second overflow
	; This code is executed once a minute
	clr			t_sec					; Clear Second Counter
	; *** Insert user code here (approx 1 minute)
	inc			t_min					; Increment Minutes Counter
	
t0ovf_exit:
	out			SREG, SREG_Storage		; Restore SREG
	reti

;*************************[ PWM Control ]*********************************
; Functions to start and stop PWM output
start_PWM:
 	ldi			temp, 0x61
 	out			TCCR1, temp				; TCNT1 8-bit PWM @ 100 kHz
	ret

stop_PWM:
	cbi			PORTB, PWM_PIN			; Lock current to zero
	sbi			DDRB, PWM_PIN			
	ldi			temp, 0x41
	out			TCCR1, temp				; Disconnect PWM output
	ret

;*******************[function F_measure: Measure all Parameters ]***************
; Measure Charge Parameters

f_measure:
	ldi			temp,ADC_T_channel		; Select Temperature Channel
	rcall		convert_average			; Measure Battery Temperature
	mov			Tl, av_l
	mov			Th, av_h				; Record value

	ldi			temp,ADC_gain_channel		; Select Current Channel
	rcall		convert_average			; Measure Battery Current
	mov			Il, av_l
	mov			Ih, av_h				; Record value

	sbrc		control,NO_PWM			; Check control 
	rcall		stop_PWM				; Stop PWM to measure battery voltage, 
	ldi			temp,ADC_V_channel		; Select Voltage Channel
	rcall		convert_average			; Measure Battery Charge Voltage
	mov			Vl, av_l
	mov			Vh, av_h				; Record value
	rcall		start_PWM

;	ldi			temp,ADC_g_offset_channel		; Select Current Channel
;	rcall		convert_average	
	
	ret

	
;*************************[ ADC Handler ]*********************************
; This function measures the channel selected by [temp], and returns the 
; converted value in [av_h:av_l]

convert_average:
	out			ADMUX, temp				; Set ADC Channel

	clr			av_l
	clr			av_h					; Clear Average Registers
	ldi			temp2,(1<<avg_loop_cnt) 	; Set loop counter
 	ldi		 	temp,0xD4
	out			ADCSR,temp

convert_start:
	sbi			ADCSR, ADSC				; Start A/D Conversions

convert_wait:
	sbis		ADCSR, ADIF
	rjmp		convert_wait			; Wait for Conversion to finish

	in			temp, ADCL
	add			av_l, temp
	in			temp, ADCH
	adc			av_h, temp				; Add measured value to average
	
	dec			temp2
	brne		convert_start			; Repeat (1<<avg_loop_cnt) times
	
	ldi			temp2, avg_loop_cnt		; Set shift counter
convert_avg:	
	lsr			av_h
	ror			av_l					; av_h:av_l = av_h:av_l/2
	dec			temp2
	brne		convert_avg				; Repeat (avg_loop_cnt) times

	cbi			ADCSR,ADEN
	ret									; return to measure
	
f_terminate_error:
	rcall		stop_PWM	
error_loop:
	rjmp		error_loop


;*******************[ Adjust Charge Current  ]****************
;  Adjust Charge Current

adj_charge:
	cp			temp, chargel
	cpc			temp2,chargeh
	brlo		f_dec	

	cp			chargel,temp			; if( I < I_fast )
	cpc			chargeh,temp2	
	brsh		f_end					; increase charge current
f_inc:	
	in			temp, OCR1A				; increment charge current
	subi		temp, 0xFF				; if( OCR1A < 0xFF )
	brcc		f_end
	out			OCR1A, temp
	rjmp		f_end
f_dec:
	in			temp, OCR1A				; decrement charge current
	subi		temp, 0x01				; if( OCR1A > 0x00 )
	brcs		f_end
	out			OCR1A, temp
f_end:ret


;*******************[Check Temperature ]********************
; checking temperature and time, terminate if outside range

check_temperature:
	ldi			temp, high(max_T_abs)
	cpi			Tl, low(max_T_abs)		; Temperature too high? (T_max)
	cpc			Th, temp
	brlo		f_terminate_error		; Yes, terminate and flag error
	
	ldi			temp, high(min_T_abs)
	cpi			Tl, low(min_T_abs)		; Temperature too low? (T_min)
	cpc			Th, temp
	brsh		f_terminate_error		; Yes, terminate and flag error
	
	cpi			t_min, max_time_fast
	brsh		f_terminate_error		; timeout (test minutes only)

	ret
;*******************[ Fast Charge: Reset ]********************************
; Start Fast Charge Cycle
; Reset Charge Parameters
fast_charge:
	ldi			temp, 0x65
	out			0x3D, temp				; Initialize Stack (emulator only)

 	ldi			temp,0xFF
 	out 		OCR1B,temp
 	ldi			temp, 0x02
 	out			TIMSK, temp				; Enable TCNT0 overflow interrupt
  	cbi			PORTB, PWM_PIN			; Set Port B levels
  	sbi			DDRB, PWM_PIN			; Set Port B directions
	ldi			control, 0x00			; No events active
	ldi			tick_cnt, sec_duration		; Tick counter = 0
	clr			last_t_min
	sei									; global interrupt enable
	ldi			control, NO_PWM			; Set charge control to measure battery voltage
	ldi			t_min, 0x00
	ldi			t_sec, 0x00				; Reset Fast Charge Timer
	ldi			temp, 0x00
	out			OCR1A, temp				; Minimum Duty Cycle

	rcall		start_PWM
	
;*******************[ Fast Charge: Check battery]********************
charge_loop:
	rcall 		f_measure
	rcall		check_temperature	

;*******************[ Fast Charge: Adjust Charge Current ]****************
;  Adjust Charge Voltage and Current
		
	ldi			temp,low(I_fast)
	ldi			temp2, high(I_fast)
	mov			chargel,Il
	mov			chargeh,Ih 
	rcall		adj_charge
	 
;*******************[ Fast Charge: Terminate Test ]***********************
f_terminate_test:

	ldi			temp, high(max_V_fast)
	cpi			Vl, low(max_V_fast)
	cpc			Vh, temp					; if( V > V_fast )
	brlo		charge_loop					; terminate fast charge

;*******************[ Fast Charge: Constant voltage loop ]***********************

	ldi			control, 0x00				; Clear Charge Control Register
fV_voltage_loop:
	rcall		f_measure			

	ldi			temp,ADC_g_offset_channel	; Select Current offset Channel
	rcall		convert_average				; Measure offset value
	sub			Il, av_l					; Subtract offset from measured value
	sbc			Ih, av_h
	brpl		pos					
	clr			Il							; Reset if negative value
	clr			Ih	
pos:	
	ldi			temp,low(max_V_fast)
	ldi			temp2,high(max_V_fast) 		; Load constant V value
	mov			chargel,Vl			
	mov			chargeh,Vh
	rcall		adj_charge					; Adjust charge voltage

;*******************[ Fast Charge: Terminate test, constant voltage loop ]***********************

	rcall		check_temperature
		
	ldi			temp,high(min_I_fast) 		; if( I < I_min )
	cpi			Il,low(min_I_fast)
	cpc			Ih,temp
	brsh		fV_voltage_loop	
	
;*******************[ Fast Charge: Terminate ]****************************
;  Terminate Fast Charge Cycle

	rcall		stop_PWM					; Disable PWM Output
											; Continue with Trickle Charge
;*******************[ Trickle Charge ]************************************
; Reset Charge Parameters
	ldi			control, NO_PWM				; Set charge control to measure battery voltage
	ldi			t_min, 0x00
	out			OCR1A, t_min				; Minimum Duty Cycle

	rcall		start_PWM					; Start PWM

;*******************[ Trickle Charge: Check Temperature ]*****************

t_charge_loop:
	rcall 		f_measure
	rcall		check_temperature	

;*******************[ Trickle Charge: Adjust Charge Current ]*************
;  Adjust charge Current

	ldi			temp, low(I_trickle)
	ldi			temp2, high(I_trickle)		; Load trickle charge current
	mov			chargel,Il
	mov			chargeh,Ih			
	rcall		adj_charge					; Adjust charge current
	
;*******************[ trickle Charge: Terminate Test ]***********************
t_terminate_test:

	ldi			temp, high(max_V_trickle)
	cpi			Vl, low(max_V_trickle)
	cpc			Vh, temp					; if( V > V_trickle )
	brlo		t_charge_loop				; terminate trickle charge

;*******************[ trickle Charge: Constant voltage loop ]***********************

	ldi			control, 0x00				; Clear Charge Control Register
tV_voltage_loop:
	rcall		f_measure		 	

	ldi			temp,low(max_V_trickle)
	ldi			temp2,high(max_V_trickle)
	mov			chargel,Vl
	mov			chargeh,Vh
	rcall		adj_charge	

;*******************[ Trickle Charge: Terminate test, constant voltage loop ]***********************

tV_terminate_test:
	
	ldi			temp,high(min_I_fast) 		; if( I < I_fast )
	cpi			Il,low(min_I_fast)
	cpc			Ih,temp
	brsh		tV_voltage_loop	

t_terminate:
	rcall		stop_PWM
done:	rjmp 	done		
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩黄视频| 欧美性生活大片视频| 免费成人在线网站| 亚洲国产成人高清精品| 亚洲三级小视频| 一区二区三区在线不卡| 亚洲一区二区三区激情| 亚洲成人精品影院| 亚洲国产精品一区二区尤物区| 伊人色综合久久天天人手人婷| 亚洲精品国产一区二区精华液 | 欧美一级在线免费| 在线播放日韩导航| 欧美大片拔萝卜| 国产午夜精品一区二区| 亚洲欧洲日本在线| 亚洲一二三四区不卡| 天堂一区二区在线| 黄色资源网久久资源365| 国产成人在线观看免费网站| 成人综合婷婷国产精品久久蜜臀| av资源网一区| 欧美群妇大交群的观看方式| 欧美r级电影在线观看| 国产女同互慰高潮91漫画| 亚洲美女免费视频| 青草国产精品久久久久久| 成人小视频免费在线观看| 91日韩精品一区| 91精品婷婷国产综合久久性色| 久久久精品黄色| 亚洲高清视频的网址| 国内欧美视频一区二区| 欧美中文字幕亚洲一区二区va在线| 欧美日韩aaaaa| 国产精品久久久久永久免费观看 | 99精品久久久久久| 欧美高清hd18日本| 国产精品久久久久久久久免费桃花| 亚洲精品国产品国语在线app| 免费成人av在线| 91老师国产黑色丝袜在线| 精品国产乱码久久久久久久久| 亚洲精品一卡二卡| 国产主播一区二区| 欧美肥妇毛茸茸| 一区二区三区在线视频观看| 国产一区二区精品久久99| 欧美日韩亚洲综合在线| 亚洲国产高清aⅴ视频| 日韩福利电影在线| 色综合天天综合色综合av | 日韩一级大片在线| 亚洲欧美日韩精品久久久久| 九九**精品视频免费播放| 在线视频亚洲一区| 国产精品久久久久一区| 国产乱码精品一区二区三区av | 久久国产夜色精品鲁鲁99| 欧美私人免费视频| 1024精品合集| 国产福利一区二区三区视频| 欧美一区二区福利在线| 午夜影院在线观看欧美| 日本电影亚洲天堂一区| 亚洲色图20p| 91蜜桃网址入口| 中文字幕一区二区三区四区| 成人午夜视频免费看| wwwwww.欧美系列| 国产一区亚洲一区| 精品日韩一区二区三区免费视频| 日日摸夜夜添夜夜添精品视频| 欧美日韩在线精品一区二区三区激情| 日韩毛片精品高清免费| a级精品国产片在线观看| 综合电影一区二区三区 | 国产精品区一区二区三| 成人免费毛片aaaaa**| 国产精品欧美一区喷水| 国产成人综合在线播放| 国产精品美女久久久久aⅴ国产馆| 国产99精品视频| 国产精品国产三级国产aⅴ中文 | 欧美日韩亚洲综合在线| 午夜精品爽啪视频| 91精品国模一区二区三区| 日本女人一区二区三区| 精品国产乱码久久久久久久久| 国产一区二区三区免费| 国产欧美一区二区三区鸳鸯浴| jiyouzz国产精品久久| 亚洲伦在线观看| 精品视频999| 国产综合一区二区| 国产精品剧情在线亚洲| 欧美调教femdomvk| 麻豆精品一区二区综合av| 久久久九九九九| 欧洲在线/亚洲| 美女视频一区二区三区| 亚洲国产精品高清| 欧美三级视频在线观看| 国内国产精品久久| 亚洲综合激情另类小说区| 日韩视频中午一区| 成人免费视频一区二区| 五月开心婷婷久久| 国产欧美精品一区二区色综合 | 国产亚洲一区二区三区在线观看| 成人激情开心网| 日韩1区2区3区| 国产精品国产三级国产aⅴ中文| 欧美日产在线观看| 国产精品12区| 欧美96一区二区免费视频| 亚洲三级小视频| 久久综合九色综合97_久久久| 色系网站成人免费| 国产精品一区在线观看乱码| 午夜精品久久久久久久久久久| 国产精品麻豆欧美日韩ww| 日韩欧美国产电影| 欧美亚洲国产一区二区三区va | 99久久精品久久久久久清纯| 七七婷婷婷婷精品国产| 亚洲精品菠萝久久久久久久| 久久日韩精品一区二区五区| 欧美性做爰猛烈叫床潮| 成人晚上爱看视频| 激情欧美日韩一区二区| 秋霞国产午夜精品免费视频| 一区二区三国产精华液| 亚洲欧洲日韩av| 国产精品午夜在线| 日韩美女主播在线视频一区二区三区| 色视频成人在线观看免| 成人av电影在线观看| 国产91精品欧美| 国产九色精品成人porny| 六月丁香婷婷久久| 日韩激情一区二区| 丝袜亚洲另类欧美综合| 亚洲一区二区在线视频| 亚洲一区二区三区四区中文字幕| 综合久久给合久久狠狠狠97色 | 538在线一区二区精品国产| 色先锋aa成人| 91福利精品第一导航| 91一区二区在线观看| 色综合久久久久| 色婷婷激情综合| 欧美视频一区在线| 在线91免费看| 91麻豆精品国产91久久久更新时间 | 国产成人精品影视| 国产福利一区二区三区视频| 高清在线成人网| 91一区二区三区在线播放| 色网站国产精品| 欧美精品xxxxbbbb| 日韩精品一区二区三区视频播放| 日韩欧美国产三级电影视频| 精品捆绑美女sm三区| 国产拍揄自揄精品视频麻豆| 国产精品久久久久影视| 亚洲一区二区三区自拍| 亚洲第一电影网| 韩国精品在线观看| 成人性生交大合| 欧美三级三级三级爽爽爽| 日韩视频一区二区三区在线播放| 日韩一区二区三区在线| 国产欧美一区在线| 亚洲自拍偷拍av| 麻豆极品一区二区三区| 成人app网站| 欧美日韩亚洲综合一区二区三区| 日韩精品一区二区三区四区 | 欧美国产精品久久| 亚洲伦理在线免费看| 免费在线成人网| 成人激情午夜影院| 欧美三级日本三级少妇99| 精品久久人人做人人爱| 成人免费一区二区三区在线观看| 午夜免费欧美电影| www.欧美日韩国产在线| 欧美男人的天堂一二区| 国产农村妇女精品| 日韩激情一二三区| 99久久国产综合精品色伊| 欧美一卡二卡三卡| 一区二区三区美女视频| 国产剧情av麻豆香蕉精品| 欧美日韩极品在线观看一区| 国产精品理伦片| 韩国精品免费视频| 欧美高清视频在线高清观看mv色露露十八| 国产欧美一二三区|