Hallo Micha!
Thema ALIAS:
ALIAS ist nur eine Compilerdirektive mit der Du einfach einen Alias-Namen vergeben kannst. Wenn Du es z.B. Leid bist immer PORTD.1 usw. zu schreiben dann ist es zum Verständnis im Code oft leichter richtige Namen zu vergeben.
Du kannst mit "Licht Alias Portb.1" dem Compiler sagen, dass Du zukünftig nicht Portb.1 schreibst sondern Licht. Passieren tut da zunächst nix! Der Compiler geht beim Compilieren des Codes hin und ersetzt wie in einem Preprozessor-Lauf alle Alias-Names durch die richtigen Inhalte. Bedeutet, zu Compilezeit wird im Code aus Deinem "Licht" wieder "Portb.1" verstanden.
Somit hat das ganze natürlich Auswirkung auf SET, RESET usw. Aus "SET Licht" wird "SET Portb.1" und damit wird das Bit von Portb.1 gesetzt usw. ALIAS ist nur ein Hilfsmittel!!!
Thema SET:
Mit Set kannst Du Bits in Variablen oder bei Ports setzen. Reset macht das Bit zu 0 und mit dem Befehl Toggle schaltest Du immer das jeweilige Bit auf den jeweils anderen logische Zustand.
Thema PIN und PORT:Bzgl. PIN und PORT hat Dir Dino schon eine Antwort gegeben. So wie in Assembler so ist das in BASCOM auch.
Grundregeln:
Eingaben macht man mit PIN, Ausgaben mit PORT.
Möchtest Du also ein Bit von einem Eingang lesen so muss das mit z.B. PINA.x passieren. Ein ganzer Port wird einfach mit "Variable = PINA" gelesen.
Möchtest Du auf einem Ausgang etwas ausgeben so muss das mit PORTA.x passieren. Ein ganzer Port wird mit "PORTA = variable" beeinflusst.
Achtung:
Du kannst auch auf einem Eingang mit PORTA etwas ausgeben!! Das ist Trickreich da genau in diesem UseCase mit Ausgabe von 1 der PullUp aktiviert und mit 0 deaktiviert wird.
You know, für Eingänge kann ein PullUp wahlweise zu oder abgeschaltet werden.
Du kannst auch einen Input-Pin mit Port lesen. Als Rückgabewert bekommst Du aber nur den Inhalt des Latch. Der Latch-Inhalt wird durch beschreiben mit Port gesetzt. Bei Ausgängen ist dies der Inhalt den Du ausgeben möchtest. Bei Eingängen ist es die PullUp Konfiguration. Wenn Du also einen Eingang mit Port liest so wirst Du immer das gleiche Ergebnis bekommen, nämlich den Inhalt den Du zuvor dort reingeschrieben hast.
Startup:
Wird der Controller neu gestartet sind alle PIN's während des Reset 3State und hochohmig (glaube ich zumindest).
Nach dem Reset sind alle PIN's zunächst als hochohmige Eingänge geschaltet mit aktivem PullUp. (glaube ich zumindest)
Wenn Du nun also einen Input-Port mit PORT liest (siehe oben) dann solltest Du zunächst lauter 1er bekommen (glaube ich zumindest).
Du siehst, es wird nicht einfacher aber die regeln sind logisch!
So, jetzt fehlt noch die gesamte Konfiguration.
Konfiguration:
- Mit "Config Portd = Input" konfigurierst Du einen gesamten Port als Eingang.
- Mit "Config Portb = Output" konfigurierst Du einen gesamten Port als Ausgang.
- Einen einzelnen Pin konfigurierst Du mit "Config Pinc.6 = Output" als Ausgang
- Einen einzelnen Pin konfigurierst Du mit "Config Pinc.6 = Input" als Eingang. -- Auch hier ist ggf. der PullUp wieder zu berücksichtigen.
So, und wenn Du das noch mit ALIAS zusammen machst dann wird Dein Code auch richtig lesbar da Du dann zu jeder Zeit an jeder Stelle des Codes weißt, was hinter Portg.2 steckt. Solltest Du Dir aber einfallenlassen anstelle von "für sich selbst sprechenden" Alias-Namen nur Abkürzungen wie A und B und xyz zu verwenden, dann bleib lieber bei den HW-Ressourcen wie PORTF.4
Ich hoffe es ist jetzt klarer geworden und nicht noch komplizierter, weil das ist es nicht! Ich hoffe ich konnte für Klarheit sorgen und nicht zur Verwirrung beitragen.
Grüße,
Markus