


;Etichette CS equ P1.0 CLK equ P1.1 DOUT equ P1.2 org 8200h init: setb CS clr CLK setb DOUT main: call lettadc mov 10h,a jmp main ;++++++++++++++ Subroutine lettura ADC seriale TLC548 ++++++++++++++++++++++++ ;Il valore letto ritorna sul registro A lettadc: mov r0,#8 clr CS
loopcv: mov c,DOUT rlc a setb CLK clr CLK djnz r0,loopcv setb CS ret end


Realizzare un software in
assembler che registri in memoria esterna della scheda 8051 la riposta in tensione
del quadripolo RC in funzione di un'onda quadra 0..5V applicata all'ingresso.
L'onda quadra deve essere riprodotta dall'uscita P1.3 tramite software, scegliere
le tempistiche giuste per effettuare la registrazione della risposta nell'intero
periodo dell'onda quadra con 200 campioni.
Carica e scarica del condensatore devono essere complete.
Prelevare i dati registrati tramite l'apposito tool su DB8051 ed inserirli su foglio elettronico e riprodurre il grafico dell'andamento della tensione di uscita in funzione del tempo.
Rilevare il tempo di campionamento
tramite oscilloscopio misurando il semiperiodo di P1.7 il quale dovrà essere
complementato via software prima o dopo la chiamata della subroutine di
ritardo campionamento (rit_cp).
N.B per ottenere una lettura stabile occorre eseguire il loop di acquisizione
all'infinito.
Individuare sul grafico la costante di tempo e verificarne l'esattezza con i calcoli teorici
Ripetere i punti precedenti scambiando
il condensatore con la resistenza.

;Etichette
CS = P1.0
CLK = P1.1
DATA = P1.2
QUADRA = P1.3
BUFFER = 9000h
NCAMP_SP = 100
org 8200h
;+++++++++++++++++++ Inizializzazione ++++++++++++++++++++++++
init:
setb CS
clr CLK
setb DATA
clr QUADRA ;Metto
a zero l'ingresso dell'RC
call rit_start ;ed aspetto la scarica
di C
mov dptr,#BUFFER
main:
mov r1,#NCAMP_SP
call lettadc
setb QUADRA
call lettadc
;+++++++++++++++++++ Acquisizione Vc di carica ++++++++++++++++++++++++
alto:
call lettadc
movx @dptr,a
inc dptr
call rit_cp
djnz r1,alto
mov r1,#NCAMP_SP
clr QUADRA
;+++++++++++++++++++ Acquisizione Vc di scarica ++++++++++++++++++++++++
basso:
call lettadc
movx @dptr,a
inc dptr
call rit_cp
djnz r1,basso
;+++++++++++++++++++ stop ++++++++++++++++++++++++
jmp $
;+++++++++++++++++++ Ritardo per scarica condensatore ++++++++++++++++++++++++
rit_start:
ret
;+++++++++++++++++++ Ritardo di campionamento+++++++++++++++++++++++++++++++++
rit_cp:
ret
;++++++++++++++ Subroutine lettura ADC seriale TLC548 ++++++++++++++++++++++++
;Il valore letto ritorna sul registro A
lettadc:
mov r0,#8
clr CS
loopcv:
mov c,DATA
rlc a
setb CLK
clr CLK
djnz r0,loopcv
setb CS
ret
end