hi, ich hab ein kleines problem mit der kompilierung von c-code mit dem kompiler gcc. das programm funktioniert so wie es hier ist unter windows einwandfrei (da kompiliert mit MS-VC++ !!) nur unter linux (suse 7.0) macht die kompilierung probleme. das programm steuert ein 2x20 display an. kompilierungsfehler im asm-teilstück...
kann mir da jemand weiterhelfen ?
gruß vb60freak
Quellcode:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <tchar.h>
unsigned char ContrPort;
void delay(int milliseconds){
int i;
for ( i = 0; i < 40000; i++ )
{}
}
void Out32(short PortAddress,unsigned char Value){
__asm{
push dx
mov dx,PortAddress
mov al,Value
out dx, al
pop dx
}
}
void SendLCD(unsigned char Bit){
//{sequenzielles der 8-bit daten, instructionscodes über Strobe-Leitung (Hardware)
// Zeitverzögerung zur Anpassung des PCs an die Geschwindigkeit des LCD-Displays}
Out32(888,Bit);
delay(1);
Out32(890,ContrPort); //Strobe toggeln
delay(1);
Out32(890,ContrPort+1); //Strobe toggeln
delay(1);
}
void init(void){
//{Initialisierung des Displays}
ContrPort=10; //Commands Set
SendLCD(48); //Set
delay(5); //Warten > 4.1ms
SendLCD(48); //Set
delay(1); //Warten >100us
SendLCD(48); //Set
SendLCD(56); //8 bit
SendLCD(8); //Set_Display + Cursor_Off + Blink_Off
SendLCD(1); //Clear Display
SendLCD(6); //Set_Entry_Mode + Increment_Address + Shift_Display_Off
SendLCD(12); //display ON, cursor OFF, blink Off
ContrPort=14; //Data Set
}
void write(char tl1[40],char tl2[40]){ //Displaydaten aufbereiten > in Variable sammeln und in einzelne Chars vereinzeln
int LCDCode, Zaehler, Zaehler2, tl1len, tl2len ,x;
char LCDDaten[80];
init(); //Initialisierung des Displays
Zaehler = 0;
Zaehler2 = 0;
x=0;
tl1len = strlen( tl1 );
tl2len = strlen( tl2 );
while( Zaehler != (tl1len)) {
LCDDaten[Zaehler] = tl1[Zaehler];
Zaehler++;
}
while( Zaehler != 40) {
LCDDaten[Zaehler] = ' ';
Zaehler++;
}
while( Zaehler2 != (tl2len)) {
LCDDaten[Zaehler] = tl2[Zaehler2];
Zaehler++;
Zaehler2++;
}
while( Zaehler2 != 40) {
LCDDaten[Zaehler] = ' ';
Zaehler2++;
Zaehler++;
}
Zaehler = 0;
while( Zaehler < 80) {
LCDCode = __toascii( LCDDaten[Zaehler] ); //Daten für Display aufbereiten ASCII > 8-bit
SendLCD(LCDCode);
Zaehler++;
}
}
void main(void){
write("Hallo Welt !"," ");
}
[CODE]
Lesezeichen