AVR en 8051

Q

qh2_2000

Guest
Hallo en goede dag,

AVR is een familie van 8051?

Is de montage-code 8051 is compatibel met AVR-code?Kan ik gebruik gewoon 8051-code en pas het aan AVR Microcontroller?Zo niet, is er geen software die kan converteren?

Ik heb codes die werkt goed met At89s51 maar ik zou graag willen gebruiken voor ATmega8515.

Bedankt voor je hulp.

 
hoi,
Nee ze zijn verschillend hun instructie ook different.If uw code in cu kunnen naar de haven aan niemand van hen met kleine wijzigingen.Als code wordt in de montage i guess u hebben tot het herschrijven van de code door urself.
groeten
pimr

 
Hoi,

Dankzij pimr voor uw antwoord.U had verduidelijkt al mijn twijfels en verwarring.Wat ik van plan te doen is voor het verzenden van gegevens (teken "A") via de rs232 met mijn ATmega8515.Maar wat ik uit de HyperTerminal is raar karakter zoals

R @ @ @ ŔŔŔŔŔŔ R RR ŔŔŔŔ

Mag ik weten waar de fout gaat?hier is mijn assemblage-code: --

-------------------------------------------------- ---------------------
. include "8515def.inc"

. def temp = R16

. cseg
. org $ 00
rjmp resetten; reset handvat

resetten: rjmp init; begin init

init: ldi temp, low (ramend)
uit SPL, temp; ingesteld spl
ldi temp, high (ramend)
out SPH, temp; ingesteld SPH
ldi temp, 7; 57,6 kbps voor 7,3728 MHz
uit ubrr, temp; belasting baudrate
ldi R17, 0x00
uit DDRB, R17
ldi R17, 0xFF
out PORTB, R17

rcall belangrijkste; begin verzenden

belangrijkste:
sbi PINB, 0
sbic PINB, 0
rjmp belangrijkste
rcall lus

rs_send:
sbi UCR, txen; ingesteld afzender bits
sbis usr, UDRE; wachten tot inschrijven wordt gewist
rjmp rs_send
uit udr, temp; stuurt de recived waarde
CBI UCR, txen; duidelijke afzender bits
rjmp belangrijkste; ga terug

lus:
ldi temp, "A"
rcall rs_send; sturen naar comX
-------------------------------------------------- --------------------

Heeft iemand een voorbeeld voor het verzenden van gegevens uit Atmega8515 via rs232?
Vindt ik een flow control code en zijn er voorbeelden?

Hoop dat iemand me kan helpen.Ik heb geprobeerd dit voor bijna twee weken ...

Bedankt voor je hulp en ik waardeer het.

 
Hi qh2_2000,

Het maakt niet uit of u werkt met AVR 8051 of zolang u uiteindelijk de subroutine met een RET.
Kijk naar uw code in en vertel me hoeveel tijd heb je gebruikt rcall?Hoeveel RET?
Zelfs als u de stapel op ramend je problemen deze manier (springen en roepen).

Hieronder vindt u een gewone code nemen van het web waar een teken verzonden door de HyperTerminal het
is verzonden en ontvangen door AVR.
Als u graag een permanent karakter vervang gewoon de code binnen rs_rec subroutine met degene die je het leukst:
ldi temp, "A"
ret; ja niet vergeten.

;*********************************
; SER.ASM
;
; dit programma doet leest een waarde
; uit de comX, en schrijf het als een
; echo terug naar het pc-scherm.
;*********************************

. bevatten "c: \ avrtools \ appnotes \ 8515def.inc"

. EQU klok = 4000000; klokfrequentie
. EQU baudrate = 9600; kies een baudrate

. EQU baudkonstant = (klok / (16 * baudrate)) -1

. def temp = R16

. cseg
. org $ 00
rjmp resetten; reset handvat

resetten: rjmp init; begin init

init: ldi temp, low (ramend)
uit SPL, temp; ingesteld spl
ldi temp, high (ramend)
out SPH, temp; ingesteld SPH

ldi temp, baudkonstant
uit ubrr, temp; belasting baudrate

rjmp lus; laten we gaan ...

rs_rec: sbi UCR, rxen; ingesteld reciver beetje ...
sbis usr, rxc; wachten voor een waarde
rjmp rs_rec
in temp, udr
te lezen waarde
CBI UCR, rxen; duidelijke registreren
ret; ga terug

rs_send:
sbi UCR, txen; ingesteld afzender bits
sbis usr, UDRE; wachten tot inschrijven wordt gewist
rjmp rs_send
uit udr, temp; stuurt de recived waarde
CBI UCR, txen; duidelijke afzender bits
ret; ga terug

lus: rcall rs_rec
te lezen uit comX
rcall rs_send; sturen naar comX
rjmp lus; herhalen

