EA=1; EADC=1;
// globalne zezwolenie obsługi przerwań // zezwolenie obsługi przerwań przetwornika ADC
TR2=1; // zezwolenie na prace licznika L2
// Trwa konwersja i przesyłanie danych DMA
// kiedy transmisja DMA jest kompletna, przetwornik ADC generuje
// przerwanie i zeruje bit C
while (C);
// wynik przetwarzania ADC jest juz dostępny w RAM EA=0; // wstrzymana obsługa przerwań - globalnie
EADC=0; // wstrzymana obsługa przerwań od przetwornika A/C
ADCCON1 =0x00; // zasilanie przetwornika wyłączone
for(i=0; i<=DMACOUNT; i++) { // wydruk kontrony zawartości pamięci RAM
if (i % 8== 0) printf("\n"); printf("%3d=%04X", i, DMASTART[i]);
// wydruk kontrolny w postaci słupka danych
for(i=0; i<=DMACOUNT; i++) printf("\n%4u ", DMASTART[i] & 0x0FFF ); printf("\n");
IT0=1; // zezwolenie na obsługę przerwania 0
EA=1; // zezwolenie na obsługę przerwań
EX0=1; // zezwolenie na obsługę przerwania zewnętrznego INTO (przycisk)
printf("\nCzekam na INT0\n"); //Test przetwarzania w trybie pojedynczej konwersji A/C
while(1) {
for (i=0; i<30000; i++); // opóźnienie programowe
LED = ~LED ;} // negacja stanu wysterowania diody LED na przeciwny
// KONIEC
(panel hyperterminala)
TESTOWANIE PRZETWORNIKA A/C
Wprowadź numer kanału przetwarzania A/C (0-15): ?0 Podaj liczbę próbek sygnału pomiarowego DMACOUNT: ?128 Wybrałeś kanał nr=0 i N=128 próbek sygnału badanego
0=0000 1=0000 2=0000 3=0000 4=0000 5=0000 6=0000 7=0000
8=0000 9=0000 10=0000 11=0000 12=0000 13=0000 14=0000 15=0000
118=0000 119=0000 126=0000 127=0000
6=02E4 7=029D
14=0271 15=02B1
112=0000 113=0000 114=0000 115=0000 116=0000 117=0000 120=0000 121=0000 122=0000 123=0000 124=0000 125=0000 128=F000
0=05C9 1=0535 2=04A7 3=0424 4=03AB 5=033F
8=0262 9=0236 10=021B 11=020A 12=0220 13=0242
120=038C 121=0400 122=0482 123=050E 124=05A1 125=0639 126=06D3 127=0000 128=F000 1154
1294
1441
1593
1747
Czekam na INTO
Temperatura binarnie = 1064 bit Temperatura binarnie = 1064 bit Temperatura binarnie = 1064 bit