Giúp e Đếm sự kiện với Timer

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • tiendientu
    Thành viên mới
    • Apr 2010
    • 7

    #1

    Giúp e Đếm sự kiện với Timer

    các anh chị xem cho code có sai hay thế nào ko?
    Chứ e mô phỏng ko chạy
    Code:
    #include<reg52.h>
    #include<stdio.h>
    sbit xung = P3^4; // chan T0
    void main(void)
        {
    	while(1)
    	{
    	TMOD=0x05;// 00000101 dem su kien timer 0
    	TH0=65530/256;
    	TL0=65530%256;
    	xung=1;
    	TR0=1;
    	while(!TF0);
    	P2=TL0;
    	TF0=0;
    	TR0=0;
    	}
    	}
    E đã cho một xung clock vào chân T0 và hiển thi bít thấp của timer ra P2 mà ko thấy nó đếm tăng hay thay đổi gì cả.
    Em cảm ơn!
  • chung1608
    Thành viên tích cực
    • Sep 2009
    • 4160

    #2
    mình không biết về C của 89 nhưng theo như mình thấy chương trình bạn viết thì khi có 6 xung vào chân T0 thì khi đó TF0 sẽ bằng 1 và vòng while phía dưới mới thực thi và đưa giá trị TL0 lúc này là 00H ra cho P2

    Comment

    • chung1608
      Thành viên tích cực
      • Sep 2009
      • 4160

      #3
      hahahahaha
      dựa vào những gì mình hiểu về C cuối cùng cũng ra cái vấn đề này, chả biết đúng sai vì không biết lôi cái thanh ghi TL0 trong mô phỏng của keil ra @@
      Code:
      #include<reg52.h>
      #include<stdio.h>
      sbit xung = P3^4; // chan T0
      void main(void)
          {
      	while(1)
      	{
      	TMOD=0x05;// 00000101 dem su kien timer 0
      	TH0=65530/256;
      	TL0=65530%256;
      	xung=1;
      	TR0=1;
      	while(TF0=1)
      	{
      	P2=TL0;
      	}
      	TF0=0;
      	TR0=0;
      	}
      	}

      Comment

      • tiendientu
        Thành viên mới
        • Apr 2010
        • 7

        #4
        thank pro .
        Nhưng cho e hỏi!
        sao e viết
        Code:
        while(TF0=1);
        có thêm dấu chấm phẩy nếu dùng cho timer thì đc dùng cho đếm thì ko chạy

        Comment

        • chung1608
          Thành viên tích cực
          • Sep 2009
          • 4160

          #5
          Nguyên văn bởi tiendientu Xem bài viết
          thank pro .
          Nhưng cho e hỏi!
          sao e viết
          Code:
          while(TF0=1);
          có thêm dấu chấm phẩy nếu dùng cho timer thì đc dùng cho đếm thì ko chạy
          mình chỉ biết viết asm thôi, C mình không biết gì hết đâu @@

          Comment

          • dongcv
            Thành viên chính thức
            • Oct 2010
            • 93

            #6
            Nguyên văn bởi tiendientu Xem bài viết
            thank pro .
            Nhưng cho e hỏi!
            sao e viết
            Code:
            while(TF0=1);
            có thêm dấu chấm phẩy nếu dùng cho timer thì đc dùng cho đếm thì ko chạy
            câu lệnh while( DK) {......} ;

            Comment

            • duong_act
              Thành viên tích cực
              • Nov 2008
              • 4903

              #7
              Sau while(dk) thì làm gì có ;. Viết sai cấu trúc vòng lặp rồi.

              Comment

              • student_dtvt
                Thành viên tích cực
                • Jan 2010
                • 184

                #8
                Các bác vui tính thế While(dk) ; nghĩa là ko làm gì cả

                Comment

                • vietthanh123
                  Thành viên tích cực
                  • Mar 2011
                  • 479

                  #9
                  Nguyên văn bởi duong_act Xem bài viết
                  Sau while(dk) thì làm gì có ;. Viết sai cấu trúc vòng lặp rồi.
                  Sau while(dk) sao lại ko có ; . Còn tùy vào trường hợp dùng làm gì nữa chứ.
                  Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
                  http://diencongnghiep360.com/
                  http://tudienhathe.vn/

                  Comment

                  • student_dtvt
                    Thành viên tích cực
                    • Jan 2010
                    • 184

                    #10
                    Nguyên văn bởi tiendientu Xem bài viết
                    thank pro .
                    Nhưng cho e hỏi!
                    sao e viết
                    Code:
                    while(TF0=1);
                    có thêm dấu chấm phẩy nếu dùng cho timer thì đc dùng cho đếm thì ko chạy
                    Mình ko hiểu sao dung cho timer bác lại để while(TF0=1); mà ko phải là While(TF0=0); hay while(TF0); vậy mà nó vẫn chạy?

                    Comment

                    • AKA_QUAN
                      Thành viên chính thức
                      • Jul 2011
                      • 77

                      #11
                      Nguyên văn bởi tiendientu Xem bài viết
                      thank pro .
                      Nhưng cho e hỏi!
                      sao e viết
                      Code:
                      while(TF0=1);
                      có thêm dấu chấm phẩy nếu dùng cho timer thì đc dùng cho đếm thì ko chạy
                      Lệnh sai rồi kìa ! While(TF0==1) mới đúng !!

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...