là chương trình này có thể?

M

markcalaway

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

main (void)
(

int i, j, x, y;
x = 16;
y = 128;
j = 1; / / đầu tiên servo = throttle

while (x <= 20)
(
i = 0;
trong khi (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x-4); / / throttle phút đến tối đa
PORTBbits.RB (j) = 0;
Delay100TCYx (y 4);
i ;
)
x 1;
y-1;
)
x = 16;
y = 128;
trong khi (x> = 12)
(
i = 0;
trong khi (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x 4); / / throttle max đến min
PORTBbits.RB (j) = 0;
Delay100TCYx (y-4);
i ;
)
x-1;
y 1;
)
i ; / / servo thay đổi một lần

trong khi (j <5) / / servo thay đổi 4 lần
(
x = 16;
y = 128;
while (x <= 20)
(
i = 0;
trong khi (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x); / / servos khác trung lập để tối đa
PORTBbits.RB (j) = 0;
Delay100TCYx (y);
i ;
)
x 1;
y-1;
)
x = 16;
y = 128;
trong khi (x> = 12)
(
i = 0;
trong khi (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x 4); / / servos khác max đến min
PORTBbits.RB (j) = 0;
Delay100TCYx (y-4);
i ;
)
x-1;
y 1;
)
x = 16;
y = 128;
while (x <= 16)
(
i = 0;
trong khi (i <2)
(
TRISBbits.TRISB (j) = 0;
PORTBbits.RB (j) = 1;
Delay100TCYx (x); / / khác servos phút để trung lập
PORTBbits.RB (j) = 0;
Delay100TCYx (y);
i ;
)
x 1;
y-1;
)
i ; / / thay đổi servo
)
)Chúng tôi sẽ sử dụng chương trình này để kiểm soát 5 servos của một trực thăng RC.Cảng B sẽ được dành riêng cho việc này.(Ví dụ: Cảng B pin 1 điều khiển ga, pin 2 điều khiển bánh lái và vv.

Vấn đề chúng tôi đã nằm trong 'TRISBbits.TRISB (j)', như vậy mà nó không nhận biết sự 'j'.Với dòng này im cố gắng để thay đổi các bit của cảng là đầu ra.Tôi đã cố gắng đăng ký thay đổi, nhưng cuối cùng tôi vẫn nghĩ rằng vấn đề nằm trong thiết lập bit tương ứng như đầu ra và không phải là việc chuyển đổi.Vậy là tôi có bất cứ lệnh có thể sử dụng để thiết lập đầu ra bằng cách sử dụng định dạng cũ của tôi hay cái gì đó tương tự mà không thực hiện bất kỳ thay đổi quan trọng cho chương trình.Lời khuyên nào sẽ được đánh giá cao.Cảm ơn bạn.

 
Trước hết bạn nên xác định những trình biên dịch bạn đang sử dụng.

Tôi không nghĩ rằng nó có thể ghi các chương trình như bạn muốn làm bạn nên cân nhắc việc sử dụng một giá trị mặt nạ để xóa / đặt bit riêng lẻ của một cổng.

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

/ / Thiết lập cá nhân bit
PORTB | = mặt nạ [x];

/ / Rõ ràng từng bit
PORTB & = mask ([x] ^ 0xFF);

hy vọng điều này sẽ giúp và best regards

 

Welcome to EDABoard.com

Sponsor

Back
Top