Læsning fra adc0804 ....

Y

yviswanathbe

Guest
Hej,
Jeg sammenknytning ADC0804 til AT89S8252.
Min kredsløb fungerer fint, men jeg kan ikke læse den konverterede værdi på pc'en.
Hver gang jeg får den samme værdi, selv når jeg bliver en analog indgang.
Kan nogen venligst hjælpe, hvad der kan være problemet?
Jeg vedhæfter min kode her?
På forhånd tak .....# include <stdio.h>
# include <reg51.h>

sbit mineData = P2;
sbit rd = P3 ^ 7;
sbit WR = P3 ^ 6;
sbit intr = P3 ^ 3;

unsigned char værdi;
void pause (int);
void delay1ms ();
void delay ();
void sender (unsigned char);

void main (void)
(
SCON = 0x50;
TMOD = 0x20;
Th1 = 0XFD;
TR1 = 1;
MineData = 0xff;
Intr = 1;
pause (5);
while (1)
(
forsinkelse ();
WR = 0;
forsinkelse ();
WR = 1;
while (intr == 1);
forsinkelse ();
rd = 0;
forsinkelse ();
værdi = mineData;
rd = 1;
sende (værdi);
void sender (unsigned char value)
(
TI = 0;
SBUF = værdi;
while (! TI);
/ / TI = 0;
/ / flag = 1;
)
void pause (int k)
(
int j;
for (j = 0; j <= k; j )
(
delay1ms ();
)
)
void delay1ms ()
(
int i;
for (i = 0; i <= 500; i ) / / 15
(
;
)
)
void delay ()
(
int k, l;
for (k = 0; k <40; k )
for (l = 0; l <80 l );
)
Tak,
Viswanath

 
Hi Viswanath,
Jeg er overrasket over din kode, der faktisk samler i de anførte form.Jeg ville have forventet, at du ville have et par afsluttende parenteser indsættes i slutningen af din måling loop, lige over starten af din sender funktion.Denne måde vil det gå omkring din måling loop evigt og sende data ud på den serielle port efter hver måling er afsluttet.Som det ser jeg tror, det vil crashe mikro efter første gennemløb, og aldrig tage en behandling efter den første, fordi programmet ikke længere er aktiv, og derfor ingen ændringer i dine behandlinger.

Prøv noget som dette kodestykke

void main (void)
(
/ / Sæt alle din kode her under, men ændrer bits som jeg har vist det nedenfor

while (1)
(
forsinkelse ();
WR = 0;
forsinkelse ();
WR = 1;
while (intr == 1);
forsinkelse ();
rd = 0;
forsinkelse ();
værdi = mineData;
rd = 1;
sende (værdi);
) / / Denne tandbøjle vil lukke, mens løkken
) / / Denne tandbøjle vil lukke vigtigste funktion
/ / Sæt resten af dine funktioner her, de ser ud som om de vil arbejde på OK, men kunne
/ / Optimeres en smule!

Jeg håber dette hjælper.

Hilsen
Bob.

 
Hej,
Også, du er nødt til at berigtige angivelsen af "mineData" variabel fra
'Sbit mineData = P2,' at en SFR variabel erklæring.Følg konventionerne af din compiler til erklæringerne.

Hilsen,
Laktronics

 

Welcome to EDABoard.com

Sponsor

Back
Top