Thông báo

Collapse
No announcement yet.

Xin giúp đỡ về timer 89C51

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

  • Xin giúp đỡ về timer 89C51

    Xin chào cả nhà!
    Em đang có một chút rắc rối với Timer của 89C51 nhờ các bác giúp đỡ.
    Ý tưởng của em như sau.

    #define P1.0 input
    #define P1.1 LED1
    #define P1.2 LED2
    void main()
    {
    //nhiệm vụ chính
    if(input=0)
    {
    trễ 5s // vi du tre 5s
    LED1 =1;
    trễ 5s // vi du tre 5s
    LED2=1;
    }
    if(input=1)
    {
    trễ 5s // vi du tre 5s
    LED1 =0;
    trễ 5s // vi du tre 5s
    LED2=0;
    }
    // Các chương trình khác

    }// end Main

    vấn đề của em như sau:
    ở đây ta có thể dễ dàng sử dụng hàm delay,nếu dùng hàm delay(5s); nó sẽ làm trẽ toàn bộ các chương trình khác. Em muốn chương trình của em đang thực hiện được nhiệm vụ chính mà các chương trình khác vẫn hoạt động bình thường, không bị ảnh hưởng bởi các hàm delay. Em đã thử sử dụng timer trong 89c51. nhưng em chưa biết điều khiển timer theo đúng yêu cầu.

    Bác nào có kinh nghiệm về timer chỉ giáo cho em xin giải pháp hợp lý. Em xin chân thành cảm ơn!

  • #2
    sử dụng ngắt timer + ngắt ngoài mới đc.

    Comment


    • #3
      Nguyên văn bởi haonv27482 Xem bài viết
      Xin chào cả nhà!
      Em đang có một chút rắc rối với Timer của 89C51 nhờ các bác giúp đỡ.
      Ý tưởng của em như sau.

      #define P1.0 input
      #define P1.1 LED1
      #define P1.2 LED2
      void main()
      {
      //nhiệm vụ chính
      if(input=0)
      {
      trễ 5s // vi du tre 5s
      LED1 =1;
      trễ 5s // vi du tre 5s
      LED2=1;
      }
      if(input=1)
      {
      trễ 5s // vi du tre 5s
      LED1 =0;
      trễ 5s // vi du tre 5s
      LED2=0;
      }
      // Các chương trình khác

      }// end Main

      vấn đề của em như sau:
      ở đây ta có thể dễ dàng sử dụng hàm delay,nếu dùng hàm delay(5s); nó sẽ làm trẽ toàn bộ các chương trình khác. Em muốn chương trình của em đang thực hiện được nhiệm vụ chính mà các chương trình khác vẫn hoạt động bình thường, không bị ảnh hưởng bởi các hàm delay. Em đã thử sử dụng timer trong 89c51. nhưng em chưa biết điều khiển timer theo đúng yêu cầu.

      Bác nào có kinh nghiệm về timer chỉ giáo cho em xin giải pháp hợp lý. Em xin chân thành cảm ơn!
      bạn sẽ làm đựợc nếu dùng vi xử lý còn vi điều khiển thì ko thể


      MOV NHÀ,ANH
      MOV NHÀ,EM
      ADD ANH,EM

      Comment


      • #4
        Nguyên văn bởi boynghean Xem bài viết
        bạn sẽ làm đựợc nếu dùng vi xử lý còn vi điều khiển thì ko thể
        "BS" tại sao lại ko thể, VDK có nhân là VXL mờ chú. VDK thì ko gì là không thể nhé, vấn đề là dùng con nào có thể thôi.

        Comment


        • #5
          Nguyên văn bởi chung1608 Xem bài viết
          "BS" tại sao lại ko thể, VDK có nhân là VXL mờ chú. VDK thì ko gì là không thể nhé, vấn đề là dùng con nào có thể thôi.
          hô hô vi điều khiển nó đọc lệnh từ trên xuống theo thứ tự khi gặp rẽ nhắnh la rẽ còn vi xử lí nó đọc lệnh kiểu cây nên vừa làm cái này vừa làm cái kia đựợc


          MOV NHÀ,ANH
          MOV NHÀ,EM
          ADD ANH,EM

          Comment


          • #6
            Nguyên văn bởi boynghean Xem bài viết
            hô hô vi điều khiển nó đọc lệnh từ trên xuống theo thứ tự khi gặp rẽ nhắnh la rẽ còn vi xử lí nó đọc lệnh kiểu cây nên vừa làm cái này vừa làm cái kia đựợc
            đúng là trong 1 thời điểm chỉ có 1 lệnh đc thực thi, nhưng là người viết chương trình thì cần phải biết cách sử dụng phần cứng để tối ưu lại hiệu quả của hệ thống.
            Như luồng này, thời gian delay là 5sec, nếu sử dụng vòng lập tạo delay tất nhiêu trong 5sec đó VDK ko thể làm chuyện khác. Nhưng nếu dùng ngắt timer, sao khi làm việc trong ngắt xong, VDK nhảy ra làm việc khác để chờ ngắt lần 2. Nên biết thời gian tối đa của ngắt timer là 65536 chu kì máy, đủ thời gian trống cho việc làm ít nhất 16384 lệnh khác .

            Comment


            • #7
              Nguyên văn bởi chung1608 Xem bài viết
              đúng là trong 1 thời điểm chỉ có 1 lệnh đc thực thi, nhưng là người viết chương trình thì cần phải biết cách sử dụng phần cứng để tối ưu lại hiệu quả của hệ thống.
              Như luồng này, thời gian delay là 5sec, nếu sử dụng vòng lập tạo delay tất nhiêu trong 5sec đó VDK ko thể làm chuyện khác. Nhưng nếu dùng ngắt timer, sao khi làm việc trong ngắt xong, VDK nhảy ra làm việc khác để chờ ngắt lần 2. Nên biết thời gian tối đa của ngắt timer là 65536 chu kì máy, đủ thời gian trống cho việc làm ít nhất 16384 lệnh khác .
              anh qua giúp cái thread em post lên với,http://www.dientuvietnam.net/forums/...igital-146169/

              Comment


              • #8
                Nguyên văn bởi chung1608 Xem bài viết
                đúng là trong 1 thời điểm chỉ có 1 lệnh đc thực thi, nhưng là người viết chương trình thì cần phải biết cách sử dụng phần cứng để tối ưu lại hiệu quả của hệ thống.
                Như luồng này, thời gian delay là 5sec, nếu sử dụng vòng lập tạo delay tất nhiêu trong 5sec đó VDK ko thể làm chuyện khác. Nhưng nếu dùng ngắt timer, sao khi làm việc trong ngắt xong, VDK nhảy ra làm việc khác để chờ ngắt lần 2. Nên biết thời gian tối đa của ngắt timer là 65536 chu kì máy, đủ thời gian trống cho việc làm ít nhất 16384 lệnh khác .


                bạn chưa đọc kĩ rồi chung bạn ấy hỏi là" Em muốn chương trình của em đang thực hiện được nhiệm vụ chính mà các chương trình khác vẫn hoạt động bình thường,""" có nghĩa là 1 lúc chạy 2 chương trình đó
                bạn nói làm đựợc vậy bạn thử viết dùm tôi đoạn code trong 1 thời điểm vừa quét led 7 đoạn vừa quét ma trận 5x5 thử nào ko vần gì lớn lao đâu chỉ cần sau 2 sec led7 chuyển từ sô1 sang số 2 và matran chuyển chữ a thành chữ b led7 đếm từ 0 đến 5 matran hiển thị a đến e thôi????????
                chỉ cần 2sec chứ ko cần tới 5sec như bạn kia đâu


                MOV NHÀ,ANH
                MOV NHÀ,EM
                ADD ANH,EM

                Comment


                • #9
                  Nguyên văn bởi boynghean Xem bài viết
                  bạn chưa đọc kĩ rồi chung bạn ấy hỏi là" Em muốn chương trình của em đang thực hiện được nhiệm vụ chính mà các chương trình khác vẫn hoạt động bình thường,""" có nghĩa là 1 lúc chạy 2 chương trình đó
                  bạn nói làm đựợc vậy bạn thử viết dùm tôi đoạn code trong 1 thời điểm vừa quét led 7 đoạn vừa quét ma trận 5x5 thử nào ko vần gì lớn lao đâu chỉ cần sau 2 sec led7 chuyển từ sô1 sang số 2 và matran chuyển chữ a thành chữ b led7 đếm từ 0 đến 5 matran hiển thị a đến e thôi????????
                  chỉ cần 2sec chứ ko cần tới 5sec như bạn kia đâu
                  có gì là khó nhỉ

                  Comment


                  • #10
                    với cái bài thế kìa thì xài 2 timer 1 lúc thừa khả năng làm đc mà đảm bảo ko gây trễ theo ý chủ topic.
                    còn việc muốn làm 2 việc 1 lúc theo kiểu chạy 2 chuong trình thì có thể xài đa nhiệm. mà cái này ko rành nên ko dám ý kiến
                    Website chính thức đổi địa chỉ website thành
                    Mời các bạn ghé thăm !!!

                    Comment


                    • #11
                      Nguyên văn bởi kidteam Xem bài viết
                      có gì là khó nhỉ

                      nếu ko khó bạn thử làm tôi xem,hay cũng chỉ nói suông?????????


                      MOV NHÀ,ANH
                      MOV NHÀ,EM
                      ADD ANH,EM

                      Comment


                      • #12
                        Nguyên văn bởi boynghean Xem bài viết
                        nếu ko khó bạn thử làm tôi xem,hay cũng chỉ nói suông?????????
                        để đơn giản hơn tôi làm thế này nhé
                        tôi sử dụng 2 led
                        led thứ nhất cứ sau 2s thì đổi trạng thái
                        led thứ 3s thì đổi trạng thái
                        như vậy có được không

                        Comment


                        • #13
                          Nguyên văn bởi kidteam Xem bài viết
                          để đơn giản hơn tôi làm thế này nhé
                          tôi sử dụng 2 led
                          led thứ nhất cứ sau 2s thì đổi trạng thái
                          led thứ 3s thì đổi trạng thái
                          như vậy có được không

                          nhua vậy ko có nghĩa là quét bạn ạ, tôi cúng làm đựợc vấn đề là bạn ấy hỏi 1 lúc chạy 2 chương trình như máy tính ấy
                          bạn có thấy máy tính vừa nghe nhạc vừa soạn văn bản đựợc ko??????


                          MOV NHÀ,ANH
                          MOV NHÀ,EM
                          ADD ANH,EM

                          Comment


                          • #14
                            Nguyên văn bởi boynghean Xem bài viết
                            nhua vậy ko có nghĩa là quét bạn ạ, tôi cúng làm đựợc vấn đề là bạn ấy hỏi 1 lúc chạy 2 chương trình như máy tính ấy
                            bạn có thấy máy tính vừa nghe nhạc vừa soạn văn bản đựợc ko??????

                            ý bạn ấy chỉ là cái delay kia không ảnh hưởng đến đến chương trình phía sau thôi mà
                            haiz

                            Comment


                            • #15
                              Nguyên văn bởi boynghean Xem bài viết
                              bạn chưa đọc kĩ rồi chung bạn ấy hỏi là" Em muốn chương trình của em đang thực hiện được nhiệm vụ chính mà các chương trình khác vẫn hoạt động bình thường,""" có nghĩa là 1 lúc chạy 2 chương trình đó
                              bạn nói làm đựợc vậy bạn thử viết dùm tôi đoạn code trong 1 thời điểm vừa quét led 7 đoạn vừa quét ma trận 5x5 thử nào ko vần gì lớn lao đâu chỉ cần sau 2 sec led7 chuyển từ sô1 sang số 2 và matran chuyển chữ a thành chữ b led7 đếm từ 0 đến 5 matran hiển thị a đến e thôi????????
                              chỉ cần 2sec chứ ko cần tới 5sec như bạn kia đâu
                              ko rảnh viết code matrix, lấy tạm code của congminh viết thêm.
                              [MENTION=22035]CongMinh[/MENTION]: sorry about that ^^!
                              Attached Files

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X