Hallo zusamnen Ich habe hier ein Programm mit dem man über ein Terminalprogramm eine LED mit "e" einschaltet und mit "a" ausschlten kann. Mein Problem ist das es nicht mit dem Terminalprogramm geht. Was muss man vllt ändern im Programm selbst oder vllt auch im Term-Programm. Verwendete Hardware: - myAVR Board Light USB - Terminalprogramm: TeraTermPro hier das Programm: rjmp main ;1 POWER ON RESET reti ;2 Int0-Interrupt reti ;3 Int1-Interrupt reti ;4 TC2 Compare Match reti ;5 TC2 Overflow reti ;6 TC1 Capture reti ;7 TC1 Compare Match A reti ;8 TC1 Compare Match B reti ;9 TC1 Overflow reti ;10 TC0 Overflow reti ;11 SPI, STC Serial Transfer Complete reti ;12 UART Rx Complete reti ;13 UART Data Register Empty reti ;14 UART Tx Complete reti ;15 ADC Conversion Complete reti ;16 EEPROM Ready reti ;17 Analog Comparator reti ;18 TWI (I²C) Serial Interface reti ;19 Store Program Memory Ready ;----------------------------------------------------------------------- - ;Start, Power ON, Reset main: ldi r16,hi8(RAMEND) out SPH,r16 ldi r16,lo8(RAMEND) out SPL,r16 sbi UCSRB,3 sbi UCSRB,4 ldi r16,23 ;Baudrate 3686400/(9600*16) -1 out UBRRL,r16 sbi DDRD,0 ;----------------------------------------------------------------------- - mainloop: rcall getChar ;getChar aufrufen rcall putChar ;putChar aufrufen cpi r16,'e' ;Vergleiche r16 mit e breq LEDan ;wenn gleich LEDan aufrufen cpi r16,'a' ;Vergleiche r16 mit a breq LEDaus ;wenn gleich LEDaus aufrufen rjmp mainloop ;springe zu mainloop ;----------------------------------------------------------------------- - putChar: sbis UCSRA,5 ;überspringt den nechsten Befehl wenn UDRE leer (1) ist rjmp putChar out UDR,r16 ;Inhalt von r16 in UDR schreiben ret ;zum Programm zurückkehren getChar: sbis UCSRA,7 ;überspringt den nechsten Befehl wenn ungelesen Daten im ;Empfangsregister liegen (RXC=1) rjmp getChar in r16,UDR ;Inhalt von UDR ins r16 kopieren ret ;zum Programm zurückkehren LEDan: ldi r16,0b00000100 out PORTD,r16 ret LEDaus: ldi r16,0b00000000 out PORTD,r16 ret Wäre schön wenn ihr mir dort weiterhelfen kann! mfg
:
Verschoben durch Admin
>sbi DDRD,0 >ldi r16,0b00000100 Passt nicht zusammen. >sbi UCSRB,4 ldi, Konstanten und binäres ODER nutzen!
Also ich weiß das das Probgramm bei anderen Leuten funktioniert. Die haben allerdings das Serielle Board oder das MK2 mit der steckbaren USB-Karte. Liegt das wirklich an den Befehlen die du geschrieben hast?
Du kannst kein Wort Assembler, richtig? Wenn du die Sprache gerade lernst, an dem Programm ist einiges zu verbessern. Kommen die eingegebenen Zeichen zurück? Ich meine Vermutung von oben stimmt würde eine kurze Simulation klären, aber ich hab gerade was anderes zu tun.
Sorry:
> Ich meine Vermutung von oben stimmt
Ob meine Vermutung...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.