Ich nehm an, daß dir die Sache mit den Interrupts noch nicht in allen Details klar ist.
Der Ablauf beim adc-lesen ist folgender (schematisch):
1 Einstellen der Kanalnummer
2 Start der Messung
3 Warten auf Fertigwerden
4 Lesen des Ergebnisses
Durch den Interrupt kann Punkt 3 entfallen, den die ISR-Routine wird genau nach Fertigwerden der Messung automatisch aufgerufen.
So, wie dein Programm abläuft, kann ich dir nur raten, das Ganze Interrupt-Zeugs zu knicken. Denn ob du "idle" sagst oder gleich direkt auf das Ready-Bit wartest, ist zeitmäßig Jacke wie Hose, aber wesentlich leichter zu beherrschen.
Empfehlung:
Code:
Start Adc
Do
Cls
Dval_1 = Getadc(0)
Call Calcultemp(resulttemp , Dval_1) 'print UART valeur
Print "11 " ; Fusing(resulttemp , "##.# ")
Locate 1 , 1
Lcd "Temperature =" ; Fusing(resulttemp , "##.# ")
Dval_2 = Getadc(2)
Call Calculpress(resultpress , Dval_2)
Print "22 " ; Fusing(resultpress , "##.#")
Locate 2 , 1
Lcd " Pression =" ; Fusing(resultpress , "##.#")
Waitms 500
Loop
End
Lesezeichen