hi,
also ich programmiere mit assembler.
aber um die ganzen fragen zu beantworten kann ich euch ein programm-beispiel zeigen bei dem des nicht funktioniert.
Code:list p=18f4525 #include <P18f4525.INC> __config _CONFIG2L, _PWRT_ON_2L __config _CONFIG2H, _WDT_OFF_2H __config _CONFIG1H, _OSC_HS_1H __config _CONFIG4L, _LVP_OFF_4L & _ENHCPU_OFF_4L movlw B'00000001' movwf TRISB movlw B'00001111' ; analoge Eingänge ausschalten movwf ADCON1 clrf PORTB clrf LATB clrf TRISD clrf PORTD clrf LATD clrf statenew2 ; Speicherzelle leeren clrf stateold2 ; Speicherzelle leeren main movlw D'0' ; Zahl 0 in Arbeitsspeicher btfsc PORTB,0 ; Falls PORTD,7 auf LOW, dann überspringe nächsten Befehl movlw D'1' ; Zahl 1 in ARbeitsspeicher movwf statenew2 ; Zahl 0 oder 1 in Speicherzelle aus Arbeitsspeicher kopieren xorwf stateold2,0 ; Arbeitspeicher mit neuem Zustand mit Speicherzelle mit altem Zustand vergleichen btfss STATUS,Z ; Falls beide Zustände gleich dann überspringen nächsten Befehl call savestate2 ; Routine aufrufen goto main savestate2 movff statenew2,stateold2 ; Jetzigen Zustand speichern, für später zum Vergleich btfss statenew2,0 bcf PORTD,5 btfsc statenew2,0 bsf PORTD,5 return end
hier in dem beispiel wird nichts anderes gemacht als wenn ein signal empfangen wird einfach weiterzuleiten.
des mit dem timer und speichern habe ich alles rausgenommen.
woran könnte es jetzt noch liegen.
obwohl ich langsam glaube dass man da gar nichts von aussen, also an der elektronik entstören müsste weil ich mir so schaltpläne von RS232 schnittstellen angeschaut habe und da ist auch nichts entstört.
also muss es etwas ganz blödes kleines sein.
mfg
pitt







Zitieren

Lesezeichen