ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
27080
nestandart (22.04.2005 22:43, просмотров: 2112)
Ответ: спрошу тут, а то на телесиськах, похоже, одни клоуны... вот оно передавать - передаёт от МК к ПК; а вот наоборот, с компа в МК передать не получаетсяяя... кроме того, при попытке отправить с компа чего нибудь - дрыгать ногами в Loop цикле начинает намного медленнее. при установке RXCIE =0 в UCR - ничего не тормозит, но и не принимается естественно... т.е. "дырка" где то тут.
.include "2313def.inc"

.def temp0 = r16 ; eigener Name für Register 16

;########
.CSEG
.org 0
rjmp RESET
reti ;.org INT0addr ;External Interrupt0 Vector Address
reti ;rjmp INTERRUPT0
reti ;.org INT1addr ;External Interrupt1 Vector Address
reti ;; rjmp INTERRUPT1
reti ;.org ICP1addr ;Input Capture1 Interrupt Vector Address
reti ;.org OC1addr ;Output Compare1 Interrupt Vector Address
reti ;.org OVF1addr ;Overflow1 Interrupt Vector Address
reti ;rjmp TIMER1_OV
reti ;.org OVF0addr ;Overflow0 Interrupt Vector Address
rjmp receive ; UART RX Complete Handler
;reti ;.org URXCaddr ;UART Receive Complete Interrupt Vector Address
reti ;.org UDREaddr ;UART Data Register Empty Interrupt Vector Address
reti ;.org UTXCaddr ;UART Transmit Complete Interrupt Vector Address
reti ;.org ACIaddr ;Analog Comparator Interrupt Vector Address


RESET:
ldi temp0,RAMEND ; Locate stack
out SPL,temp0

ldi temp0,0b11111111 ;Port B0..B6 = Ausgang, PB7-input
out DDRB, temp0

ldi temp0,0b10011000
out UCR,temp0 ; enable UART receive
ldi temp0,0x40
out UBRR, temp0 ; setze baud rate
sei ; aktiviere interrupts

ldi temp0, '0'

;########## MAIN LOOP
loop:
rcall serout ;Unterprogramm aufrufen
rjmp loop ;zu loop springen

;--------------------------------------------------
receive:
;# сюда оно даже не вываливается...
in temp0, UDR ; lies ein Byte
reti;

;########
serout:
sbis USR,UDRE ;
rjmp serout
out UDR, temp0
ret ;zurück zum Hauptprogramm