Thông báo

Collapse
No announcement yet.

Giap tiếp RS232 với PC dùng 89S52 bị sai :(

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

  • Giap tiếp RS232 với PC dùng 89S52 bị sai :(

    Mình đang làm giao tiếp giữa PC với 89C51, nhưng ko hiểu sao truyền/nhận luôn bị sai 3 bit cuối. Ví dụ truyền chữ a=97=01100001 thì lại ra thành 11000001. Luôn như vậy, đôi lúc lại thành 11100001, nói chung là 3 bit cuối bị sai.

    Sơ đồ bắt mạch giữa Max232 với 89c51 có lẽ mình ko cần post lên, vì phần này khó lòng mà làm sai đc. Mình nghĩ là có thể là do tần số thạch anh? Mình dùng thạch anh 12MHz (Đáng lẽ là 11.0592MHz phảikko?).

    Sau đây là code viết bằng Keil C cho 89s52

    void send_data(char uart_data)//gui du lieu qua cong COM
    {
    TI=0;
    SBUF=uart_data;
    while(TI==0){;}//cho trong khi dang gui du lieu
    }


    void receive_data() interrupt 4//nhan du lieu
    {

    if(RI==1)
    {
    RI=0;
    data_receive=SBUF;
    }
    }


    Đã 2 ngày, ngồi tìm chỗ sai mà vẫn chưa ra . Mong các bạn cho ý kiến.
    Có phải là do thạch anh ko? Mình dùng baud 9600

    Mình đã giả lập với proteus thì hoàn toàn đúng (giả lập với cổng Com ảo, và dùng thạch anh 11.0592MHz.
    Last edited by Lien; 01-12-2008, 04:11.

  • #2
    CÓ THỂ DO THẠCH ANH BÁC DÙNG KHÔNG ĐÚNG CHUẨN TRUYỀN....CÓ NGHĨA LÀ NẾU BÁC TRUYỀN TỐC ĐỘ 9200, NẾU DÙNG 12MHz THÌ SAI SỐ ĐÂU LÀ 3-5% J ĐÓ KHÔNG NHỚ (MỞ CUỐN TỐNG VĂN ON LÀ BIẾT NGAY), CÒN VỚI 11,0592 THÌ SAI SỐ LÀ 0%....... MÌNH CŨNG TRUYỀN QUA CỔNG COM CŨNG VỚI TỐC ĐỘ 9200 NHƯNG VỚI THẠCH ANH 22,1184MHz THÌ DU LIỆU VẪN ĐÚNG BÌNH THƯỜNG MÀ.... CẢ 2 CHIỀU LÊN VA XUONG LUÔN

    Comment


    • #3
      thay bằng thạch anh 11.0592MHz thì mọi chuyện đã tốt đẹp. Cám ơn.

      Close topic là đc rồi ^^

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X