Hjelp i c språk koding i pic18f452 ...

W

Waran

Guest
Dette er koding jeg skrevet og kompilert og ingen feil blir oppdaget.Men etter at jeg har brent de koding i chip og prøve ut i krets Det fungerte ikke.Er det på grunn av krets feil eller koding?Er det mulig at kodingen er feil etter sammensatt og ingen feil er oppdaget?void main (void)
(
TRISA = 0x00; / / Initialiser disse portene som Utganger
TRISC = 0x00; / / Dette er for
TRISD = 0x00; / / Dette tooooPorta = 0x00; / / Initialiser Porta ... så lyset er slått av

PORTC.F0 = 0; / / Brake Off
PORTD.F1 = 1; / / Direction Videresend
PORTD.F1 = 0; / / Direction reverse

mens (1)
(
if (PORTD.F1 == 1)
(
Delay_ms (500);
Delay_ms (500);
Delay_ms (500);
Delay_ms (500); / / 4 * 0,5 sekunder = 2 sekunders pause
PORTC = 0b00001111; / / 0x0F full fart

Delay_ms (500);
Delay_ms (500);
Delay_ms (500);
Delay_ms (500); / / 4 * 0,5 sekunder = 2 sekunders pause
PORTC = 0b00001011; / / 0X0B (3 / 4 full hastighet)

Delay_ms (500);
Delay_ms (500);
Delay_ms (500);
Delay_ms (500); / / 4 * 0,5 sekunder = 2 sekunders pause
PORTC = 0b00000101; / / 0x07 (1 / 2 Full Speed)

Delay_ms (500);
Delay_ms (500);
Delay_ms (500);
Delay_ms (500); / / 4 * 0,5 sekunder = 2 sekunders pause
PORTC = 0b00000011; / / 0x03 (1 / 4 full hastighet)

PORTD.F0 = 1; / / Turn Brake På
Delay_ms (500); / / Pause 0,5 sekunder
PORTD.F0 = 0; / / Turn Brake Off
)
else if (PORTD.F1 = 0)
(
Delay_ms (500);
Delay_ms (500);
Delay_ms (500);
Delay_ms (500); / / 4 * 0,5 sekunder = 2 sekunders pause
PORTC = 0b00001111; / / 0x0F (Full Speed)

Delay_ms (500);
Delay_ms (500);
Delay_ms (500);
Delay_ms (500); / / 4 * 0,5 sekunder = 2 sekunders pause
PORTC = 0b00001011; / / 0X0B (3 / 4 full hastighet)

Delay_ms (500);
Delay_ms (500);
Delay_ms (500);
Delay_ms (500); / / 4 * 0,5 sekunder = 2 sekunders pause
PORTC = 0b00000101; / / 0x07 (1 / 2 Full Speed)

Delay_ms (500);
Delay_ms (500);
Delay_ms (500);
Delay_ms (500); / / 4 * 0,5 sekunder = 2 sekunders pause
PORTC = 0b00000011; / / 0x03 (1 / 4 full hastighet)

PORTD.F0 = 1; / / Turn Brake På
Delay_ms (500); / / Pause 0,5 sekunder
PORTD.F0 = 0; / / Turn Brake Off
)
)
)Funksjonen til denne kodingen er å kjøre en DC motor.If (PORTD.F1 == 1) blir brukt, DC motor vil kjøre i klokken retning, pause i 2 sekunder, og kjøre i full fart.Og det pause på 2 sekunder, kjører til 3 / 4 hastighet og deretter pause på 2 sekunder kjøre til 1 / 2 hastighet og til slutt pause på 2 sekunder og kjøre til 1 / 4 speed.And deretter brems på, pause på 0,5 sekunder og brems av.

Samme prosedyre går, men i mot klokken retning if (PORTD.F1 == 0) blir brukt.Nedenfor er de kretsene jeg brukte for microcontroller tilkoblinger.<img src="http://images.elektroda.net/92_1250234728_thumb.png" border="0" alt=""/>
 
"else if (PORTD.F1 = 0)"

Jeg tror du mener

"else if (PORTD.F1 == 0)"

sjekke hvilken størrelse argument for Delay_ms () tar?
Hvis det bare er et byte høyeste arg er 255.

 
hei,

Takk for hjelpen.

Jeg forstår ikke om størrelsen argument for Delay_ms ()?
Slik kontrollerer størrelsen på argumentet?

 
se på funksjonen prototype som skal topptekstfilen.
I en 8-bits micro, mest argumenter er en byte.
for eksempel

Funksjon prototype:

void Delay_ms (unsigned char forsinkelse);

en unsigned char bare 8-bits bred,
noe som har en maksimal verdi på 255 eller 0xff.
Hvis det tar en unsigned int som et argument, er du ok som er 16-bit bred,
65535 eller 0xFFFF.

Og hvis du bruker port A som en digital I / O, må du konfigurere ansel register.
Som de fleste Pics med en A / D standard til Analog inngang på reset.

 
Hei,

Kan u redo min koding ved å sette inn nødvendige koding?
For øvrig er jeg ikke bruker PORT A som input / output pin.Faktisk er jeg ikke bruker port A i det hele tatt.

 

Welcome to EDABoard.com

Sponsor

Back
Top