PDA

View Full Version : thuật toán cho pic làm đa tác vụ một lúc


dangtran_fv
05-09-2010, 05:35 AM
chào mọi người .
mình có làm một cái mạc điều khiển 8 cái đèn led bằng 8 cái nút nhấn thườn mở bằng pic 16f887. nguyên tắc hoạt động là 8 nút nhấn được nối vào 8 chân a0,a1,a2,a3,a4,a5,e0,e1,e2 và nối xuống mát. 8 đèn led được nối vào 8 chân c0-c7 . mình muốn khi có một nút nhấn được nhấn vd: nút nhấn a0 được nhấn thì led ở c0 sẽ sáng nhấp nháy 10 phút điều này thi mình biết chì cấn quang nó vo cái vòng lặp nhưng mình gặp một vấn đề là khi quang nó vô cái vòng lặp mà đang còn ở trong vòng lặp thì các nút nhấn khác có tác động pic cung không thèm ngó ngàng gì tới dẫn đến trong lúc đèn này sáng mà nút nhấn khác có tác động thì đèn khác cũng không sáng thế là kế hoạch mình đổ vở tan tành . mình rất mong được các bạn chỉ giáo mở ra cho mình một lối thoát . rất chân thành cảm ơn

0903579509
05-09-2010, 07:54 AM
Bạn nên nghiên cứu các ngắt timer sẽ thực hiện được điều này, tôi nghĩ không khó.
Bạn dùng một ngắt timer nào đó để qui đình tần số nháy led, một timer khác qui định khoảng thời gian 10', mỗi phím bạn có một bít cờ (flag) để đánh dấu là phím được nhấn. khi có phím nào được nhấn thì set bit cờ. timer sẽ xét xem bit cờ nào được set thì cho nhấy nháy. Chương trình chính chỉ có một nhiệm vụ quét qua bàn phím để xem phím nào được nhấn mà thôi.
Chúc bạn thành công.

tdm
05-09-2010, 12:37 PM
chào mọi người .
mình có làm một cái mạc điều khiển 8 cái đèn led bằng 8 cái nút nhấn thườn mở bằng pic 16f887. nguyên tắc hoạt động là 8 nút nhấn được nối vào 8 chân a0,a1,a2,a3,a4,a5,e0,e1,e2 và nối xuống mát. 8 đèn led được nối vào 8 chân c0-c7 . mình muốn khi có một nút nhấn được nhấn vd: nút nhấn a0 được nhấn thì led ở c0 sẽ sáng nhấp nháy 10 phút điều này thi mình biết chì cấn quang nó vo cái vòng lặp nhưng mình gặp một vấn đề là khi quang nó vô cái vòng lặp mà đang còn ở trong vòng lặp thì các nút nhấn khác có tác động pic cung không thèm ngó ngàng gì tới dẫn đến trong lúc đèn này sáng mà nút nhấn khác có tác động thì đèn khác cũng không sáng thế là kế hoạch mình đổ vở tan tành . mình rất mong được các bạn chỉ giáo mở ra cho mình một lối thoát . rất chân thành cảm ơn
bạn gửi code lên mọi người dựa vào đó sẽ góp ý cho bạn.

thaithienanh
05-09-2010, 06:44 PM
Thực ra cái này cũng không hẳn là đa tác vụ đâu, bạn chỉ cần khai báo một timer định thời gian thực, sau đó mỗi lần ấn phím sẽ định thời gian cho led sáng căn cứ vào số liệu đọc ra từ timer, có thể dễ dàng phát triển thành 1 nút ấn 3 phút, nút ấn 20 phút .... (không bị cứng nhắc 10p), lồng thêm cái timer1 nữa để cho nó nhấp nháy, "nếu không có thể xẻ timer0 ra để làm nó nhấp nháy (cái này là ý tưởng chưa thử :D)"

Đa tác vụ là thứ mình cũng rất thích nhưng suy nghĩ thấy khó quá nên từ bỏ ý định đó lâu rùi :D

Chúc vui nhé ...

bien_van_khat
06-09-2010, 09:30 PM
Thực ra cái này cũng không hẳn là đa tác vụ đâu,

CPU có thể xử lý nhiều tác vụ đồng thời chính là đa tác vụ, :p