U hoeft niet elke flow control zolang u
in staat
bent om de stroom van bytes per pc, of de pc kan ook, wat je sturen naar.

Groeten.

 
Hallo en goede dag,

Speciale dank aan Silvio voor uw tips en antwoorden.Ik ben erg overtuigd kunt u me helpen, maar het kan gewoon niet werken ...

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />Deze keer kan ik nog enige inbreng van de microcontroller.Ik probeer om de code aan de ene als hieronder.omdat ik bang mijn microcontroller kunnen geen gegevens ontvangen van mijn gegevens, ik probeer te sturen gegevens naar de computer.Maar ik kon geen enkele input van de microcontroller.

rs_rec: sbi UCR, rxen; ingesteld reciver beetje ...
sbis usr, rxc; wachten voor een waarde
rjmp rs_rec
in temp, udr
te lezen waarde
CBI UCR, rxen; duidelijke registreren
ret; ga terug

rs_send:
sbi UCR, txen; ingesteld afzender bits
sbis usr, UDRE; wachten tot inschrijven wordt gewist
rjmp rs_send
uit udr, temp; stuurt de recived waarde
CBI UCR, txen; duidelijke afzender bits
ret; ga terug

lus:
; rcall rs_rec
te lezen uit comX
ldi temp, "A"
rcall rs_send; sturen naar comX
rjmp lus; herhalen

---------------------

Ik kon niet oplossen waar is het probleem.Ik moest proberen met behulp van de nieuwe microcontroller en nieuwe RS232.het lijkt dat is niet de bron van het probleem.Ik moest ook proberen waarbij alle componenten en brengen het terug.

Weet iemand waar is mijn probleem?Kan iemand me helpen dit probleem op te lossen?Ik kan niet doorgaan zonder een oplossing van dit probleem en ik had geprobeerd deze weken nu ...

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />bedankt

groeten

 
Hi qh2_2000

Mijn advies: Probeer gebruik te maken van de ontwikkeling van instrumenten die de fabrikant levert.
Ik noem dit de AVRStudio.Binnenin vind je een leuke simulator.Leren te gebruiken.
Het
is uw naaste collega's.
Als u wilt dat er iets veel vertrouwen in en het dichtst bij de echte wereld, de aankoop van een emulator.
Als dit blijkt te duur probeert met behulp van een micro AVR met JTAG-interface.
Echter, voor uw kleine applicatie probeer eerst de simulator en als het gaat perfect, maar over de echte wereld niet bent u verwacht, probeer dan in te voegen enkele lijn van codes met het enige doel om te weten waar het programma teller is en wat de AVR micro doet.
Dat regel code is duidelijk een output poort bits die gaat naar een LED.Als je ziet het lampje brandt, dan weet je je tot dat punt.
Het
is precies hetzelfde als u procceed met R17 naar haven B in je eerste voorbeeld.

Zoals ik het goed begrijp je niet iets zien uit AVR micro naar PC (HyperTerminal).
Controleer eerst dat de baudrate in HyperTerminal match het een set in AVRmicro.
Dan schakelt de handdruk (ingesteld op Geen).
Let's cut sommige lijnen van het programma en houden alleen wat we nodig hebben om proove.

. include "8515def.inc"

. def temp = R16

. cseg
. org $ 00
rjmp init; reset handvat
; sprong over interrupt vector tabel voor 8515
. org $ 0D
init: ldi temp, low (ramend)
uit SPL, temp; ingesteld spl
ldi temp, high (ramend)
out SPH, temp; ingesteld SPH
ldi temp, 7; 57,6 kbps voor 7,3728 MHz
uit ubrr, temp; belasting baudrate
ldi temp, "A"
sbi UCR, txen; ingesteld afzender bits

lus:
sbis usr, UDRE; wachten tot inschrijven wordt gewist
rjmp lus
uit udr, temp; sturen de 'A'
rjmp lus; sturen eeuwig;

Het programma zal sturen voor eeuwig de 'A' karakter.Niets anders.
Probeer en kom terug met de resultaten.

 
Hallo weer.

dit keer heb ik het goede nieuws.allereerst dank aan allen die me geholpen met het verstrekken van mij met de broncode.Bijzondere dank voor dat ...

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Lachten" border="0" />Ik had het probleem oplossen.Het voornaamste probleem is dat de standaard klok bron IMhz van de interne klok.dus de baudrate is altijd anders dan wat ik wil.dat is de reden waarom ik bleef steeds raar karakter.

dus, met het oog op de klok bron aan externe crystral, ik moet schrijven de zekering vaststelling van CKOPT, CKSEL en SUT.

ik had gedaan en zijn werkgroepen ... Thanks ..

Ik kan nu verder ..

qh2_2000

 

Welcome to EDABoard.com

Sponsor

Back
Top