Apakah program ini mungkin?

M

markcalaway

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

main (void)
(

int i, j, x, y;
x = 16;
y = 128;
j = 1; / / pertama servo = throttle

while (x <= 20)
(
i = 0;
while (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x-4); / / throttle min ke 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); / / throttle max ke min
PORTBbits.RB (j) = 0;
Delay100TCYx (y-4);
i ;
)
x-1;
y 1;
)
j ; / / servo berubah begitu

while (j <5) / / servo perubahan 4 kali
(
x = 16;
y = 128;
while (x <= 20)
(
i = 0;
while (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x); / / servos lainnya netral untuk maks
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); / / servos lain untuk min max
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); / / lain servos menit ke netral
PORTBbits.RB (j) = 0;
Delay100TCYx (y);
i ;
)
x 1;
y-1;
)
j ; / / ubah servo
)
)Kita akan menggunakan program ini untuk mengontrol 5 servos dari Rc Helicopter.Port B akan didedikasikan untuk ini.(Mis. Port B pin 1 mengontrol throttle, pin 2 menguasai kemudi dan seterusnya.

Masalahnya kita terletak pada 'TRISBbits.TRISB (j)', sedemikian rupa sehingga tidak mengenali 'j'.Dengan baris ini im mencoba mengubah bit dari port output.Saya sudah mencoba register geser, tapi akhirnya saya masih berpikir bahwa masalahnya terletak pada pengaturan yang sesuai sama output dan tidak bergeser.Jadi, apakah ada perintah saya bisa gunakan untuk mengatur output menggunakan format lama saya atau yang serupa tanpa membuat perubahan besar pada program tersebut.Any advice would be appreciated.Terima kasih.

 
Pertama-tama Anda harus menentukan kompiler yang Anda gunakan.

Saya tidak berpikir bahwa adalah mungkin untuk menulis program seperti yang ingin Anda lakukan Anda harus mempertimbangkan untuk menggunakan nilai masker untuk menghapus / menetapkan setiap bit dari sebuah port.

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

/ / Set bit individu
PORTB | = mask [x];

/ / Bersihkan sedikit individu
PORTB & = (topeng [x] ^ 0xFF);

hope this helps dan best regards

 

Welcome to EDABoard.com

Sponsor

Back
Top