Time zamude pri PIC16f876 -

A

amitdandyan

Guest
Sem razvil program za naslednje sveti vodi v zvezi s prvim pin za PORT B, ki uporabljajo Mikro C. .. zdaj problem je, kako ga lahko dam takoj vrednosti, npr 250us itd ..????unsigned kratko i;

void main ()
(
TRISB = 0;
PORTB = 0x00;
USART_init (9600), / / initialize USART modul
/ / (8 bit, 19200 baud rate, ne paritetni bit ...)
while (1)
(
if (USART_Data_Ready ()) / / če prejetih podatkov
(
i = USART_Read () / / branje prejetih podatkov
USART_Write (i); / / pošiljanje podatkov preko USART
PORTB = 0x01;
Delay_ms ( 'i');
PORTB = 0x00;
)
)
)

 
u naredil toliko, to pomeni, da u znanje programiranja, njegove zelo preprosta stvar

bodisi uporabljajo enostavno za zanke zamudo
ali uporabite časovnik

 
Mimo gospod, ampak kaj hočem vprašati je to, kako lahko jaz fizično dajo vrednost za "npr i".250 ali 100 itd Na primer, jaz povezati LED v pristanišče B in hočem spremeniti čas sij, ki LED ... tudi jaz da je treba dati različne vrednosti 'i'.... kako morem dati teh vrednosti z uporabo tipkovnice??

Če ste uporabili Mikro C, potem pa prosim povej mi, kako uporabljati svoj USART terminal za komuniciranje ....

Čakam na vaš odgovor ........

 
Rada bi pojasnila na vaša vprašanja.Se sprašujete, kako izračunati za Constant čas OFF od ure ...?

 
Delay_ms ( 'i'); ???????

morda Delay_ms (i);

ali morda razglaša??

void main (void) (
int i;
...

i = 250;
...
Delay_ms (i);
...ali samo Delay_ms (250);

Mogoče mikroC ima nekaj podobnega Delay_us (250), za mikrosekund??(Delay_ms mora biti v miliseconds)

 
char y;
int x;
void main ()
(trisa = 0; porta = 0;usart_init (9600);
for (;

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />(if (usart_data_ready ())
(y = USART_Read ();
usart_write (y);
PORTa.f0 = 1;
x = y-48;
x = x * 1000;
vdelay_ms (x);
porta.f0 = 0;

)
)
)

ta številka bo delo
ampak proizvodnja je porta.f0
in bo čas, se spremenljivka
od
1-9 sec

lahko spremenite x = x * 1000 do
x = x * 10000;
in bo čas, se spremenljivka
od
10-90 sec

 
mimo loin .... bt imam eno vprašanje ... zakaj smo cann't uporabo Delay_ms () namesto vdelay_ms (x )?????

 
ker (), ki delay_ms, se uporablja samo s
konstantna vrednost, vendar vdelay_ms () se lahko, se uporablja
s spremenljivkami
vendar lahko uporabite delay_ms (), da ima spremenljivka zamudo
vendar ne na neposreden način

 
mimo človek ..... plz pojasnjujejo posreden način uporabe delay_ms (x);

 
char y;
int x, n;
void main ()
(trisa = 0; porta = 0;usart_init (9600);
for (;

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />(if (usart_data_ready ())
(y = USART_Read ();
usart_write (y);
PORTa.f0 = 1;
x = y-48;

for (n = 0; n <x, n )
(delay_ms (1000);)
porta.f0 = 0;

)
)
)
ta oznaka kaže, kako lahko uporabljate delay_ms ();
da spremenljivka zamudo

s spoštovanjem

 
Nekoč sem imel isti problem, preden sem dober prevajalnik, ki ima vgrajeno funkcijo zamudo (delay_ms (x))

uporabite program, kot je ta

while (1)
(
for (= 0; <255; ) / / int;
for (b = 0, b <255; b ) / / int b;
LED = 1; / / Samo za preverjanje logike
for (= 0; <255; )
for (b = 0, b <255; b );
LED = 0;
)

Njena preprosto Notranja zanka z odpadki ure ciklov

Uporabite simulator kot Proteus ISIS in jo osciloskopa na LED .. pin in merjenje časa.Na ta način lahko ugotovite, časovno obdobje zanke

OPOMBA: to ne bo prineslo enakem roku za vse kristalnega oscilatorja.Njena samo preveriti, koliko zamude za posebne osc kristala in spremenljivko zanke

 

Welcome to EDABoard.com

Sponsor

Back
Top