hallo

habe jezt mal geschaft bites zu empfangen, aber ich verstehe die "pin belegung" nicht

also

ich habe mir ein programm geschrieben mit 3 edit feldern
und mit inp(0x37; inp (0x379); inp(0x37a);
die durch ein timer alle paar msec eingelesen werden, mit einen button setze ich mit out(0x378,0); out(0x379,0); out(0x37a,0); alle pins auf 0.
mein plan war der das ich mit einen draht an den pins rumbore und dann sehe ob was geschied so am anfang habe ich noch ein netzteil mit 5v und einen vorwiederstand von 500ohm benutst, aber dann habe ich gesehen das man nur pins verbinden muss so ergibt zum beispiel von inp(0x37a); 1 bite wenn man pin 1 und einen der masse pins verbindet
man erhält 2 bite wenn man pin 14 und einen der masse pins verbindet
wenn man pin 1 und 14 mit masse verbindet bekommt man 3 bite
8 bite gibt es auch aber keinen "4 bite pin"

mit inp(0x379); merkwürdiger weise kann man den ausgansgswert nicht mit outp(0x379,0); auf 0 setzen, also ist das ausgangsignal immer 120, wenn man dann einige pins mit masse verbindet geht der wert entweder runter oder hoch

inp(0x37; sagt nix aber das sind ja auch die daten leitungen die anscheinend nur als eingang nutsbar sind


Code:
//-----------------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#define LPT 0x378
#include "Unit1.h"
//-----------------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1*Form1;

//==============================================
void outp (unsigned int portadr, unsigned char value)
{
 _asm mov edx,portadr
 _asm mov al, value
 _asm out dx,al
}
//==============================================
unsigned char inp(unsigned int portadr)
{
 unsigned char value;
 _asm mov edx,portadr
 _asm in al,dx
 _asm mov value,al
 return(value);
}
//-----------------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
            ::TForm(Owner)
{
}
//-----------------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObjekt *Sender)
{
 outp(0x378,0);
 outp(0x379,0);
 outp(0x37a,0);
}
//-----------------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 int status, status1, status2;
 
 status=inp(0x37a);
 Edit1->Text=IntToStr(Status); 
 
 status1=inp(0x378);
 Edit2->Text=IntToStr(Status1);

 status2=inp(0x379);
 Edit3->Text=IntToStr(Status2);
}
//-----------------------------------------------------------------------------------
ich übernehme keine haftung für den quelltext, wenn hardware oder sonstigen schäden entstehen

kann mir jemand erklären wieso es sokomische "pin brücken" gibt und wo der "4 bite pin" von der controll-register steckt?

wenn du nicht ca 15 taster einbauen willst, können wir damit was anfangen

Edit:
so sorry habe die beiträge und den link noch nicht gelesen, also der "4 bit pin" (ich sollte mir diesen begriff patentieren lassen) ist anscheinend der nicht invertierte
und die 120 in der status anzeige von dem status register könnte auch von dem invertierten pin kommen, aber es müssten doch dann eigendlich 128 stehen oder?
ahm zu den fehler, der wird woll an den asm befehlen liegen, hast du conio.h include, auch wenn er nichts mit den asm befehlen zu tun hat?