Thông báo

Collapse
No announcement yet.

Gải thích đoạn code

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

  • Gải thích đoạn code

    Em có đoạn code: mã hóa và giải mã như thế này. ( nhưng em ko hiểu phần giải mã lắm)
    Vì xung truyền đi là 6ms, làm sao nó nhận đúng dc nhỉ?

    Mã hóa:
    void M_Pulse_Finish() // Truyen bit 1 co toc do 6ms de ket thuc khung truyen
    {
    M_Data_Out=1;
    delay_ms(3);
    M_Data_Out=0;
    delay_ms(3);
    }


    Giải Mã

    unsigned char M_Get_Pulsefinish()
    {
    unsigned int i;
    while(!Man_Data_In);
    while(Man_Data_In);
    for(i=0;;i++)
    {
    delay_us(200);
    if(!Man_Data_In) break;

    }
    if(i<13) return 0;
    else if(i>15) return 0;
    else return 1;
    }

  • #2

    Comment


    • #3
      nôm na là thế này:
      - đợi khi xung =0 (cái này để xác nhận kết thúc xung 0)
      - đợi khi xung =1
      - cứ delay 200us lại kiểm tra xem xung đã về 0 chưa
      - nếu về 0 thì kiểm tra xem đc bao nhiêu i (bao nhiêu lần 200us)
      + nếu i<13 hay i>15 (tức là xung 1 rộng 13x200=2.6ms và 15x200=3ms), ngoài khoảng này thì trả về 0
      + nếu trong khoảng trên (từ 2.6-3ms) thì trả về 1
      Tổng kết lại là phần nhận xung của bạn sẽ nhận dạng độ rộng của xung 1.

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X