Thông báo

Collapse
No announcement yet.

thắc mắc chút mong các anh giúp!!!!

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

  • thắc mắc chút mong các anh giúp!!!!

    cho em hỏi là con 89c51 va con 89c52 ci khác nhau gì ko các anh hay no giống nhau tất cả như về cấu trúc và cách lập trình chỉ khác nhau là bộ nhớ phải ko vậy chỉ em nha đừng chửi em ga

  • #2
    câu trả lời đó u

    Nguyên văn bởi qazwsxedc310 Xem bài viết
    giống nhau tất cả như về cấu trúc và cách lập trình chỉ khác nhau là bộ nhớ

    Comment


    • #3
      ai chỉ giúp em viết 1 đoạn chương trình này bầng ASM di giá trị ở 1 port P0 của em có giá trị diều khiển bằng ADC0804 co giá tri từ 20 đến 40 chỉ em viết chương trình delay sao cho ở giá trị 40 thì thời gian delay nhỏ nhất và 20 co thời gian lớn nhất thời gian delay ko quá 10ms ai chỉ giúp em với

      Comment


      • #4
        ai chỉ giúp em viết 1 đoạn chương trình này bầng ASM di giá trị ở 1 port P0 của em có giá trị diều khiển bằng ADC0804 co giá tri từ 20 đến 40 chỉ em viết chương trình delay sao cho ở giá trị 40 thì thời gian delay nhỏ nhất và 20 co thời gian lớn nhất thời gian delay ko quá 10ms ai chỉ giúp em với
        - Bạn mô tả bài toán rõ một chút đi, rồi mọi người cùng xem xét. Có phải bài toán của bạn là đọc giá trị từ ADC0804 gửi về từ port 0, giá trị này nằm trong khoảng 20 đến 40. Căn cứ vào giá trị đọc về mà điều khiển độ trễ của hàm delay phải không?
        - Giả sử giá trị đọc về của bạn là x, nếu x nằm ngoài khoảng 20 - 40 thì bỏ qua không thay đổi hàm delay. Nếu x nằm trong khoảng này, vậy thì (40 - x) sẽ tỉ lệ nghịch với x, tức là x càng gần 40 thì (40 - x) càng nhỏ và ngược lại. Bạn xây dựng một hàm delay có tham số. Tham số đó tỷ lệ thuận với (40 - x) thế thì mỗi lần x tăng hay giảm, thời gian delay của hàm sẽ tỷ lệ nghịch với x và nó đạt giá trị min khi x = 40, max khi x = 20.

        - Giả sử chương trình delay viết là
        delay:
        mov R3,(40-x) // Bạn phải tự tính (40 - x) lưu vào một thanh ghi rồi sau
        // mới copy vào r3 được, asm ko cho phép viết thế này,
        //toi chi viết minh họa thôi
        here: djnz R3,here
        ret
        - Lệnh đầu tiên và thứ 3 tốn đều tốn 1 chu kỳ máy, lệnh djnz tốn 2 chu kỳ máy vì thế thời gian delay của chương trình này là ((2.(40-x)+ 1 + 1).1,085)
        micro giây nếu thạch anh là 11.0592M. Vậy thời gian delay lớn nhất có thể là (2.20 + 1 + 1).1,085 = 45,57us. Để thời gian delay không vượt quá 10ms thì bạn lặp chương trình này khoảng 230 lần vậy chương trình có thể là:
        delay:
        mov R3,(40-x)
        loop:
        mov R4,#230
        here: djnz R4,here
        djnz R3,loop
        ret
        Chương trình này delay tối đa khoảng 10,4ms khi x = 20 và min khoảng 0,5ms

        - Tôi thử đưa ra một giải pháp cho bạn xem có được không?

        Thân mến,
        For a better world

        Comment


        • #5
          dùng timer để viết và tính toán thời gian thưc dc ko vậy anh em dùng thach anh 12M chu kỳ máy là 1us

          Comment


          • #6
            dùng timer để viết và tính toán thời gian thưc dc ko vậy anh em dùng thach anh 12M chu kỳ máy là 1us
            - Bạn có thể dùng timer làm bộ định thời, nhưng nó không thể cung cấp cho bạn thời gian thực đâu. Muốn có thời gian thực bạn phải sử dụng những IC RTC như DS12887, hoặc DS1307... mới được.
            For a better world

            Comment


            • #7
              vậy là dùng timer ko viết được Chương trình này delay tối đa khoảng 10,4ms khi x = 20 và min khoảng 0,5ms hả anh
              mov r3,(40-x)
              X:
              MOV TH0,#(-5)
              MOV TL0,#(-5)
              DJNZ R3,X
              RET

              Comment


              • #8
                - Không phải thế, đây là bạn dùng timer để tạo thời gian giữ chậm. Đó cũng là thời gian trong hệ thống VDK, nhưng không phải là thời gian thực.
                For a better world

                Comment


                • #9
                  nhưng cái chương trình đó khoảng bao nhieu us vậy em cần làm sao ct delay no nằnm trong khoảng từ 0 và tối đa ko quá 10ms viết thế liệu có dúng ko

                  Comment


                  • #10
                    - Điểm cốt lõi trong thuật toán của bài là hãy xây dựng cái hàm delay có tham số. và tham số này phải thỏa mãn 2 điều kiện:
                    + Tỷ lệ nghịch với giá trị đọc về từ ADC
                    + Delay trong khoảng 0 - 10ms
                    - Như vậy giải pháp truyền tham số tôi nêu ra không tối ưu, chúng ta có thể cùng thảo luận để tìm một giải pháp khác tối ưu hơn cho bài toán này.

                    Thân mến,
                    For a better world

                    Comment


                    • #11
                      em dùng hàm delay này dễ kíck triac dieu khien bóng đèn với quạt nên ko cần tối ưu 100% chĩ cần thời gian delay nó ko vượt quá 10ms thôi chứ em học lý thuyết ko thấy nhắc đến phần tính toán thời gian chỉ nghĩ là với thạch anh 12Mhz thì chu kỳ sẽ là 1us và cứ thế mà tính lên thôi

                      Comment


                      • #12
                        anh toan gioi wa ha em nguong mo anh wa
                        hãy làm theo cách của bạn!

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X