Je možné v tomto programe?

M

markcalaway

Guest
# Include <p18f252.h>
# Include <delays.h>

main (void)
(

int i, j, x, y;
x = 16;
y = 128;
j = 1, / / prvý servo = plyn

while (x <= 20)
(
i = 0;
while (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x-4), / / min plynu na max
PORTBbits.RB (j) = 0;
Delay100TCYx (y 4);
i ;
)
x 1;
y-1;
)
x = 16;
y = 128;
while (x> = 12)
(
i = 0;
while (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1,
Delay100TCYx (x 4) / / plynu na max min
PORTBbits.RB (j) = 0;
Delay100TCYx (y-4);
i ;
)
x-1;
y 1;
)
j ; / / servo zmeniť, akonáhle

while (j <5) / / zmena servo 4 krát
(
x = 16;
y = 128;
while (x <= 20)
(
i = 0;
while (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x); / / ostatné serva neutrálne max
PORTBbits.RB (j) = 0;
Delay100TCYx (y);
i ;
)
x 1;
y-1;
)
x = 16;
y = 128;
while (x> = 12)
(
i = 0;
while (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x 4) / / ostatné serva max na min
PORTBbits.RB (j) = 0;
Delay100TCYx (y-4);
i ;
)
x-1;
y 1;
)
x = 16;
y = 128;
while (x <= 16)
(
i = 0;
while (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x); / / ostatné serva min na neutrálne
PORTBbits.RB (j) = 0;
Delay100TCYx (y);
i ;
)
x 1;
y-1;
)
j ; / / zmena servo
)
)Budeme používať program na kontrolu 5 serva z Rc vrtuľníka.Port B bude venovaný na to.(Napr. Port B pin 1 ovláda plyn, pin 2 ovládanie kormidla a tak ďalej.

Problém máme leží v 'TRISBbits.TRISB (j)', tak, že neuznáva 'j'.Vďaka tejto línie im snaží zmeniť bity portu ako výstupu.Už som sa snažil posuvný register, ale nakoniec som stále si myslím, že problém spočíva v stanovení zodpovedajúcej bit na produkciu a nie radenie.Takže je nejaký príkaz ktorý by som mohol použiť na nastavenie výstupu pomocou môj starý formát alebo niečo podobné, bez akýchkoľvek zásadných zmien v programe.Any advice chcel by som byť ocenil.Ďakujem ti.

 
V prvom rade by ste mali určiť, ktoré prekladač, ktorý používate.

Nemyslím si, že je možné napísať program, ako ste vy chcete robiť, mali by ste zvážiť použitie masky hodnotu vymazať / nastavenie jednotlivých bitov portu.

const unsigned char maska [] = (0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80);

/ / Nastavenie jednotlivých bitov
Portbou | = maska [x];

/ / Clear jednotlivých bitov
Portbou & = (maska [x] ^ 0xff);

hope this helps a pozdravom

 

Welcome to EDABoard.com

Sponsor

Back
Top