nút thường lệ trong ht-PICC

A

arash_micro

Guest
Chào.
Tôi muốn tạo thói quen nút trong ht-PICC.
Tôi viết mã (không có thói quen debounce) nhưng nó không work.What 's sai lầm của tôi.

if (RB4 = 0) (
DelayMs (50);
chanal ;
)

Cảm ơn.

 
Chào,
Tôi không có ý tưởng về ma của bạn.Nhưng tôi có thể thấy các lỗi cú pháp trong phần này bạn đã đề cập ở trên.if (RB4 = 0) sẽ được thay thế bởi nếu (RB4 == 0).

Bạn biết duy nhất bằng nhau là để chỉ định một giá trị bằng nhau và hai là việc kiểm tra

Lời chúc mừng tốt đẹp nhất.

 
Tôi đã sửa chữa các công trình error.It trong pruteuse nhưng không có trong thực tế.
Tại sao?

 
Chào,

Tất cả depands vào cách phần cứng của bạn được kết nối!Là nút bấm của bạn kết nối với VCC hay Gnd?tức là khi bạn nhấn nút, những gì bạn nhận được trên 1 mã PIN của bạn hay 0?
Hãy nói rằng bạn có được một 0, do đó bạn nút là connectet ở một bên để GND, và khác để RB4 của bạn với một kéo lên (bạn phải có mà).
Sau đó, bạn mã sẽ như thế này:
Mã số:if (RB4 == 0)

(

DelayMs (50);

if (RB4 == 0) / / Nếu nó vẫn còn nằm trên

chanal ;

)

 
Chào!
Ý tưởng mà tôi nhận được từ mã ur là pin này là bình thường kéo lên và khi u nhấn nút nó làm cho pin thấp, các mã cần được như thế này

if (RB0)! / / RB0 nếu không phải là cao sau đó thực thi mã
(
YOUR_CODE;
)
do đó mã này sẽ được thực hiện khi pin thấp.
Tương tự như vậy nếu u muốn thực thi một mã số đặc biệt khi một pin cao giả RB0 mã sau đó phải được như thế này
if (RB0)
(
YOUR_CODE;
)
tôi hy vọng điều này làm cho điểm ur rõ ràng.
Kính trọng

 
Hi waseem,

Có một vấn đề với mã mà bạn đã đăng.Bạn sẽ phải làm một tiểu bang chờ đợi và sau đó kiểm tra pin trở lại.Có nhiều cách khác, nhưng điều này là đơn giản nhất.Các reson cho điều này là bởi vì bạn muốn chắc chắn rằng mã sẽ hoạt động chỉ khi bạn nhấn nút, và không chỉ do bất kỳ chnage ở điện áp có thể gây ra từ các lý do khác.Ngoài ra, với mã của bạn, mã sẽ được exacuted miễn là bạn nhấn nút.
Vì vậy, cho phép nói rằng bạn muốn bật
/ tắt một đèn LED và tắt, với mã của bạn, nó sẽ bật và tắt dẫn miễn là bạn nhấn nút.và ở cuối các lãnh đạo có thể được giảm giá.
Vì vậy, vào cuối ngày, nó tốt để đưa một số trì hoãn hoặc chức năng nào khác mà sẽ làm cho một bấm phím đáng tin cậy hơn.

Chúc may mắn.

 
Hi Gidimiz!
Cảm ơn bạn đã phân tích.Tôi đã biết những gì u đã đề cập, nhưng những gì tôi đã cố gắng để căng thẳng trong mã của tôi là không có cần phải viết "if (RB0 == 1)"
u đơn giản là có thể viết "if (RB0)" và tương tự như vậy, thay vì "if (RB0 == 0)" u có thể viết
"if (RB0)!.
của courese bạn phải thêm một sự chậm trễ nhất định để thực hiện các hoạt động chuyển đổi đáng tin cậy.
Một lần nữa cảm ơn cho phân tích.
Kính trọng

 
Hi waseem,
waseem đã viết:

