134
■
13. Pr?ct\vomik analogowo-cyfrow) w mikrokontrolerze SAB 80515 53$
-» najkrótsza instrukcja, np. przesłania wyniku pomiaru do akumulatora A (MOV A,ADDAT) wykonywana jest w 1 cyklu maszynowym. Znacznik przerwania IADC w rejestrze IRCON (o adresie OCOh) musi być kasowany programowo w trakcie obsługi przerwania.
Cykle
maszynowe 1 2 3 4 5 6 7 8 9 10 11 12 13
I I I I I I I I II I I I II I I
—L
BSY
1 |
<r |
MOV DAPR,#xx |
—>
'c
Przerwanie IADC=1
->
Wynik do ADDAT - -1
Rys. 13-6 Zależności czasowe w trakcie pracy przetwornika analogowo-cyfrowego w mikrokontrolerze SAB 80C515/535.
• przetwornik zgłasza zakończenie przetwarzania ustawiając znacznik stanu przetwarzania BSY w stan zera logicznego 2 cykle maszynowe przed zakończeniem przetwarzania; taka sytuacja wynika z faktu, że w programie do testowania znacznika BSY i pobrania wyniku przetwarzania wykorzystywane są najczęściej instrukcje:
Czekaj JB BSY,Czekaj ;jeśli BSY = 1 to skok do adresu Czekaj
MOV A,ADDAT ;A <- (ADDAT)
Czas pierwszej instrukcji wynosi 2 cykle maszynowe, a drugiej 1 cykl maszynowy
• wynik przetwarzania wpisywany jest do rejestru ADDAT w pierwszej części ostatniego cyklu maszynowego, cyklu, w którym w jego drugiej części może być pobrana zawartość jednego z podanych rejestrów, np-MOV A,ADDAT. Ta dwu bajtowa instrukcja wykonywana jest w ciągu jednego cyklu maszynowego.
V\Pvnik przetwarzania analogowo-cyfrowego dostępny jest po zakończonym pomiarze w rejestrze ADDAT (A/D converter DATa register):
ADDAT rejestr wyniku przetwarzania (adres 0D9h), rw-Q0:
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
LSB
MSB
13, Przetwornik analogowo-cyfrowy w mikrokontrolerze SAB 80515/535
135
ponieważ wynik pomiaru uaktualniany jest po każdym pomiarze, dlatego w trakcie wykonywania serii pomiarów wynik poprzedniego przetwarzania zastępowany jest następnym wynikiem. Jeśli po zgłoszeniu gotowości przez przetwornik, przez przerwanie lub przez testowanie znacznika BSY, nie zostanie pobrany wynik pomiaru, to wynik ten jest tracony.
jeśli przetwornik analogowo-cyfrowy nie jest wykorzystywany to rejestr ADDAT może służyć jako rejestr ogólnego przeznaczenia.
Należy wykonać 5 pomiarów napięcia Ux dołączonego do kanału AN2 zmieniającego się w zakresie 0..+3V testując znacznik stanu przetwornika BSY. Wyniki pomiarów przesłać do wewnętrznej pamięci RAM od adresu 3Bh. Przykładowy program jest następujący:
A C Pomiar:
MOV |
R0,#3Bh |
;R0 3Bh, rejestr R0 adresuje | |
MOV |
R7,#5 |
; wewnętrzną pamięć RAM ;R7 <— 5, rejestr R7 jest licznikiem ; J pomiarów O 71 Ó | |
;rejestr ADCON: | |||
t |
0 |
|0|0 |
BSY | ADM MX2 | MX1 | MX0 |
MOV |
ADCON,#0000 101 Ob |
;ADM <— 1, praca ciągła | |
;MX2, MX1, MX0 OlOb, kanał AN2 | |||
;rejestr DAPR: |
/Ót> |
Op | |
t |
1 i |
| 0 I 1 |
0 i 0 I 0 I 0 I 0 |
MOV DA PR,#1010 OOOOb ;DAPR7 4 <- lOlOb
;górna wartość napięcia podzakresu pomiarowego VjntĄppp - 3.125 V, ;DAPR3..0 <- OOOOb
;dolrta wartość napięcia podzakresu pomiarowego VIntAGND = 0 V, ;wpis dowolnej wartości do DAPR rozpoczyna przetwarzanie,
;znacznik stanu przetwornika BSY = 1
Czekaj:
JB BSY,Czekaj
MOV @R0,ADDAT
INC R0 DJNZ R7,Czekaj
ANL ADCON,#l 111 Olllb
;jeśli BSY = 1 to skok do etykiety ; (adresu) Czekaj
;(R0) <- (ADDAT), przesłanie wyniku ;pomiaru do wewnętrznej pamięci RAM ;R0 <- R0 + 1
;R7 <— R7 -1, jeśli R7 to skok do ;etykiety (adresu) Czekaj,
; wykona nie następnego pomiaru ;ADM <- 0, koniec serii pomiarów