Hallo Hubert.G
hoffentlich hat´s geschmeckt
. Danke schon mal jetzt für Deine Mühe.
Ich habe das natürlich in Assembler getestet (mit demselben Aufbau
) - weil ich mir nicht über den Weg traue:
Code:
;===================================================================================
;* Schaltung ZU Test "erstes C-Programm" ###>>> t2313, auszugsweise
;
; Vcc -----------t2313-----+------------Vcc
; |
; | +------+ rLED|\ |
; +---+ 100R +-------| >+---+
; +------+ |/ | |
; |
; t2313-PB1=pin13---------------------+
;
;
; GND-------------------------------------------------GND
;
;===================================================================================
; Speicherbelegung
;r16 Mehrzweck, high-Byte in Pausen "pause_an", "pause_aus", "led_ende" u.ä.
;
;===================================================================================
; Deklarationen und Konstanten für den Praeprozessor
#define a r16 ;Kurzbezeichung für Allzweckregister r16
;
;===================================================================================
#include "tn2313def.inc"
; Interrupthandler-Tabelle (aus AT2313_doc2535.pdf, Seite 42)
; Address Code Labels ;Comments
.org 0x0000 rjmp reset ;Reset Handler
.org 0x0001 reti ; INT0 ;External Interrupt0 Handler
.org 0x0002 reti ; INT1 ;External Interrupt1 Handler
.org 0x0003 reti ; TIM1_CAPT ;Timer1 Capture Handler
.org 0x0004 reti ; TIM1_COMPA ;Timer1 CompareA Handler
.org 0x0005 reti ; TIM1_OVF ;Timer1 Overflow Handler
.org 0x0006 reti ; TIM0_OVF ;Timer0 Overflow Handler
.org 0x0007 reti ; USART0_RXC ;USART0 rX Complete Handler
.org 0x0008 reti ; USART0_DRE ;USART0,UDR Empty Handler
.org 0x0009 reti ; USART0_TXC ;USART0 TX Complete Handler
.org 0x000A reti ; ANA_COMP ;Analog Comparator Handler
.org 0x000B reti ; PCINT ;Pin Change Interrupt
.org 0x000C reti ; TIMER1_COMPB ;Timer1 Compare B Handler
.org 0x000D reti ;IRS für Timer0 CompareA Handler (t2313)
.org 0x000E reti ; TIMER0_COMPB ;Timer0 Compare B Handler
.org 0x000F reti ; USI_START ;USI Start Handler
.org 0x0010 reti ; USI_OVERFLOW ;USI Overflow Handler
.org 0x0011 reti ; EE_READY ;EEPROM Ready Handler
.org 0x0012 reti ; WDT_OVERFLOW ;Watchdog Overflow Handler
;
;===================================================================================
; Hauptprogramm
;===================================================================================
;
reset: ;=== Generelle Initialisierung
; Zuerst RAMEND und Stack definieren;
ldi a,RAMEND ;Ram Ende des tiny2313
out SPL,a ;Stack Pointer tiny2313 setzen
;
anfang: ;=== Nur ein Dummy-Hauptprogramm mit einer leeren Schleife
;
rcall mc_init ;Initialisiere den Mikrocontroller
;
sbi portb,2
;
anfang2:
rjmp anfang2
;
;===================================================================================
; Prozeduren
;===================================================================================
;
;
;===================================================================================
; Initialisierungprozeduren, für µC, ADC und Timer-ISR
;===================================================================================
;
mc_init: ;=== Initialisiere Mikrocontroller
;ALLE Register initialisieren hier := pull-ups einschalten
;
ldi a,0b11111111 ;
;Datenrichtung "Ausgänge" für ports 0 - 7
out ddrb,a
ldi a,0b00000000
out portb,a ; ports aus-(=) oder ein(1)schalten; low = sink
ret ;=====----->>>>>
;
;===================================================================================
; Interrupt-Service-Routine
;===================================================================================
;
;===================================================================================
; Ende des Quellcodes
;===================================================================================
.. da geht die Leuchte an - und bleibt es auch.
Lesezeichen