AVR (20.03.2007 11:55, просмотров: 1) ответил Viktor47 на Код SD16_A
А форматирование для кого делалось - для Пушкина? <asm>
;----- для А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 ;
</asm>