Thông báo

Collapse
No announcement yet.

Giao tiếp VĐK với PC

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

  • Giao tiếp VĐK với PC

    Anh em xem hộ chương trình này với, mình muốn xuất 0123456789 ra màn hình HyperTerminal mà nó xuất ra toàn các kí tự lạ... ko bik sai chỗ nào.

    Code:
    #include<stdio.h>
    #include<reg52.h>
    char x;
    void main(void)
    {
    	SCON = 0x52; //Port noi tiep che do 1, REN=TI=1
    	TMOD = 0x20; // Timer 1 mode 2
    	TH1 = TL1 = -3; // Toc do baud la 9600
    	TR1 =1;
    	for (x= 0x30 ; x<0x39 ; x++)
    	{
    	while(!TI); // wait den khi TI=1
    	TI=0;
    	SBUF = x; // truyen ki tu co ma ASCII trong bien x
    	}
    }
    Attached Files

  • #2
    Không ai giúp em với ạ !!!

    Comment


    • #3
      qua ta bày cho =.=!

      Comment


      • #4
        Chú mi giúp được thì giúp anh, đừng có TNT. Chả hiểu nó bị gì. code ko sai,mạch thì ko lỗi... VĐK thì đổi 2 con rồi, chương trình khác thì nó vẫn bình thường mà. Sao đẩy qua Hyper Terinal nó xuất toàn cái kí tự gì gì ko

        Comment


        • #5
          lỗi này là sai tốc độ baud , kiểm tra lại thạch anh nha ! chọn loại 11,0592 MHZ

          Comment


          • #6
            Mình đã chỉnh đúng tốc độ baund . còn thạch anh thì đang dùng 12 Mhz. Nhưng sao phải dùng thạch anh 11,0592 MHZ vậy?

            Comment


            • #7
              Thế bạn tính kiểu gì mà ra 9600 với thạch anh 12M ??

              Comment


              • #8
                thứ 1 : thạch anh 11.0592 Mhz mới cho đúng tốc độ baud 9600
                thứ 2 : ko bik kon 89 này bị gì mà mấy đứa bạn mình làm truyền từ pc xuống thì dc nhưng truyền lên toàn nhận sai khi dùng max232, thay nó bằng con PL2303 thì truyền dc

                Comment


                • #9
                  Mình đã sửa lại mạch và thay thạch anh 11,095 Mhz thì được rồi.
                  Mọi người xem hộ giúp chuơng trình này.

                  Code:
                  #include<stdio.h>
                  #include<reg52.h>
                  int x;
                  void main(void)
                  {
                  	SCON = 0x50; //Port noi tiep che do 1, REN=TI=1
                  	TMOD = 0x20; // Timer 1 mode 2
                  	TH1 = -3; // Toc do baud la 9600 (che do 2 kho thiet lap TL1)
                  	TR1 =1;
                  	for (x = 0x30 ; x <= 0x39 ; x++)
                  	{
                  	SBUF = x; // truyen ki tu co ma ASCII trong bien x
                  	while(TI==0); // wait den khi TI=1
                  	TI=0;
                  	}
                  }
                  Khi mình kết nối với PC dùng HyperTerminal thì nó thế này

                  Code:
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  01234567890123456789012345678901234567890123456789012345678901234567890123456789
                  0123456789012345678901234567890123456789012345678901234567890123456789012345678
                  Mình muốn chỉ nhận 1 dãy số 0123456789 thôi, không biết lỗi chỗ nào.

                  Mình đang lập trình trên VB 2005 để nhận dữ liệu từ VDK, bạn nào có chuơng trình viết bằng VB 2005, có thể cho mình tham khảo được ko, vì mới mò nên còn nhiều cái chưa biết.
                  Cám ơn mọi người nhiều!

                  Comment


                  • #10
                    thêm cái while(1); vào cuối của hàm main()
                    Website chính thức đổi địa chỉ website thành
                    Mời các bạn ghé thăm !!!

                    Comment


                    • #11
                      Nguyên văn bởi Vinhanboy Xem bài viết
                      Mình đã sửa lại mạch và thay thạch anh 11,095 Mhz thì được rồi.
                      Mọi người xem hộ giúp chuơng trình này.

                      Code:
                      #include<stdio.h>
                      #include<reg52.h>
                      int x;
                      void main(void)
                      {
                      	SCON = 0x50; //Port noi tiep che do 1, REN=TI=1
                      	TMOD = 0x20; // Timer 1 mode 2
                      	TH1 = -3; // Toc do baud la 9600 (che do 2 kho thiet lap TL1)
                      	TR1 =1;
                      	for (x = 0x30 ; x <= 0x39 ; x++)
                      	{
                      	SBUF = x; // truyen ki tu co ma ASCII trong bien x
                      	while(TI==0); // wait den khi TI=1
                      	TI=0;
                      	}
                      }
                      Khi mình kết nối với PC dùng HyperTerminal thì nó thế này

                      Code:
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      01234567890123456789012345678901234567890123456789012345678901234567890123456789
                      0123456789012345678901234567890123456789012345678901234567890123456789012345678
                      Mình muốn chỉ nhận 1 dãy số 0123456789 thôi, không biết lỗi chỗ nào.

                      Mình đang lập trình trên VB 2005 để nhận dữ liệu từ VDK, bạn nào có chuơng trình viết bằng VB 2005, có thể cho mình tham khảo được ko, vì mới mò nên còn nhiều cái chưa biết.
                      Cám ơn mọi người nhiều!
                      Hyper Terminal nó sẽ hiển thị tất cả data truyền đến nó.
                      Nếu muốn nhận một dãy số cố định thì can thiệp vào thông số cổng COM trong VB.
                      Không nhớ lắm hình như là mục Rthreshold. Đặt giá trị này bằng số kí tự chuỗi muốn nhận.

                      Comment


                      • #12
                        Nguyên văn bởi mast090 Xem bài viết
                        thêm cái while(1); vào cuối của hàm main()
                        Nếu như vậy có vẻ không ổn bạn àh. Nếu khi viết chuơng trình nhận dữ liệu từ VDK thì ko lẽ nó cứ đẩy dữ liệu lên PC hoài sao bạn. Không phải lúc nào mình muốn đẩy dữ liệu lên thì đẩy chứ.

                        Comment


                        • #13
                          thì bạn bảo là chỉ hiện 1 lần thôi và ko hiện nữa, thế lên mình mới bảo thế, ko chạy lệnh j nữa mà
                          Website chính thức đổi địa chỉ website thành
                          Mời các bạn ghé thăm !!!

                          Comment


                          • #14
                            Bạn cũng có thể dùng cách gửi ký tự xác nhận xuông vđk. Nếu vđk nhận đc ký tự này mới gửi dữ liệu lên.

                            Comment


                            • #15
                              Nguyên văn bởi OoMrBayoO Xem bài viết
                              Bạn cũng có thể dùng cách gửi ký tự xác nhận xuông vđk. Nếu vđk nhận đc ký tự này mới gửi dữ liệu lên.
                              Làm thế nào bạn nhỉ ? Mình chưa rõ lắm

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X