Hallo
bin hier gerade in der Arbeit und versuche auch schon seit ein paar Tagen ein Anag Vision AV2020 Display anzusteuern. bzw. zuersteinmal initialisieren damit es 2 Zeilen bekommt. Aber ich weiß einfach nicht weiter.
Habe mit ein paar Beispielprogrammen (welche allerdings auch nicht funktionieren) und dem Datenblatt mein eigenes Programm zusammengebastelt.
ist sehr viel falsch oder warum geht nichts?
bin hier gerade in der Arbeit und versuche auch schon seit ein paar Tagen ein Anag Vision AV2020 Display anzusteuern. bzw. zuersteinmal initialisieren damit es 2 Zeilen bekommt. Aber ich weiß einfach nicht weiter.
Habe mit ein paar Beispielprogrammen (welche allerdings auch nicht funktionieren) und dem Datenblatt mein eigenes Programm zusammengebastelt.
#include <dos.h>
#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
#include "TCPIPAPI.H"//für Warteschleidr API_SLEEP
static union REGS rein;//für Softwareinterrupts werden Datensätze benötigt,
static union REGS raus;//die später die Register des Prozessors beeinflussen
//die beiden Datensätze rein und raus werden
//hier definiert
#define TCPIPVECT0xAC //definiert einen Softwareinterrupt
#define Ausgang0x600//0X600 ist die Hardwareadresse der Ausgabekanäle
void warte(int ms);//kündigt ein Unterprogramm "Warteschleife" an
int main()
{
// Damit man folgendes Programm nachvollziehen kann, muss man die Wertigkeit
// der einzelen Bits am LCD-Display kennen. Das LCD-Display soll im Beispiel im
// 4-Bit-Daten-Modus betrieben werden.
// Die Bedeutung der einzelnen Bits im Betriebsartenmodus können in der Unterlage
// "Hardwarenahme Schnittstellenprogrammierung" (s.Seiten 25-27) nachgelesen werden
//Ausgänge initialisieren // Damit wird über den PCS6(Programable Chip Select)
rein.h.ah=0x83; // der "Ein- Ausgabe-Baustein" freischaltet
rein.x.dx=0x40; //
int86(0xA2,&rein,&raus);
warte(15);
// outportb(0x600, 0x31);
// warte(5);
outportb(0x600, 0x3);
// warte(5);
// outportb(0x600, 0x31);
warte(5);
outportb(0x600, 0x3);
// warte(5);
// outportb(0x600, 0x31);
warte(5);
outportb(0x600, 0x3);
warte(5);
outportb(0x600, 0x21);
warte(5);
outportb(0x600, 0x20);
warte(5);
outportb(0x600, 0x21);
warte(5);
outportb(0x600, 0x20);
warte(5);
outportb(0x600, 0x81);
warte(5);
outportb(0x600, 0x80);
warte(5);
outportb(0x600, 0x01);
warte(5);
outportb(0x600, 0x00);
warte(5);
outportb(0x600, 0xC1);
warte(5);
outportb(0x600, 0xC0);
warte(5);
outportb(0x600, 0x01);
warte(5);
outportb(0x600, 0x00);
warte(5);
outportb(0x600, 0x11);
warte(5);
outportb(0x600, 0x10);
warte(5);
outportb(0x600, 0x01);
warte(5);
outportb(0x600, 0x00);
warte(5);
outportb(0x600, 0x41);
warte(5);
outportb(0x600, 0x40);
warte(5);
outportb(0x600, 0x45);
warte(5);
outportb(0x600, 0x44);
warte(5);
outportb(0x600, 0x15);
warte(5);
outportb(0x600, 0x14);
return 0;
}
//Unterprogramm(e)
//Programm für Wartezeit
void warte(int ms) //Warteschleifenprogramm ist ein Softwareinterrupt
//und wird hier eigentlich nur initialisiert
{
rein.h.ah = API_SLEEP;
rein.x.bx = ms;//Zeitangabe in ms
int86(TCPIPVECT,&rein,&raus);
}
ist sehr viel falsch oder warum geht nichts?