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 0000while (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