Misura della corrente di spunto del motore c.c. con scheda 8051

 Modulo tabella in Excel

;++++++++++++++++++++Analisi corrente di spunto 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