Gast
#628358
Moin, ich hab da ein Problem mit meinen Programm, aus irgendeinen Grund funktioniert das nicht so wie es soll. 1..include "include/m32def.inc" 2..def temp0 = r16 3..def temp1 = r17 4..def temp2 = r18 5. 6. ldi temp0, LOW(RAMEND) 7. out SPL, temp0 8. ldi temp0, HIGH(RAMEND) 9. out SPH, temp0 10. 11. ldi temp0, 0xFF 12. out DDRA, temp0 13. 14. ldi temp1, 0x00 15. out DDRD, temp1 16. 17.main: 18. ldi temp0, 0xFF 19. out PORTA, temp0 20. ldi temp0, 0x00 21. out PORTD, temp0 22. 23.loop0: 24. sbic PIND, 2 25. rjmp loop1 26. ldi temp2, 0xFE 27. rcall prog1 28. rjmp main 29. 30.loop1: 31. sbic PIND, 3 32. rjmp loop0 33. rcall prog2 34. rjmp main 35. 36.prog1: 37. sbic PIND, 2 38. brne lopo 39. 40. ret 41. 42.lopo: 43. inc R1 44. brne prog1 45. inc R2 46. brne prog1 47. rol temp2 48. out PORTA, temp2 49. rjmp prog1 50. 51.prog2: 52. cbi PORTA, 2 53. cbi PORTA, 4 54. 55. ldi temp0, 10 56.wait0: ldi temp1, 0 57.wait1: ldi temp2, 0 58.wait2: dec temp2 59. brne wait2 60. dec temp1 61. brne wait1 62. dec temp0 63. brne wait0 64. 65. ret Man kann das erste Unterprogramm als erstes mehrmals aufrufen, aber sobald man das zweite Unterprogramm das erste mal aufgerufen hat kommt man nicht mehr ins erstes Programm zurück, man kann nur noch das zweite Unterprogramm durchlaufen lassen, das funktioniert dann als einzigstes. Wenn einer nen Vorschlag hat, waere das hilfreich, auch wie man das Programm effecktiver gestalten kann, hab jetzt das Wochenende mit avr-asm angefangen, hab da also noch nicht die Erfahrung. Gruß Robert