Thông báo

Collapse
No announcement yet.

Xin hỏi bài tập về timer

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

  • Xin hỏi bài tập về timer

    Cho mình hỏi hai đoạn code sau có j khác nhau ko? Mình vẫn chưa hiểu tạo khoảng thời gian trễ trong Timer. Xin cho mình HD cụ thể về tạo khoảng thời gian trễ. Thank nhiều!!!

    1.
    TMOD=0x10;
    TR1=1;
    while(1)
    {
    // tre 500 uS
    TH1=(65536-250)/256;
    TL1=(65536-250)%256;
    while(!TF1);
    TF1=0;
    //*********
    F=~F;
    }
    }


    2.
    {
    TMOD= 0x10;
    TR1=1;
    while(1){
    TH1= 0xFF;
    TL1= 0x9C;
    while(!TF1);
    TF1=0;

    F=~ F;
    }
    }

  • #2
    Ví dụ tạo 1 hàm trễ:
    void delay_10ms () // Hàm trễ có tên là delay_10ms();
    {

    TMOD=0x10; // Chọn timer 1 ở chế độ đếm 16 bit.
    TH1=55536/256; // Gia trị ban đầu của timer1 (vì timer đếm tới 65536 sẽ tràn nên mình set giá trị ban đầu của timer là 55536, vậy khi nó đếm được 10000 chu kỳ máy nữa nó sẽ tràn, mà nếu dùng thạch anh 12MHz thì 1 chu kỳ máy tương ứng hết 1us==> 10000 chu kỳ máy tương ứng 10ms.)
    TL1=55536%256;
    TR1=1; // Bắt đầu cho timer 1 đếm.
    while(!TF1); // Chờ đợi timer đếm xong, vì khi timer chưa tràn thì cờ tràn TF1 bằng 0(!=1) nên con trỏ cứ đứng nguyên tại hàm while này(timer tràn thì TF1=1).
    TF1=TR1=0; // Timer đã tràn ==> đếm đủ 10ms rồi. TF1=0==>Dựng lại cờ tràn =0 để sẵn sàng đếm tiếp lần sau. và cho TR1=0 để dùng timer đếm.
    }
    }
    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


    • #3
      250 chưa đến 256 dùng timer chế độ 2 dùng 8 bít cũng đc .
      TMOD=0x20;
      TL1=TH1=-250;

      Comment


      • #4
        Nhưng mình muốn bạn chỉ hộ mình 2 cách viết code trên của mình đúng và giống nhau hay ko? Mình tính ra thì thấy chênh lệch nhau bạn à!

        Comment


        • #5
          Nguyên văn bởi vtn92 Xem bài viết
          Nhưng mình muốn bạn chỉ hộ mình 2 cách viết code trên của mình đúng và giống nhau hay ko? Mình tính ra thì thấy chênh lệch nhau bạn à!
          Thì bạn đặt các giá trị của timer khác nhau thì nó chẳng chênh lệnh nhau:
          Ở ví dụ thứ nhất:
          TH1=(65536-250)/256;
          TL1=(65536-250)%256;
          Giá trị ban đầu của timer 1 là = 65536-250= 65286
          Còn ở ví dụ thứ 2:
          TH1= 0xFF;
          TL1= 0x9C;
          Thì giá trị ban đầu của timer= FF9C=65436
          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

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X