Peripheriesteuerung



  • Hallo,
    ich muss für die Uni folgende Aufgabe machen:
    Ein externes Sensor-Aktor-Modul (Hardwarebeschreibung siehe S.8) enthält 8 Schalter und 8
    Leuchtdioden. Ihr Programm soll ständig die aktuellen Schalterstellungen ermitteln und auf dem
    Bildschirm in folgender Form anzeigen (Beispiel entspricht Schalter 0,4,5,7 =1 und Schalter 1,2,3,6 = 0):
    1 0 1 1 0 0 0 1
    Gleichzeitig sollen die Leuchtdioden entsprechend der Schalterstellungen leuchten.

    einen Teil hab ich schon, aber das mit der Ausgabe aufm Bildschirm krieg ich net hin, vll hat jemand ne einfach lösung, muss das ganze dann auch noch erklären können 😞
    Vielen dank

    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<windows.h>

    unsigned char *GetAdress(int BUS, int Slot, int Function); // In BAS die Ad in der port zu finden ist
    void PCI_Close();

    //BAS= Basisadresse
    unsigned char *BAS; // * -> Zeiger, BAS speichert Adresse im RAM, in der Ad steht der eigentliche wert
    unsigned char daten; // char speichert 8 bit große werte
    unsigned char status;

    void main (void)
    {

    BAS=GetAdress(2,3,0); // Ermitteln der Speicherbasisadresse durch den Aufruf
    *(BAS+3)=0x98; //siehe control-register

    // Beginn Lesen

    *(BAS+2)=0; // auf PortC schreiben, Kommando 0 ausgeben; ()-> Wert wird geändert
    do
    {
    status=
    (BAS+2);
    status=status&0x10; // Bereinigter Status 0001 0000

    while (status!=0x00);
    *(BAS+2)=daten;

    *(BAS+2)=2; // Kommando 2 ausgeben

    status=*(BAS+2);
    status=status&0x10;

    while (status!=0x10);

    daten=*(BAS+0);
    }while(!_kbhit());

    // Beginn Schreiben
    (BAS+2)=0x00;
    do
    {
    status=
    (BAS+2);
    status=status&0x10;

    while (status!=0x00);
    *(BAS+1)=daten; // Ausgabsport B BAS+1

    *(BAS+2)=1; //LED setzen

    status=*(BAS+2);
    status=status&0x10;

    while (status!=0x10);
    }while(!_kbhit());

    PCI_Close();
    }



  • Wenn du die Zustände anstatt in einem char, in einem array von Bools speichern würdest, könntest du die einfach der Reihe nach ausgeben.

    Übrigens:
    Nutze bitte Codetags.

    void main()
    

    soltle

    int main()
    

    heißen


Anmelden zum Antworten