8.051 med ADC konvertering og RS232-kode

M

Maverickmax

Guest
Hej

Jeg har forsøgt at gøre mit mikrocontroller til at sende data til HyperTerminal, men der skete ingenting.Im ikke 100 procent helt sikker på, om min kode forårsage problemet.Så kan du bedes du venligst tjekke min kode for eventuelle fejl?

Cheer

Maverick Max

Kode:

/ / Header-filer

# include "main.h"

# include "port.h"

# include "delay_loop.h"int result_G;void serial_init ();

void send_serial (unsigned char * s);

void send_1_char (unsigned char c);void initialize ();

void start_conversion ();/ / interrupt1 () afbryder 2void serial_init ()

(

SCON = 0x50; / / Setup til 8-bit data

TMOD = 0x20; / / Setup timer 1 for auto-reload

Th1 = 0xF3; / / Setup til 2400 baud

TR1 = 1; / / Slå timeren 1

TI = 1; / / Angiv klar til at sende

)void send_serial (unsigned char * s)

(

while (* s! = 0x00)

(

SBUF =* s;

while (! TI)

()

TI = 0;s ;

)

)void send_1_char (unsigned char c)

(

SBUF = c;

while (! TI)

()

TI = 0;

)void initialize ()

(

ADC_RD = 1;

ADC_WR = 1;

IT1 = 1;

EX1 = 1;

EA = 1;

)void start_conversion ()

(

ADC_WR = 0;

ADC_WR = 1;

)interrupt1 () afbryder 2

(

ADC_RD = 0;

result_G = DATA;ADC_RD = 1;

send_1_char (result_G);

Delay_Loop (100);

start_conversion ();

)void main (void)

(

unsigned char crlf [] = (0x0D, 0x0A, 0x00);

serial_init ();

send_serial (crlf);

send_serial ("--------------------------------");

send_serial (crlf);initialize ();

start_conversion ();while (1)

(

LED = ON;

Delay_Loop (25);

LED = OFF;

Delay_Loop (25);

))

 
Hvad er krystal frekvens?Er timeren reload værdi korrigere for krystal og baudraten du overvejer?

Jeg er generelt konfigurere UART med dobbelt baud-rate ved at sætte lidt i PCON.Du har måske glip af det!
Kode:

PCON | = 0x80; / / Double Baud Rate

SCON = 0x50; / / SCON: mode 1, 8-bit UART, så RCVR

TMOD | = 0x20; / / TMOD: timer 1, mode 2, 8-bit reload

Th1 = BAUD_CONST; / / Th1: reload værdi

TL1 = BAUD_CONST;

TR1 = 1; / / TR1: timer 1 run

TI = 1;

DI = 0;
 
Hej

Im benytter 11.0592MHz krystaller til min mikrocontroller chip ......

Grundlæggende er det arbejde, når jeg konfigureret min kode til at udskrive simple tekst på skærmen, men jeg kunne ikke få data fra ADC vises på skærmen.

Im going at medtage PCON i min kode nu

Vil bakke op ASAP

Maverick Max

 
1.Th1 = 0xF3; / / Setup til 2400 baud
Til 2400 baud på 11.0592MHz krystal korrekt reload værdi er 0xF4.Se "bibel" og Keil's baudrate regnemaskine http://www.keil.com/c51/baudrate.asp

2.Hvis du indstiller TI = 1 i initialisering og derefter ikke vente på det i send_serial _before_ sende karakter, vil du miste en af de to første bytes du forsøger at sende

3.http://www.8052.com/users/jonled/RS232gd.pdf

wek

 

Welcome to EDABoard.com

Sponsor

Back
Top