...
nhưng những gì tôi đã cố gắng để căng thẳng trong mã của tôi là không có cần phải viết "if (RB0 == 1)"

u đơn giản là có thể viết "if (RB0)" và tương tự như vậy, thay vì "if (RB0 == 0)" u có thể viết

"if (RB0)! ...

 
gidimiz đã viết:

Hi waseem,Có một vấn đề với mã mà bạn đã đăng.
Bạn sẽ phải làm một tiểu bang chờ đợi và sau đó kiểm tra pin trở lại.
Có nhiều cách khác, nhưng điều này là đơn giản nhất.
 
Hi SP,

Để có một thời gian dài có một cách khác để làm điều này mà không thực hiện các chương trình bị mắc kẹt!
Bạn sẽ cần phải thực hiện một giờ với ngắt (bạn có thể sử dụng bất kỳ TMR) và đặt chúng vào một tối thiểu mà bạn cần.Ví dụ, nếu điều fasts bạn cần là một đèn flash LED mỗi 0,5 Sec, thì TMR nên được đặt để gây cản trở mọi 0.5.Nếu chỉ có các nút của nó, bạn có thể ngắt mỗi 1sec.
Ok, Không có bạn có một số bộ đếm thời gian đó ngắt mỗi giây 1, vì vậy những gì.Trong gián đoạn, bạn sẽ tăng lên một lá cờ mỗi thời gian gián đoạn này sẽ xảy ra.(Dont quên rõ ràng cờ TMRIF).Sau đó, trong mã chính bạn sẽ kiểm tra xem Cờ đã được thiết lập và nút đó đã được ép.Nếu tất cả mọi thứ đã được chính xác cho 4 lần (tức là 4 giây đã trôi qua) sau đó làm ...
Sau đây là các mã trong điều kiện chung, như là tôi không biết những gì bạn đang sử dụng trình biên dịch.
Mã số:void interrupt (void)

(

Nếu (TMR0IF) / / tôi đã sử dụng bộ đếm thời gian 0 đến cờ

(

TMR0IF = 0;

SecFlag = 1;

TMR0 = 0x80; / / Nạp lại giá trị cho TMR0

)

)Void main (void)

(

SetIO (); / / Đặt tất cả các IO và thiết bị ngoại viTrong khi (1)

(

nếu (SecFlag) / / 1 giây đã thông qua

(

SecFlag = 0; / / Reset cờ của giây

if (RB0) / / nếu nút vẫn còn ép

Nút ;

if (RB0 & &! Button> = 1) / / Nếu nút đã được phát hành tại một số điểm hoặc ở cuối.
Bạn có thể đặt chức năng này ở đây hay ở bên ngoài tốt hơn chức năng này.

(

Nút = 0;

)

nếu (Button> = 4)

RA0 RA0 =;! / / Sẽ bật / tắt LED.

)

If (RB0 & &! Button> = 1) / / cùng chức năng như trước, nhưng ở đây.

Mã số của bạn ...

) / / Kết thúc trong khi (1)) / / Kết thúc chính

 
Hi Gidimiz!
Không có gì.Tôi sẽ luôn luôn đánh giá cao ý kiến của bạn, bởi vì một khi bạn bắt đầu nghĩ rằng u đã học được tất cả mọi thứ sau đó sự sụp đổ của bạn bắt đầu.
Vì vậy, tôi thực sự đánh giá cao ý kiến ur vì nó luôn luôn là hữu ích để thảo luận về những thứ khác với poeple.
Kính trọng.

 
Hi Waseem,

Thanks ...
Donload các Free ", EASY MÃ VIẾT Đối với Người sử dụng MPLAB. (Another Ver mới)". Điều đó tôi đã đăng.Bạn thực sự sẽ thích nó nếu bạn sử dụng C mã.
Thưởng thức.

 

Welcome to EDABoard.com

Sponsor

Back
Top