Thông báo

Collapse
No announcement yet.

cầu cứu về cách lập trình cho pic làm nhiều tác vụ một lúc

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • cầu cứu về cách lập trình cho pic làm nhiều tác vụ một lúc

    mình có một thắc mắc rất đau đầu mà không nghĩ ra. đó là mình có làm một mạch điều khiển đèn theo nút nhấn thường mở bằng Pic . mình có 8 nút nhấn thường mở được nối vào các chân a0,a1,a2,a3,a4,a5,e0,e1,e2 và 8 bóng đèn led được nối với các chân tương ứng của port c mình dùng pic 16f 887, mình muốn lập trình cho mạch là khi có một nút được nhấn xuống vd như nút nối với a0 chẳng hạn thì đèn led tương ứng được nối với c0 sẽ sáng nhấp nháy trong 10 phút rồi tắt , chuyện này thi quá đơn giãn nhưng vấn đề ở đây là khi đèn led c0 đang sáng mà có một nút nhấn khác vi dụ như nút a1 chẳng hạn được nhấn thì phải lập trình như thế nào để đèn led c0 vẫn sáng nhấp nháy bình thường và led c1 lại bắt đàu sáng nhấp nháy . và tương tư như vậy đối với những nút nhấn và những đèn led khác. mong các bác các anh các em các chị và các bạn giúp đở.
    ----------------------------------------------------------------
    TRẦN HẢI ĐĂNG (FOSTER VN)
    sống là cho đâu chỉ nhận riêng mình
    thanks!

  • #2
    Bạn có nhớ cách hiển thị hình ảnh lên màn hình không? "Nhiều việc cùng lúc" cũng được làm tương tự, các việc được làm trong khoảng thời gian đủ ngắn, và ta cảm thấy nó như được làm đồng thời.
    Với bài toán của bạn thì tớ có thể dùng 8 biến đếm khác nhau cho 8 đèn, và một vòng lặp chung để kiểm tra các nút bấm, đồng thời hiển thị led và đếm giảm các biến đếm.
    Hy vọng gợi í được cho cậu.

    Comment


    • #3
      rất cảm ơn bạn nhưng nút nhấn thường mở khi nhấn xong là sẽ trở lại vị trí ban đầu liên vậy dèn có sang nhấp nháy tời 10 phút được không bạn .

      Comment


      • #4
        Nguyên văn bởi dangtran_fv Xem bài viết
        rất cảm ơn bạn nhưng nút nhấn thường mở khi nhấn xong là sẽ trở lại vị trí ban đầu liên vậy dèn có sang nhấp nháy tời 10 phút được không bạn .
        Làm mấy cái này nên học cách sử dụng bộ Timer/counter của vi điều khiển nữa.

        Comment


        • #5
          Làm như Knowmore là OK rồi,bạn viết 8 cái sub cho mỗi led,cứ khi nút nào nhấn thì gọi cái sub đó ra,dùng 1 timer là đc-->quá dễ!


          email:
          Giá mà mạch điện tử không có nhiễu (noise) thì mình bây giờ đã là ... đại gia

          Comment


          • #6
            Kỹ thuật lập trình round-robin bạn search thêm trên mạng, thân.

            Tóm tắt kỹ thuật này là dùng 1 timer để định thời 10ms chạy 1 lần. Trong 10ms đó các hàm được viết kiểu máy trạng thái (State Machine) chạy kiểm ta và cập nhật. Bạn có thể viết hang chục tác vụ song song.
            Vẫn biết mỗi lần xa là một lần về lại...

            Comment


            • #7
              sao cai nay minh thay giong rtos qua vay
              Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
              Tel: 0903 702 417. Email: web:

              Comment


              • #8
                Rtos cao hơn cái này gấp nhiều lần chứ ! bạn xài Rtos chưa mà phát biểu lung tung zậy !

                Comment


                • #9
                  Hi!

                  Bạn có thể làm điều này thông qua 1 ngắt timer và 8 biến đếm,
                  Trong hàm ngắt timer viết 8 hàm để kiểm tra 8 biến này.
                  tớ xin góp ý:

                  char counter_led[8];
                  //counter_led[i]=0 không có nút nào được nhấn
                  //Nếu nút thứ i được nhấn >>---> counter_led[i]=1

                  //ham ngat timer
                  //gia su ngat timer la 1 phut

                  Void Timer_interupt()
                  {
                  for(i=0;i<8;i++)
                  {
                  if(counter_led[i])
                  {
                  //cho led tuong ung nut nhan nhap nhay
                  led[i]=!led[i];
                  //kiem tra xem nhap nhay du chua
                  if(counter_led[i]++>10)counter_led[i]=0;
                  }
                  }
                  };

                  ----^..^----

                  Comment


                  • #10
                    Chào các bạn. Mình không biết nhiều về PIC, mình có 1 đoạn code này nhờ các bạn diễn giải giúp mình và hỗ trợ mình cách đổi nó thành phím như phím quạt.

                    Toggle_

                    btfsc FLAG,0
                    return
                    addwf PC,1

                    btfsc pin7
                    goto $ +3
                    bsf pin7
                    goto $ +2
                    bcf pin7
                    return

                    btfsc pin6
                    goto $ +3
                    bsf pin6
                    goto $ +2
                    bcf pin6
                    return

                    btfsc pin3
                    goto $ +3
                    bsf pin3
                    goto $ +2
                    bcf pin3
                    return

                    btfsc pin2
                    goto $ +3
                    bsf pin2
                    goto $ +2
                    bcf pin2
                    return


                    bcf pin2
                    bcf pin3
                    bcf pin6
                    bcf pin7
                    return

                    Comment

                    Về tác giả

                    Collapse

                    dangtran_fv Tìm hiểu thêm về dangtran_fv

                    Bài viết mới nhất

                    Collapse

                    Đang tải...
                    X