Hallo Leute, interrupt.c void adc_isr(void) interrupt 6 /* using 0 */ {} void spi_isr(void) interrupt 7 /* using 0 */ {} main.c void main() { while(1) {} } startup.a51 // default von Keil // hier verstehe ich nicht alles // build C51.exe interrupt.c BL51.exe startup.obj,main.obj,interrupt.obj,C51S.LIB TO main.ABS RAMSIZE(256) NODEFAULTLIBRARY OH51.exe main.ABS in main.M51 sehe ich unter CODE MEMORY nicht, dass die interrupts entsprechend dem Datenblatt an den Adressen ['0x03', '0x0B', '0x13', '0x1B', '0x23', '0x2B', '0x33', '0x3B', '0x43', '0x4B', '0x53', '0x5B'] untergebracht sind. Die Interrupts passen u.U. nicht an diese Adressen, aber ich müsste doch zumindest JMP oder ähnliches dort sehen. Hier ist was M51 steht. * * C O D E M E M O R Y * * CODE 0000H 0003H ABSOLUTE CODE 0003H 0008H UNIT CODE 000BH 0003H ABSOLUTE CODE 000EH 000BH UNIT CODE 0019H 0001H UNIT CODE 001AH 0001H UNIT Erstaunlicherweise funktionieren die Interrupts. Hat jemand ein Rat?
Vector = num * 8 + 3 Das ergibt 51 (0x33) für interrupt 6 und 59 (0x3B) für interrupt 7. Dein Auszug hört allerdings schon bei 0x1A auf, der interessante Teil fehlt. Wie sieht's denn da aus?
Entwickler schrieb: > // build > C51.exe interrupt.c hier fehlt ein c51.exe main.c a51.exe startup.asm > BL51.exe startup.obj,main.obj,interrupt.obj,C51S.LIB TO main.ABS > RAMSIZE(256) NODEFAULTLIBRARY > OH51.exe main.ABS zeige bitte main.hex
:
Bearbeitet durch User
Entwickler schrieb:
1 | CODE 0000H 0003H ABSOLUTE -> startup.a51 |
2 | CODE 0003H 0008H UNIT |
3 | CODE 000BH 0003H ABSOLUTE -> timer0 irq vect |
4 | CODE 000EH 000BH UNIT |
5 | CODE 0019H 0001H UNIT |
6 | CODE 001AH 0001H UNIT |
der Auszug passt nicht zu deinem gezeigten Programm. Im m51 File ist ein irq vector für timer0 zu finden, das fehlt in deinem Programm
:
Bearbeitet durch User
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.