PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bascom ddra selektiv einstellen



kolisson
26.11.2006, 15:56
mal wieder ne kurze frage in die runde gestreut:

wenn man die data-direction-regiuster des atmega unter bascom einstellen will nimmt man ja folgenden befehl:

Ddrc = &B11111111 in entprechneder einstellung

gibt es eine möglichkeit z.b. nur die sagen wir mal pins 7 und 6 zu manipulieren, die anderen pins eines ports jedoch so zu belassen, wie sie sind.. ohne abzufragen wie sie nun sind.

ich meine da so etwas in der art:

Ddrc = &B11xxxxxx

danke schonmal

PicNick
26.11.2006, 16:11
1 Um die beiden zu löschen
DDRC = DDRC AND &H3F
2 jetzt sind die beiden auf Input
DDRC = DDRC OR &H40
setzt .6 auf output
DDRC = DDRC OR &H80
setzt .7 auf output

kolisson
26.11.2006, 16:21
okay .. danke
ich hatte die kleine hoffnung, dass man das mit den x-en machen kann. wäre ja schön übersichtlich.

gruss

recycle
26.11.2006, 16:26
Wo PicNick schon mal da ist ;-)

Wäre Ddra = Ddra or &B11000000 nicht dasselbe (in übersichtlich) und die Befehle:
Config Porta.6 = Input
Config Porta.7 = Input
führen auch auf dasselbe hinaus?

In fast jedem Bascom Beispiel wird es irgendwie anders gemacht. Meist kopiere ichs ohne drüber nachzudenken. Rein zufällig habe ich gestern aber auch mal drüber nachgedacht, wo eigentlich die Vorteile der verschiedenen Varianten sind, bzw. ob sie überhaupt gleichwertig sind.

PicNick
26.11.2006, 16:44
Du hast recht, wenn er beide unbedingt auf output setzen will.
Aber wenn er nicht weiß, was drin steht, und er will einen Pin unabhängig auf Input stellen, geht das wieder nicht.
DDRA = DDRA OR &B01000000 für Output und
DDRA = DDRA AND &B10111111 für Input

Ich würde, wenn ich schon eine Hochsprache verwende (Bascom), nach möglichkeit auch dabei bleiben.
CONFIG Pina.x = INPUT /OUTPUT
Aber klar, wenn man alle Pins runterdefinieren muß, braucht das mehr space und mehr Code-zeilen.

Ist die übliche Kluft zwischen Schönheit und Praxis.

Ein Argument für "wenn BASCOM, dann CONFIG " ist:

Wird das Programm für einen Prozessior verwendet, wo das DDRx genau umgekehrt funktioniert (also 1 für input, 0 für output) brauch ich mich nicht drum zu kümmern und das Programm kann ich ungeschaut jedem für jeden Prozessor verkaufen, wo bascom läuft.
Setze ich meine Bits zu Fuß, muss ich selber schauen, wo ich bleibe.

Wirklich unsauber wird das dann, wenn ich mische (imho)
Aber Gott, was soll's