Thông báo

Collapse
No announcement yet.

giup minh ve chuong trinh cho 8051..

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

  • giup minh ve chuong trinh cho 8051..

    t muốn cho 2 chương trình con cùng chạy 1 lúc thì làm thế nào vậy???
    đây là một ví dụ nhỏ..t muốn cho chương trình con "a" chạy cùng các chương trình khác!!!
    Attached Files

  • #2
    gọi lần lượt từng ct , vd :
    Code:
    main()
    {while(1){a();nhap_nhay();};}

    Comment


    • #3
      có vẻ không được ổn lắm bạn a!nó chạy không như ý muốn.cụ thể là bọn t muốn làm biển quảng cáo có led đường viền chạy với tần số độc lập với các led khác..
      vi du sau:t muốn cho led3 nháy độc lập với các kiểu nháy của led1 v led2!
      Attached Files

      Comment


      • #4
        Nguyên văn bởi XXXXX Xem bài viết
        có vẻ không được ổn lắm bạn a!nó chạy không như ý muốn.cụ thể là bọn t muốn làm biển quảng cáo có led đường viền chạy với tần số độc lập với các led khác..
        vi du sau:t muốn cho led3 nháy độc lập với các kiểu nháy của led1 v led2!
        em nghĩ nếu chỉ là hiệu ứng cho led thì làm cho các led có khoảng delay on/off theo một quy luật mong muốn còn với tần số chênh lệch bất kì thì phải kết hợp với sài ngắt thôi ,,nhưng nếu chỉ là hiệu ứng nhấp nháy cho khác nhau thì với led đơn từ x0 -- >xn .. anh hoàn toàn có thể gán cho nó một cấp số công hay cấp số nhân gì đó ..(nói chung là quan hệ theo hàm..)về thời gian delay.. vậy thì chương trình mới dễ còn không thì cứ ngắt đi..
        ah mà anh viết Keilc có kèm theo Assembly thì cho em một mẫu vd ngắn nhé !

        Comment


        • #5
          VDK 8051 chỉ cho phép thực hiện các lệnh theo tuần tự, do đó không thể chạy cùng một lúc 2 lệnh hay 2 chương trình. Nhưng có thể lập trình cho vi điều khiển chạy nhiều chương trình bằng cách sử dụng timer và chia khoảng thời gian thực thi cho từng chương trình.
          Lấy ví dụ chương trình 1 chạy sau 200ms, chương trình 2 là 300ms.
          Vậy tạo một timer ngắt là 1ms.
          Đếm số lần ngắt, nếu đủ 200ms chạy chương trình 1, nếu đủ 300ms chạy chương trình 2. Cứ như vậy sẽ thấy có hiệu ứng như cả 2 chương trình cùng chạy.
          Ethernet-RS232, PIC Webserver, RFID Reader
          CallerID, Cảnh báo BTS, ...
          0988006696
          linhnc308@gmail.com
          http://linhnc308.blogspot.com

          Comment


          • #6
            nếu theo bạn linhnc308 ma chương trình 1 dai hơn 200ms thi không thể chạy hết chương trình ah?với lại bạn viết thử chương trình cho t để t mô phỏng bằng proteus(ma t post lên rùi đấy) thử xem có được không!

            Comment


            • #7
              mọi người giúp mình sửa chương trình với!

              Comment


              • #8
                Với code của bạn đang có, chỉ cần đưa chương trình a vào vòng ngắt timer là xong.
                Chương trình chính bạn vẫn chạy như bình thường. Tạo thêm ngắt timer 1ms và đếm số lần ngắt, cứ sau 1000 lần thì đảo mức Led3. Như vậy sẽ thực thi chương trình a.
                Ethernet-RS232, PIC Webserver, RFID Reader
                CallerID, Cảnh báo BTS, ...
                0988006696
                linhnc308@gmail.com
                http://linhnc308.blogspot.com

                Comment


                • #9
                  hOS demo

                  Nói chung có nhiều cách để làm việc này. Tôi đưa ra một cách là sử dụng RTOS của tôi. Có cái example đây, rất dễ hiểu và rất phù hợp với ứng dụng này!
                  Attached Files

                  Comment


                  • #10
                    hic..dù gì thì cũng cam ơn bạn nhưng t mới tìm hiểu về lập trình nên còn non lắm..bạn sửa giúp mình luôn đi cho t dễ hiểu!ok?

                    Comment


                    • #11
                      Nguyên văn bởi XXXXX Xem bài viết
                      có vẻ không được ổn lắm bạn a!nó chạy không như ý muốn.cụ thể là bọn t muốn làm biển quảng cáo có led đường viền chạy với tần số độc lập với các led khác..
                      vi du sau:t muốn cho led3 nháy độc lập với các kiểu nháy của led1 v led2!
                      Nếu chỉ cần như này thì quá đơn giản. Bạn chỉ cần chọn một tần số f1 là ước số chung lớn nhất của các tần số trên. Dùng timer tạo tần số f1. Sau đó dùng một biến đếm để biết khi nào đạt đc tần số nào.
                      Ví dụ: bạn cần tạo 2 tần số là 20Hz và 30Hz chẳng hạn. Thì dùng timer tạo tần số 10Hz. Trong timer đặt một biến đếm count. Khi count chia hết cho 2 thì tạo xung 20Hz. Khi count chia hết cho 3 thì tạo xung 30Hz. Khi count là bội số chung của 2 và 3 thì nhớ đưa count về 0 (hoặc 1?)
                      AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
                      Xem thêm tại Online Store ---> Click here
                      Mob: 0982.083.106

                      Comment


                      • #12
                        51

                        Cái này chỉ thực hiện được với hệ điều hành OS thôi.

                        Comment


                        • #13
                          Bạn down cái link tôi vừa gửi mà xem. Cái đấy tôi sửa luôn cho bạn rồi còn j. Chỉ có điều là dùng RTOS.
                          Chương trình gồm 4 task chạy song song:
                          task 1: điều khiển LED 1 và LED 2
                          task 2: điều khiển LED 3
                          task 3: điều khiển LED 4
                          task 0: không làm j cả (idle)

                          viết theo kiểu này dễ hiểu hơn là ngoằng mấy cái hàm vào nhau rồi bật tắt timer loạn xị ngậu lên.

                          RTOS này là RTOS made in vietnam. Tôi đặt tên cho nó là hOS. Dùng chạy multitasking rất thích, config cứng, chạy CỰC NHANH. Hiện tại hOS vẫn đang trong quá trình hoàn thiện. Khi nào xong tôi post lên cho mọi người dùng free.
                          Last edited by bvhoang; 09-04-2009, 16:56.

                          Comment


                          • #14
                            các pac co the chi em viet chuong trinh cho mach hien thi nhiet do ko ah? ma mh cung ko bit pot so do len mang .
                            tiep

                            Comment


                            • #15
                              day la so do mach .em gui file.doc, mong cac pac giup em voi. em dang lam do an ma ko chuyen ve VXL.
                              Attached Files
                              tiep

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X