Hi Scotch,
hier der komplette Code.
Da ich mich nicht mit Assebler beschäftige kann ich Dir bei der Lösung aber nicht weiter helfen! Ich hoffe, der Autor des Progs. hat nichts dagegen, dass ich den Code hier reinstelle ??![]()
Code:;****************************************************************************** ; Verwendete Hardware: ; AVR Testboard Board mit 90S2313 Prozessor ; ; Erstellt: Dezember 2001, Klaus Leidinger ; ; Programm zum Testen der AVR Board Hardware. ; Lauflicht an beiden Ports. Achtung: PortD.7 gibt es nicht ;-) ; ; Das Timing erfolgt über Interrupts. ; ;****************************************************************************** .include "2313def.inc" ;Festlegen des verwendeten Chips .def Anzeige=r19 .def temp1=r18 .def result=r16 .def temp=r17 ;Werte für 0,5 sec Timer bei 4MHZ Quarz ;.equ T1Lval=0xee ;.equ T1Hval=0x85 ;Werte für 0,5 sec Timer bei 8MHZ Quarz .equ T1Lval=0xdc .equ T1Hval=0x0b ; Start des Programmcodes .cseg .org $0000 rjmp reset ;Reset extern oder Watchdog .org $0001 reti ;rjmp INT0_int ;Externer Interrupt INT0 .org $0002 reti ;rjmp INT1_int ;Externer Interrupt INT1 .org $0003 reti ;rjmp Timer1_capt ;Timer 1 capture Mode .org $0004 reti ;rjmp Timer1_comp ;Timer 1 compare Mode .org $0005 rjmp Timer1_over ;Timer 1 overflow .org $0006 reti ;rjmp Timer0_over ;Timer 0 overflow .org $0007 reti ;rjmp UART_rxc ;Serial RX complete Handler .org $0008 reti ;rjmp UART_dre ;Serial UDR empty Handler .org $0009 reti ;rjmp UART_txc ;Serial TX complete Handler .org $000A reti ;rjmp ANA_comp ;Analog comperator .db "Testprogramm für Microcontroller Board AVR 90S2313 Version 1.0" ;Beginn des Programmcodes reset: ldi r16,low(RAMEND) out SPL,r16 ldi r16,0x00 out TCCR1A,r16 ;Timer 1 disconnect OC1 + PWM ldi r16,0x03 out TCCR1B,r16 ;Timer 1 prescaling 1/64 ldi r16,T1Lval out TCNT1L,r16 ;Timer low value ldi r16,T1Hval out TCNT1H,r16 ;Timer high value ldi r16,0x80 out TIMSK,r16 ;Timer1 overflow enabled sei ;Enable global Interrupts ldi result,$ff ;Port B -> output out DDRB,result out DDRD,result ;Port D -> output Startprog: sei ;Enable global Interrupts ;Auswahl ob High oder Low geschoben wird ldi Anzeige,$0 ;LED on (Low) sec ;set Carry (H wird durch die Ports geschoben) ; ldi Anzeige,$ff ;LED off (High) ; clc ;clear Carry (L wird durch die Ports geschoben) loop: out PORTB,Anzeige out PORTD,Anzeige rjmp loop ;Timing durch Interrupts ;Beginn der Unterprogramme und Interruptroutinen Timer1_over: ;Interrupt 500ms rol Anzeige ;Zählerstand ldi r16,T1Lval ;Timer reload out TCNT1L,r16 ;Timer low value ldi r16,T1Hval out TCNT1H,r16 ;Timer high value reti .EXIT ;letzte Zeile des Programmes







Zitieren

Lesezeichen