lite asm kod.......? (AVR)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

lite asm kod.......? (AVR)

Inlägg av anlamotte »

Denna kod är en liten del av en dmx mottagare. Detta är själva interupt rutinen för dmx-datan. I övrigt används basic men denna lilla snutt är alltså i asm vilket jag inte behörskar helt...

Kod: Markera allt

$asm
.def Uart_status = R16
.def Uart_byte = R17
.def Uart_temp1 = R18

IN Uart_status,USR
IN Uart_byte,UDR

SBRC Uart_status,FE
RJMP Asm_reset
RJMP Asm_Loop1

Asm_reset:
LDI Uart_temp1,$00
STS {Dmx_count_temp} , Uart_temp1
STS {Dmx_byte} , Uart_byte
RJMP Asm_exit
Asm_loop1:
STS {Dmx_byte} , Uart_byte
Asm_exit:
$end Asm
Det jag undrar lite över är vad som sparar i de olika registrena mest intresant är R17 som används till Uart_temp1... vad hamnar där?
Senast redigerad av anlamotte 18 oktober 2005, 01:11:46, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Skriv gärna vilket processorfabrikat det gäller i *rubriken* på tråden, så att man inte i onödan öppnar trådar som handlar om "fel" processor... 8) 8)
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg av anlamotte »

aj.. så dumt det kan bli :!:

det handlar om en AVR...

efter lite funderande har jag kommit fram till att statusen för uarten hämtas från USR och hamnar i uart_status... Om en viss bit är '1' i denna hoppar programet till asm_loop annars till asm_reset...

asm_reset innebär att ett 'break' har hittats på dmx-slingan och dmx_count_temp sätts till 0 med STS...

asm_loop1 hämtar helt enkelt datan från uart och den hamnar i dmx_byte...

kan detta stämma?

Det intresanta är

Kod: Markera allt

SBRC Uart_status,FE 
vilken bit i statusregistret är det som kollas.. och vad innebär den biten?[/code]
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

FE är bit 4 som betyder "Framing error".
Den sätts när inkommande stoppbit är "0", när den borde vara 1.
Skriv svar