Analisi della risposta al transitorio di tensione del motore c.c. con scheda 8051

Modulo tabella in Excel
;++++++++++++++++++++Analisi risposta al transitorio di tensione al motore cc+++++++++++++++++++
org 8200h
DATA_OUT = P1.2 ; Uscita dati convertitore A/D
IO_CLOCK = P1.1 ; Clock per convertitore A/D
CS = P1.0 ; Chip select convertitore A/D
ADCValue = 30h ; Valore dell'ultima conversione A/D
Buffer = 9000h ; Indirizzo inizio buffer memorizzazione acquisizioni
Soglia = 10 ; Soglia inizio acquisizioni
BufCount = 3 ; Conteggio alla rovescia acquisizioni
RitCount = 2 ; Contatore per ritardo
RAcquisiz = 50 ; Ritardo acquisizione
start:
call Init ; Inizializzazione
call ReadADC ; Prima lettura dell'ADC
Lattesa:
call ReadADC
clr c
subb a,#Soglia ; Aspetta fino al superamento della soglia
jc Lattesa
Acquisiz:
mov BufCount,#250 ; Inizializza BufCount per eseguire 250 acquisizioni
mov dptr,#Buffer
LoopAcq:
call ReadADC ; Il ciclo viene eseguito BufCount volte
movx @dptr,a ; I dati vengono registrati nella memoria esterna a
call RitAcq ; partire da Buffer
inc dptr
djnz BufCount,LoopAcq
jmp $ ; fine
;Subr.Ritardo acquisizione
RitAcq:
mov RitCount,#RAcquisiz
djnz RitCount,$
ret
;Subr.Inizializzazione
Init:
setb DATA_OUT
clr IO_CLOCK
clr CS
ret
;Subr.Lettura ADC
ReadADC:
clr CS
mov r0,#8
LReadADC:
mov c,DATA_OUT
rlc a
setb IO_CLOCK
clr IO_CLOCK
djnz r0,LReadADC
setb CS
mov ADCValue,a
ret
end