|
нижеприведённый код мигает светодиодом.
при отправки чего нить - мигание замедляется ...
нога на портБ.1 не дрыгаетя ...
что где не так ?
.def temp0 = r16 ; eigener Name für Register 16 ;######## RESET: ldi temp0,0b01111111 ;Port B0..B6 = Ausgang, PB7-input ldi temp0,0b10011000 ;########## MAIN LOOP ;-------------------------------------------------- ;-------------------------------------------------- ;## PAUSE1 0,3 sek
.include "2313def.inc"
.def temp1 = r17
rjmp RESET ; Reset Handler : erste Stelle im Maschinencode, hier fängt der MC immer an
reti ; IRQ0 Handler
reti ; IRQ1 Handler
reti ; Timer1 Capture Handler
reti ; Timer1 compare Handler
reti ; Timer1 Overflow Handler
reti ; Timer0 Overflow Handler
reti ; SPI Transfer Complete Handler
rjmp receive ; UART RX Complete Handler : hierhin springt MC sofort, wenn am UART ein Byte ankam
reti ; UDR Empty Handler
reti ; UART TX Complete Handler
reti ; ADC Conversion Complete Interrupt Handler
reti ; EEPROM Ready Handler
reti ; Analog Comparator Handler
ldi temp0,RAMEND ; Locate stack
out SPL,temp0
out DDRB, temp0
out UCR,temp0 ; enable UART receive
ldi temp0,0x40
out UBRR, temp0 ; setze baud rate
sei ; aktiviere interrupts
loop:
sbi PORTB,0
rcall PAUSE1
cbi PORTB,0
rcall PAUSE1
rjmp loop ; main loop
; Unterprogramm als Interrupt-Handler
;--------------------------------------------------
receive:
sbi PORTB,1
rcall PAUSE1
cbi PORTB,1
in temp0, UDR ; lies ein Byte
rcall transmit ; schicke es gleich wieder zurück
reti ;
; Unterprogramm, das ein Byte über UART sendet
;--------------------------------------------------
transmit:
;sbis USR,5 ; Warten, bis UDR bereit ist
;rjmp transmit
sbi PORTB,2
rcall PAUSE1
cbi PORTB,2
out UDR, temp0
ret ; Programm geht zurück zu "rcall" und macht beim nächstfolgenden
PAUSE1:
;# ^пауза тут кароч.
;# используются регистры р17-р19
ret
E-mail: info@telesys.ru