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
Lesezeichen