PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gößer / Kleiner Vergleich mit C515C-L



Mr Bean
10.01.2007, 12:31
Hallo

Habe da ein Problem, ich soll für die Schule einen analogen Wert einlesen und mit dem AD Wandler wandeln. Soweit so gut, das Funktioniert auch schon. Jetzt soll ich den Wert je nachdem ob er größer als 2,5V ist ein P0rt 5 oder kleiner als 2,5V an Port 4 augeben? wie bekomme ich das am besten hin? Also wie gesagt, die Wandlung funktioniert schon und ich kann den Wert auch an einem Port ausgeben.
Nur das mit größer oder kleiner 2,5V fehlt mir noch und ich hab echt keine Idee... 8-[

Wäre euch sehr dankbar für schnelle Hilfe!!

Grüße!!!

Bean

gunzelg
10.01.2007, 17:02
Ich nehme an, dass du in Assembler programmierst. Ich kenne die Asemblersyntax des C515 nicht, aber grundsätzlich wird entweder verglichen oder subtrahiert. Bei der Subtraktion wird das zero- und das carry-Flag beeinflusst. Dann gibts einen bedingten sprung. So kann man das lösen.

gerhard

Mobius
10.01.2007, 18:16
Erlich gesagt, kenn ich nciht einmal den Chip selber :). Doch wenn du in Assembler programmierst und der Chips selber über kein Befehl für einen Vergleich verfügt (ansonsten würdest du, denk ich mal, nicht fragen), ist es eigentlich programmiertechnisch nicht sehr schwierig, man muss nur, wie schon gunzelg gesagt hat, die Substraction und dessen Beeinflussung des Flag-Registers ausnutzten.

Hier (http://www.piclist.com/techref/microchip/compcon.htm) hab ich einen Link, wo mMn sehr gut erklärt wird, wie man so einen Vergleich anstellt, auch wenn der Code für die µC der PIC16-Reihe geschrieben ist.

Den ganzen Vorgang könnte man so in Pseudocode stillisieren:
-) lade den Wert für 2,5V in einen Register A
-) subtrahiere diesen von dem Messergebniss, speichere das Ergebniss wieder in Register A (damit das Messergebniss nicht verfälscht wird)
-) Schau den Carry-Flag an, ist der gesetzt, ist das Ergebnis < 2,5V.

Anschließend musst du in deinem Programm nur noch einen bedingten Sprung einbauen, der bei einem gesetzten Carry-Bit aktiviert wird.

MfG
Mobius

kalledom
11.01.2007, 08:58
Der 515 sollte einen CMP-Befehl haben, der nach einer Subtraktion das Z- und C-Flag verändert, die Register-Werte jedoch nicht.
Wenn die 2,5V die Hälfte der zu messenden Spannung sind, also 5V, dann kann auch das höchstwertige Bit der AD-Wandlung zum Verzweigen genutzt werden; das ist ab 2,5V auf 1.
Nach dem Verzweigen wird das gewünschte Port gesetzt und evtl. das andere Port gelöscht.

Mr Bean
13.01.2007, 10:36
Hallo

Danke für die Antworten. Ich werde das mal ausprobieren, aber ich denke daß ich das jetzt hinbekomme. Also vielen Dank nochmal! Ist übrigens ein Prozessor von Infineon. Für alle die den nicht kennen... O:)

Schönes Wochenende noch!!

Grüße!!
Bean