
Zitat von
HeSt
... wie poste ich meinen code?
aber das hat sich ja nun erübrigt oder? ...
Code posten:
Button [C ode] drücken ( danach steht dort [C ode*] ) ,
jetzt den Code eingeben (z.B. copy und paste)
Button [C ode*] drücken.
Oder: Code eingeben, markieren und danach den Button [C ode] drücken.
Anmerkung: Zwischen "C" und "o" muss hier im Text ein Zwischenraum stehen, damit die Schaltfunktion für den Code (an dieser Textstelle im Posting) nicht aktiviert wird.
Deinen Code zu lesen hat sich ja nun erübrigt. Obwohl - wär ja mal interessant . . . . .

Zitat von
HeSt
... übrigens danke für den deinen!
muss mich erst einlesen und verstehen! ...
Ich hatte gerade festgestellt, dass mein Beispiel total schlecht ist. Dieses hier ist vermutlich etwas besser: Stack ist initialisiert, Stackpointer wird in der ISR gesichert und so. Man entwickelt sich halt mit der Zeit *ggggg*.
Code:
/* =================================================================================
Sicherung 20dez07 1732 nach Datei ..A1..\minitest\minitest_x10.asm
===================================================================================
..............
===================================================================================
*/
/* ============================================================================== */
; Deklarationen für den Praeprozessor und Konstanten (s.auch oben Speicherbelegung)
#include <m168def.inc>
#define a r16 ;Kurzbezeichung für Allzweckregister r16
#define ac r17 ;Kurzbezeichung für ISR-Allzweckregister r17
;===================================================================================
/* Interrupthandler-Tabelle
Address Code Labels ; Comments */
.org 0x0000 rjmp RESET ;Reset Handler, power-on, brown-out, watchdog
/*.org 0x0001 rjmp xt_int0 ; EXT_INTO IRQO Handler
.org 0x0002 reti ; PCINTO PCINTO Handler
.org 0x0003 reti ; TIMO_OVF ;Timer0 Overflow Handler
.org 0x0004 reti ; EE_RDY ;EEPROM Ready Handler
.org 0x0005 reti ; PITAL_COMP ;Analog Comparator Handler
.org 0x0006 reti ; TIMO_COMPA ;Timer0 CompareA Handler
.org 0x0007 reti ; TIMO_COMPE ;Timer0 CompareE Handler
.org 0x0008 reti ; WATCHDOG ;Watchdog Interrupt Handler
.org 0x0009 reti ; ADC ;ADC Conversion Handler
*/
;===================================================================================
; Hauptprogramm
;===================================================================================
;
RESET: ;=== Generelle Initialisierung
; Zuerst RAMEND und Stack definieren;
ldi a,RAMEND ;Ram Ende des tiny13
out SPL,a ;Stack Pointer tiny13 setzen
anfang: ;=== Nur ein Dummy-Hauptprogramm
rcall init_mc ;Initialisiere den Mikrocontroller
rcall ini_xti0 ;Initialisiere die ISR für external Interrupt
sei ; .. und Interrupts allgemein zulassen
a2:
rcall tiw ;Tu irgend etwas
rjmp a2
;
;===================================================================================
; Prozeduren
;===================================================================================
;
tiw: ;=== tuirgendwas ... ein bisschen code muss ja abgearbeitet werden
push a
in a,SREG
push a
push ac ;AUCH das ISR-Allzweckbyte - auf alle Fälle
tiw_pop:
pop ac
pop a
out SREG,a
pop a
ret ;=====----->>>>>
;
;===================================================================================
; Initialisierungen für µC und ISR
;===================================================================================
;
init_mc: ;=== Initialisiere Mikrocontroller
;ALLE Register initialisieren hier := pull-ups einschalten
ldi a,0b00111100 ;
out ddrb,a ;Datenrichtung "Ausgabe" für alle ports
ldi a,0b00000000
out portb,a ; und alle ports ausschalten = low = sink
ret ;=====----->>>>>
;
ini_xti0: ;=== Initialisiere external Interrupt
;
;(1<<ISC01 | 1<<ISC00)
ldi a,0b00000011 ;Init. extern. Interrupt0 auf rising edge
out MCUCR,a ; d.h. MCUCR ISC00,01 auf 1 (doc2535,S 55)
ldi a,0b01000000 ;(1<<INT0)
out GIMSK,a ; und erlaube diese I´s in GIMSK
ret ;=====----->>>>>
;
;===================================================================================
; Interrupt-Service-Routine #######>>>>>
;===================================================================================
;
xt_int0: ;=== Markiere Arbeit dieser ISR
push a
in a,SREG
push a
ldi a,0b00001000 ;Bit3 (PB3) einschalten
out portb,a
int0_pop:
pop a
out SREG,a
pop a
reti ;=====----->>>>>
;
;===================================================================================
; Ende des Quellcodes
;===================================================================================
Lesezeichen