Viktor47 (20.03.2007 11:27, просмотров: 1) ответил Viktor47 на ИМХО
Код SD16_A ;----- для А0
SetupSD16 mov.w #SD16SSEL0,&SD16CTL ; SMCLK
mov.w #SD16SSEL0,&SD16CTL
clr.b SD16INCTL0 ;
bis.w #SD16SNGL,&SD16CCTL0 ; Single conversion
;-----------
;-----------
;Сначало контроль батареи
; --- control Vcc ---------
bis.b #SD16INCH_5,&SD16INCTL0 ;A5 1/11 Vcc 300 mV
bis.w #SD16REFON,SD16CTL ;on referens
call #del5ms
call #SD16
bis.b #80h,P6OUT
bic.w #SD16REFON,SD16CTL ;off referens
;3,3V / 11 = 300mV = C000H-8000H=3FFF ; 17.03.2007
; 1200 mV : 65535 = 0.01831 mV /16384 (3fffH) * 0.01831 = 299.9 mV/
sub #8000h,RESULTS
cmp #3fffh,RESULTS ;Vcc=3.3v
jlo lowbat_on
если батарея нормальная то
clr.b SD16INCTL0 ;A0
bis.w #SD16REFON,SD16CTL ;on referens
call #del5ms
call #SD16 measure in RESULTS
mov RESULTS,D0
; дальше обработка и цикл: контроль Vcc - измерение, контроль Vcc - измерение и т.д.
;
;----------------------------------------------
SD16 bis.w #SD16SC,&SD16CCTL0 ; Start conversion
testIFG bit.w #SD16IFG,&SD16CCTL0 ; Is conversion done?
jz testIFG ;
mov.w &SD16MEM0,RESULTS ; Yes, save
ret ;