Interfacing 89c2051

L

Livingston

Guest
Hai,
Jeg har designet et simpelt kredsløb til at vise nogle tegn på PC
Dette kredsløb indeholder en max232 kredsløb og væsentlige arbejds-kreds til 89c2051 (indeholder 11,0592 krystal med to 33PF og 8,3 k ohm og 10ľf for nulstille pin).

Programmet er fuldbyrdende godt (testet med 89C51 controller), men hvis jeg programmeret den samme kode i 89c2051 er der ingen udgang fra UART

Den baurd sats er 9600bps

/*------------------------------------------------ ------------------------------
Serial.c
-------------------------------------------------- ----------------------------*/

# include <REG52.H> / * speciel funktion registrere erklæringer * /
/ * For den påtænkte 8.051 afledte * /

# include <stdio.h> / * prototype erklæringer til I / O-funktioner * /# ifdef MONITOR51 / * Debugging med Monitor-51 behov * /
char kode reserve [3] _AT_ 0x23; / * plads til seriel afbryde, hvis * /
# endif / * Stop Exection med Serial Intr.* /
/ * Er aktiveret * /

/*------------------------------------------------
Forsinkelsen funktion
------------------------------------------------*/
void Delay (const unsigned int DELAY)
(
unsigned int x, y;
for (x = 0; x <= Delay; x )
(
for (y = 0; y <= 120; y );
)
)

/*------------------------------------------------
De vigtigste C-funktionen.Programafviklingen starter
her efter stak initialisering.
------------------------------------------------*/
void main (void) (

/*------------------------------------------------
Setup den serielle port til 9600 baud på 11,0952 MHz.
------------------------------------------------*/
# ifndef MONITOR51
SCON = 0x42; / * SCON: mode 1, 8-bit UART, så RCVR * /
TMOD | = 0x20; / * TMOD: timer 1, mode 2, 8-bit reload * /
Th1 = 0xFD; / * Th1: reload værdi for 9.600 baud@11.0592 MHz * /
TR1 = 1; / * TR1: timer 1 run * /
TI = 1; / * TI: sæt TI til at sende første tegn i UART * /
# endif

/*------------------------------------------------
Bemærk, at et indbygget program aldrig udgange (fordi
der er ingen operativsystem til at vende tilbage til).Det
skal loop og udføre evigt.
------------------------------------------------*/
while (1)
(
P1 ^ = 0x01; / * Slå P1.0 hver gang vi udskriver * /
Delay (1000);
printf ( "Livingston \ n"); / * Print "Livingston" * /
)
)
Beklager, men du skal logge ind for at se denne vedhæftede fil

 
Hvor meget er din kode størrelse
89C51 har 8kb af flash mens 89c2051 har kun 2kb af flash

Citat:Den baurd sats er 9600mhz

 
nysgerrig hvorfor ikke bruge nogle frekvens som 8M, 12M, 16M eller 20MHz?

 
Den 89C51 kontrollører deler klokfrekvensen med 12 internt.

At opnå minimum fejl på alle (de fleste) transmissionshastighed de 11.0592 MHZ krystal suiter det bedste.

Du kan også benytte andre oscillator, men med nogle fejl i transmissionshastigheden.

Hilsen
Nandhu

 
sashijoseph skrev:

Er Port1 at skifte som fastsat i koden?
 
Blot for at kontrollere, om opsætningen er i orden nobel, udkommentere de printf og se, om P1.0 skifter.

 
sashijoseph skrev:

Blot for at kontrollere, om opsætningen er i orden nobel, udkommentere de printf og se, om P1.0 skifter.
 

Welcome to EDABoard.com

Sponsor

Back
Top