Thông báo

Collapse
No announcement yet.

viết code assemly cho 8951 đo độ rộng xung

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

  • viết code assemly cho 8951 đo độ rộng xung

    mình đang tìm cách dùng timer để đo độ rộng xung vuông kích vào chân p3.5 hay chân nào tương tự mà chưa biết xử lý code ra sao. Sư phụ nào biết chỉ cho em dùm cái.em xin cảm ơn nhiều nhiểu....

  • #2
    Cái này dễ mà. Bạn sử dụng chân ngắt INT0 và INT1 của 89S52 đi, hai cái ngắt này tác động bằng cạnh xuống.
    Bạn dùng cổng đảo 74HC14 đổi cạnh lên thành cạnh xuống để kích chân INT0,
    Chân INT1 nối trực tiếp với tín hiệu xung.

    Khi INT0 được tác động thì vi điều khiển sẽ ngắt, tại thời điểm này bạn cho Timer T0 chạy. Khi INT1 được tác động thì vi điều khiển lại ngắt, tại thời điểm INT1 được tác động bạn cho Timer T0 dừng chạy.
    Sau đó lấy thời gian Timer T0 đếm được tính ra độ rộng của xung.
    Chúc bạn thànhh công.
    Attached Files

    Comment


    • #3
      vậy là mình sẽ kiểm tra liên tục INT0 khi nào xuống 0 thì cho timer0 chạy,rồi lại kiểm tra liên tục INT1 khi nào xuống 0 là dừng timer1 à?Anh viết code dùm em xem thế nào chứ em ko biết viết ra sao day????em chi mới học lập trính sơ sơ a.

      Comment


      • #4
        Không cần kiểm tra INT0 và INT1 đâu em. INT0,INT1 là 2 ngắt ngoài của vi điều khiển, và nó có mức độ ưu tiên cao nhất (Khi có xung tác động là sinh ra ngắt mà không cần kiểm tra gì hết). Anh nói ro vậy rồi mà lập trình không được nữa thì lạ lắm đó.

        Comment


        • #5
          thế làm sao khởi động timer chạy khi có ngắt INT0 va dừng khi có ngắt INT1 ạ????

          Comment


          • #6
            Code dai khai nhu the nay:

            ORG 000H
            JMP MAIN

            ORG 003H ; ĐỊA CHỈ NGẮT CỦA INT0
            JMP NGAT_T0

            ORG 013H ;ĐỊA CHỈ NGẮT CỦA INT1
            JMP NGAT_INT1

            MAIN:
            MOV R1,#1
            MOV TMOD,#01H ;T0 16 BIT
            MOV TH0,#0
            MOV TL0,#0
            CLR TF0
            SETB IT0 ;INT0 VÀ INT1 TÁC ĐỘNG BẰNG CẠNH XUỐNG.
            SETB IT1
            MOV IE,#85H ;CHO PHÉP INT0 VÀ INT1 NGẮT
            CJNE R1,#0,$

            NGAT_INT0:
            SET TR0 ;TIMER T0 BẮT ĐẦU CHẠY
            RETI

            NGAT_INT1:
            CLR TR0 ; TIMER T0 DỪNG CHẠY
            MOV IE,#00H ;KHÔNG CÓ NGẮT NÀO ĐƯỢC PHÉP NGẮT
            MOV A,TL0 ; MOV THỜI GIAN TIMER T0 ĐẾM ĐƯỢC VÀO THANH GHI A

            (
            ....TỚI ĐÂY LÀ ĐƠN GIẢN RỒI, BẠN VIẾT TIẾP CHƯƠNG TRÌNH TÍNH ĐỘ RỘNG XUNG,SAU ĐÓ GIẢI MÃ HIỂN THỊ RA LED 7 ĐOẠN
            )

            RETI
            END
            Last edited by sangthai; 18-12-2008, 11:07.

            Comment


            • #7
              bái phục anh Thai nha!Em cảm ơn rất nhiều>

              Comment


              • #8
                TL0 là nội dung thấp mà,anh chỉ dùng 4bit thấp thôi sao?còn TH0 thì sao?

                Comment


                • #9
                  TL0 8 bit lận cưng. Độ rộng xung đo anh ước chừng là <255uS nên chỉ lấy data của thanh ghi TL0 thôi.
                  Nếu em sợ độ rộng xung cần đo > 255us thì viết thêm chương trình giải mã luôn TH0.

                  Comment


                  • #10
                    thansk!
                    vậy lá có thể hoàn thành Đồ án rồi.
                    Đa tạ anh Thai.

                    Comment


                    • #11
                      Nguyên văn bởi tanhungngt Xem bài viết
                      thansk!
                      vậy lá có thể hoàn thành Đồ án rồi.
                      Đa tạ anh Thai.
                      Bao nhiêu đó mà là đồ án sao trời?
                      The goal of power electronics is control the flow of energy from an electrical source to an electrical load with high efficiency, high availability, high reliability, light weight and low cost.

                      Comment


                      • #12
                        vậy làm sao để tính toán với số 16bit trong bộ đếm lưu trong thanh ghi TH0 và TL0 đây?
                        em muốn chia nó cho một số như 58 thì giải thuật như thế nào dây?chỉ em với!!!!!!!

                        Comment


                        • #13
                          đó là 1module nhỏ thôi mà.đồ án của h là đo khoảng cách dùng sóng siêu âm với 8951 mà>

                          Comment


                          • #14
                            Cậu này học hành bê bối quá.
                            Code đổi HEx_BCD đây:


                            HEX_BCD:
                            MOV 12H,#0
                            MOV A,TL0
                            MOV B,#10
                            DIV AB
                            MOV 10H,B ;ĐƠN VỊ Ở 4 BIT THẤP CỦA 10H
                            MOV B,#10
                            DIV AB
                            MOV 11H,A ;TRĂM Ở 4 BIT THẤP CỦA 11H
                            MOV A,B
                            SWAP A ;TRĂM Ở 4 BIT CAO CỦA THANH GHI A
                            ORL A,10H
                            MOV 10H,A ;ĐƠN VỊ Ở 4 BIT THẤP , TRĂM Ở 4 BIT CAO.
                            MOV R7,#TH0
                            CJNE R7,#0,BYTE_H
                            RET

                            BYTE_H:
                            MOV A,10H
                            ADD A,#56H
                            DA A
                            MOV 10H,A

                            MOV A,11H
                            ADDC A,#2
                            DA A
                            MOV 11H,A ; NGHÌN Ở 4 BIT CAO 11H

                            MOV A,12H
                            ADDC A,#0
                            MOV 12H,A ;CHỤC NGHÌN Ở 4 BIT THẤP CỦA 12H
                            DJNZ R7,BYTE_H
                            RET

                            Comment


                            • #15
                              Nguyên văn bởi sangthai Xem bài viết
                              Cậu này học hành bê bối quá.
                              Code đổi HEx_BCD đây:

                              Đúng là bê bối thật...
                              The goal of power electronics is control the flow of energy from an electrical source to an electrical load with high efficiency, high availability, high reliability, light weight and low cost.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X