Herunterladen Diese Seite drucken

Read_Port_X, Write_Port_X; Read_Register_X; Listing 4: Beispielimplementierung Der Read_Register_Uchar Funktion - B&R APC910 Implementierungsanleitung

Werbung

APC910 / PPC900
Implementierungsanleitung

6.4 READ_PORT_x, WRITE_PORT_x

Sie müssen die in den Codebeispielen enthaltenen READ_PORT_x und WRITE_PORT_x Funktionen
durch die entsprechenden I/O Port Zugriffsfunktionen Ihrer Entwicklungsumgebung ersetzen.
Beispiel für Implementierung der READ_PORT_x und WRITE_PORT_x Funktionen mit inp und outp
(z.B. für MS-DOS):
//
// I/O port access functions.
//
#define READ_PORT_UCHAR(port) inp(port)
#define WRITE_PORT_UCHAR(port, value) outp(port, value)
#define READ_PORT_USHORT(port) inpw(port)
#define WRITE_PORT_USHORT(port, value) outpw(port, value)
typedef union
{
unsigned long ldata;
unsigned char bdata[4];
} BYTES_AND_LONG;
// Read unsigned long value from I/O port.
unsigned long READ_PORT_ULONG(unsigned short port)
{
BYTES_AND_LONG data;
data.bdata[0] = inp(port++);
data.bdata[1] = inp(port++);
data.bdata[2] = inp(port++);
data.bdata[3] = inp(port++);
return data.ldata;
}
// Write unsigned long value to I/O port.
void WRITE_PORT_ULONG(unsigned short port, unsigned long value)
{
BYTES_AND_LONG data;
data.ldata = value;
outp(port++, (unsigned)data.bdata[0]);
outp(port++, (unsigned)data.bdata[1]);
outp(port++, (unsigned)data.bdata[2]);
outp(port++, (unsigned)data.bdata[3]);
}
Listing 3: Beispielimplementierung der READ_PORT_x und WRITE_PORT_x Funktionen

6.5 READ_REGISTER_x

Sie müssen die in den Codebeispielen enthaltene READ_REGISTER_x Funktion durch die entsprechen-
de Speicherzugriffsfunktion Ihrer Entwicklungsumgebung ersetzen.
Beispiel für Implementierung der READ_REGISTER_x Funktionen für MS-DOS:
// Convert linear address into segment offset address
// for example 000F0000h -> F000:0000
unsigned char READ_REGISTER_UCHAR(unsigned long Register)
{
return *(char far*)(((Register & 0xFFFF0000) << 12) + (Register & 0x0000FFFF));
}

Listing 4: Beispielimplementierung der READ_REGISTER_UCHAR Funktion

Copyright © B&R - Änderungen vorbehalten
APC910_PPC900_Implementierungsanleitung_V2_00.docx
Codierhinweise
17.01.14
57/165

Werbung

loading

Diese Anleitung auch für:

Ppc900