Thông báo

Collapse
No announcement yet.

help me

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

  • help me

    ai giải thích kỹ hộ đoạn code tạo xung vuông này với
    MOV TMOD,#01H ;
    LOOP1: MOV TH0,#HIGH(-500) ;
    MOV TL0,#LOW(-500) ;
    SETB TR0 ;
    JNB TF0,$ ;
    CLR TF0 ;
    CPL P1.0 ;
    SJMP LOOP1 ;
    mình mới đọc tài liệu đến đoạn này thì thấy chưa hiểu lắm dòng JNB TF0,$ , mặc dù sách có giải thích là chờ báo ngắt (theo lý thuyết thì là kiểm tra bit tại địa chỉ trong TF0, nếu bằng 0 thì nhảy tới $, nhưng $ nghĩa là ở đâu????? và tại sao lại phải đảo bít ở p1.0, kí hiệu high, low là gi? ai có thể giải thích thật là cụ tỉ hơn cho mình đc không?

  • #2
    Mình hiểu sơ sơ thế này:
    $ nghĩa là lấy PC tại ngay lệnh đó, nghĩa là nó sẽ nhảy tại chỗ, nó tương đương với lệnh
    NHAYTAIDAY: JNB TF0, NHAYTAIDAY
    Còn đảo bit thì để tạo xung mà, lên xuống lên xuông...
    high với low là cú pháp lấy các byte cao và byte thấp để nạp vào TL và Th cho nhanh khỏi phải ấn máy tính
    TaiDangAtm

    Comment


    • #3
      MOV TMOD,#01H ; thiết lập ngắt timer 0
      LOOP1: MOV TH0,#HIGH(-500) ;set 8bit cao của biến đếm tgian
      MOV TL0,#LOW(-500) ; set 8bit thấp của biến đếm tgian
      ;2 dòng này là thiết lập độ rộng xung, biến đếm tgian có giá trị là 500x500=250000. đây cũng là độ rộng xung
      SETB TR0 ; bắt đầu đếm
      JNB TF0,$ ; chờ đếm. TF0 là cờ tràn, có nghĩa là khi biến đếm về 0 thì TF0 lên 1, ngừng nhảy. còn bt thì nhảy tại chỗ ($ là nhảy tại vị trí hiện tại)
      CLR TF0 ;xóa TF0 để chuẩn bị lần đếm tiếp theo
      CPL P1.0 ;ngõ ra xung xuông.
      SJMP LOOP1 ;

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X