Thông báo

Collapse
No announcement yet.

Giao tiep voi Com

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

  • #16
    gửi ký tự kết thúc là sao, t chỉ biết ngắt nhận với ngắt truyền thui, hix hix.Ah sẵn cho t hỏi cái này luôn nha, 1 lần gửi VĐK chỉ được 2kys tự = 16 bit là do timer có 16 bit thôi phải ko, muốn chuyển tiếp phải reset lại ah.Nếu mà m chuyển tự động 1 chuỗi >2,thi sử dụng phương pháp nào ? Dùng mảng hay cài đặt reset sau khi thực hiện 2 ký tự

    Comment


    • #17
      mình thực hiện truyền thông 2 con 89c51 với code sau thì nó ko chạy
      // slaver

      #include <REGX51.H>
      int a;

      void main(void)
      {

      SCON=0x50;
      TMOD=0x21;
      TH1=-13;
      TR1=1;
      while(1)
      {
      while(RI==0);
      RI=0;
      a=SBUF;
      if(a==0x01)
      {
      P1=0;
      }
      else P1=0xff;
      }

      }
      // master
      #include <REGX51.H>
      int a;
      void main(void)
      {
      while(1)
      {
      SCON=0x50;
      TMOD=0x21;
      TH1=-13;
      TR1=1;
      while(1)
      {
      if(P1_0==0)
      {
      a=0x01;
      while(TI==0);
      TI=0;
      SBUF=a;
      }

      }


      }
      }
      truyền thông khá đơn giản bên master nhấn nút bên slaver nhận và cho P1 xuống mức 0
      nhưng mình ko hiểu tại sao nó ko chạy
      mình đọc tài liệu nó bảo khi nó truyền xong 1 byte thì nó cho cờ TI lên 1 , vì thế ban đầu mình cho SCON=0x50; nghỉ là nó sẻ chạy vì ban đầu bit TI mình để mức 0 trong thanh ghi SCON, khi mình để SCON =0x52 thì nó lại chạy thật khó hiểu nếu ban đầu để bít TI =1 tức SCON =0x52 thì cần gì phải làm cái lệnh while( TI==0); vì bản chất ban đầu bit TI đả bằng 1 rồi mà.
      ai pro giải thích hộ.

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X