Na ja,
ich gehe mal davon aus das dein Hardwareaufbau OK ist.
Dein Programm sollte in etwa wie folgt anfangen:
;*********************************************************************
; AVR - Testboard
;
;*********************************************************************
;***** Directives
.device atmega8
.def temp1 = r16
.def temp2 = r17
.def temp3 = r18
;---------------------------------------------------------------------
;Interrupt vector table - ATmega8
;---------------------------------------------------------------------
rjmp reset ; Reset Handler
reti ; External Interrupt0 Handler
reti ; External Interrupt1 Handler
reti ; Timer2 Compare Handler
reti ; Timer2 Overflow Handler
reti ; Timer1 Capture Event Handler
reti ; Timer1 CompareA Handler
reti ; Timer1 CompareB Handler
reti ; Timer1 Overflow Handler
reti ; Timer0 Overflow Handler
reti ; SPI Transfer Complete Handler
reti ; USART Rx Complete Handler
reti ; USART Data Register Empty Handler
reti ; USART Tx Complete Handler
reti ; ADC Conversion Complete Handler
reti ; EEPROM Ready Handler
reti ; Analog Comparator Handler
reti ; Two-wire Serial Interface Handler
reti ; Store Program Memory Ready Handler
;--------------------------------------------------------------------
;---------------------------------------------------------------------
;Konfigurieren der IO-Register
;0xFF bedeutet alle Pins auf Ausgabe, 0x00 bedeutet Eingabe
;---------------------------------------------------------------------
konfMCU:
;Belegung von PortB
;Bit0 ==> LED 1
;Bit1 ==> LED 2
;Bit2 ==> LED 3
;Bit3 ==> LED 4
;Bit4 ==> LED 5
;Bit5 ==> LED 6
;Bit6 ==> frei
;Bit7 ==> frei
ldi r16, 0b11111111 ;0b11111111 in r16 laden
out DDRB, r16 ;Inhalt von r16 ins IO-Register DDRB ausgeben
;Belegung von PortD
;Bit0 <== Taster 1
;Bit1 <== Taster 1
;Bit2 <== Taster 1
;Bit3 <== Taster 1
;Bit4 <== Taster 1
;Bit5 <== Taster 1
;Bit6 <== frei
;Bit7 <== frei
ldi r16, 0b00000000 ;0b00000000 in r16 laden
out DDRD, r16 ;Inhalt von r16 ins IO-Register DDRD ausgeben
ret ;Setuproutine beenden
;Konfigurieren der IO-Register ende
;---------------------------------------------------------------------
;---------------------------------------------------------------------
;Stack anlegen
;---------------------------------------------------------------------
reset:
ldi temp1, LOW(RAMEND)
out SPL, temp1 ; Initialize SPL
ldi temp1, HIGH(RAMEND)
out SPH, temp1 ; Initialize SPH
;Stack anlegen ende
;---------------------------------------------------------------------
rcall konfMCU ; Port B auf Ausgang, Port D auf Eingang
loop:
; hier sollte dein Programm stehen!
rjmp loop ; Endlosschleife
Viel Glück