AT89C51 problem

M

Munib

Guest
Želim napraviti dva AT89c51 mcus komunicirati serijski
jedan mcu će prenositi sve što se podaci o njegovom 1 serijski port na drugu mcu da drugi mcu će prikazati ove podatke na svojim port 1.
Imam pismeni kod ali svoj ne workingplz check priloženu datoteku za broj
Ja m koristeći 10uF kondenzator izmedju VCC i RST pin također 10k otpornik između GND i RST pin
plz pogledajte priloženu datoteku za broj i recite mi ako postoji problem kod ili
bilo koji drugi problem (npr. reset strujna kola
i sl.)
Žao nam je, ali morate prijaviti da biste vidjeli u ovom prilogu

 
Plz, provjerite je li Vaš Micro Power On resetirati radi ispravno

Po ovom Simple Prg:

---------- Debuged Napomena:

# uključiti <reg51.h>

poniłtava glavna (void)
(
P1 = 170;
a () ()
)

/ / Kraj

Sada se trebaju provjeriti Port1 Izlazni napon U HLHLHLHL.

Bolje da promijeni program kao ovaj:

//----- Prenositi Prg
# inlcude <reg51.h>
poniłtava Serial_Init (void)
(
SCON = 0x52;
EA = 1;
ES = 1;
TMOD = 0x20;
TH1 = 0xE6;
TR1 = 1;
)

poniłtava Transmit_Char (nepotpisano pougljiti c)
(
SBUF = c;
dok je (! TI) () / / čeka dok ne prenosi
TI = 0;
)

poniłtava glavna (void)
(
nepotpisani pougljiti tchar;
P1 = 0x00;
P3 = 0x00;
tchar = P1;
Serial_Init ();
//---- Ova linija je za test
Transmit_Char ( 'H'); / / Debug Šalje H pougljiti na serijski port
//---- Ova linija je za test
Transmit_Char ( 'ja'); / / Debug
//----
Prenijeti (tchar); / / Ovdje Šalje port na serijski port P1
a (1) ()
)
/ / End of ProgPrimajte //-------- Prog
# inlcude <reg51.h>
poniłtava Serial_Init (void)
(
SCON = 0x52;
EA = 1;
ES = 1;
TMOD = 0x20;
TH1 = 0xE6;
TR1 = 1;
)

poniłtava poziva () prekidati 4
(
if (RI)
(
P1 = SBUF;
RI = 0;
)
)

poniłtava glavna (void)
(
Serial_Init ();
a (1) ()
)

/ / End of Prog

Napomena:
a pobrinite se da Obje MCU koristite istu XTAL Frekv
b-provjerite imate li Priključen je TxD <-> RXD u oba chips
c-ne koristite MAX-232 za oba MCU
D-Provjerite je li C kompajler sastavlja se Progs sadrži prekine.
(Nemojte oštetiti Prekid vektori)

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

Ako imate problema s Reset Probajte ovo shematski:

VCC
^
| VCC
| ^
R = 100 Ohm |
| |
| C = 10uf
Switch |
| |
|------------------------ MCU Reset Pin
|
|
R = 10k
|
|
GND

a pobrinite se da MCU VCC nije manje od 5 Volt (MCU Neki neće raditi ispravno)
Last edited by sunsina
28. studeni 2004 7:39, edited 4 puta u ukupnom

 
Quote:

Plz, provjerite je li Vaš Micro Power On resetirati radi ispravno

Po ovom Simple Prg:# uključiti <reg51.h>poniłtava glavna (void)

(

P1 = 170;

a () ()

)/ / Kraj
 
Munib je napisao
/ la:Quote:

Plz, provjerite je li Vaš Micro Power On resetirati radi ispravno

Po ovom Simple Prg:# uključiti <reg51.h>poniłtava glavna (void)

(

P1 = 170;

a () ()

)/ / Kraj
 
Moj problem je riješen reset zapravo sam bio koristeći krivu heksadecimalna file format, dok se učitava kod za mcu

Sada sam pokušao kod iznad given by "sunsina", ali im još uvijek ne uzimajući moj mcus
serijska komunikacija.
Niether moj broj dati u attachement na vrhu radi što svibanj biti mogući uzroci?

Napomena: došlo je do problema u prenose kod "sunsins". U glavnoj je funkcija nazvana je "Transmitt", ali prema definiciji funkcije bi trebao biti Transmitt_Char
fiksne i taj problem, ali još uvijek ne dobivam rezultate

 
Problem je ispravljen titally riješeno koda za prijenos i prijem strane

/ / Transmission program# uključiti <d:\C51A\INCLUDE\reg51.h>poniłtava Transmit_Char (nepotpisano pougljiti c)
(
dok je (! TI); / / čeka dok prethodni prenositi urađeno
TI = 0;
SBUF = c;
)poniłtava glavna (void)
(
nepotpisani pougljiti tchar;
P1 = 0xff;
SCON = 0x52; / / set TI flag UART kako biste naznačili da je slobodan
ES = 0; / / disable serijski prekinuti zbog mi nemamo svojih ISR
/ / EA = 1; / / omogućite prekine ostatak ako je potrebno
TMOD = 0x20;
TH1 = 0xE6;
TR1 = 1;
a (1)

(
tchar = P1;
Transmit_Char (tchar);
)

)/ / Recepcija strani kod
# uključiti <d:\C51A\INCLUDE\reg51.h>poniłtava izumrle () prekidati 4
(
if (RI)
(
RI = 0;
P1 = SBUF;
)
)

poniłtava glavna (void)
(
SCON = 0x52;
EA = 1;
ES = 1;
TMOD = 0x20;
TH1 = 0xE6;
TR1 = 1;
a (1) ()
)

 

Welcome to EDABoard.com

Sponsor

Back
Top