Thông báo

Collapse
No announcement yet.

Truyền nhận dữ liệu trực tiếp trên các port của 89c51

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

  • Truyền nhận dữ liệu trực tiếp trên các port của 89c51

    Chào các anh chị..!
    E đang muốn truyền dữ liêu từ 1 con 8051 MASTER (ô nhớ ram địa chỉ 30h đến 3ah ) đến một 8051 khác.Liệu có làm đựoc việc truyền dữ liệu này không ạ???Mong anh chị em giúp đỡ.Nếu ai đã làm về vấn đề này cho e xin tí kinh nghiệm

  • #2
    đương nhiên là được rùi bạn ơi,về phần này thì bạn nên xem phần giao tiếp nối tiếp hay truyền nhận chủ tớ theo chuẩn I2C là ok

    Comment


    • #3
      Nguyên văn bởi bachteva Xem bài viết
      đương nhiên là được rùi bạn ơi,về phần này thì bạn nên xem phần giao tiếp nối tiếp hay truyền nhận chủ tớ theo chuẩn I2C là ok
      Lúc đầu mình cũng tính truyền nhận dữ liệu theo kiểu I2c để tiết kiệm chân.Nhưng về sau thấy mạch mình còn dư nguyên cả port 0 và port2 nên tính truyền theo kiểu song song luôn.Ko bít có giải pháp gì cho chuyện này ko nhỉ

      Comment


      • #4
        Nguyên văn bởi mashima0905 Xem bài viết
        Lúc đầu mình cũng tính truyền nhận dữ liệu theo kiểu I2c để tiết kiệm chân.Nhưng về sau thấy mạch mình còn dư nguyên cả port 0 và port2 nên tính truyền theo kiểu song song luôn.Ko bít có giải pháp gì cho chuyện này ko nhỉ
        Thì cho con 89 slave detect 1 xung báo truyền từ 89 master (thí dụ mức cao ) rồi cho con 89 slave lấy giá trị từ port // vào chỗ bạn muốn cất thôi. Sau đó trả chân báo xung về 0

        Comment


        • #5
          Nguyên văn bởi chung1608 Xem bài viết
          Thì cho con 89 slave detect 1 xung báo truyền từ 89 master (thí dụ mức cao ) rồi cho con 89 slave lấy giá trị từ port // vào chỗ bạn muốn cất thôi. Sau đó trả chân báo xung về 0
          hIỆN GIỜ MÌNH CHỈ MỚI TRUYỀN ĐỰOC 1 BYTE....hIX HIX ĐỂ TRUYỀN LIÊN TIẾP THÌ KO ĐƯỢC,,,...

          Comment


          • #6
            Nguyên văn bởi mashima0905 Xem bài viết
            hIỆN GIỜ MÌNH CHỈ MỚI TRUYỀN ĐỰOC 1 BYTE....hIX HIX ĐỂ TRUYỀN LIÊN TIẾP THÌ KO ĐƯỢC,,,...
            Định địa chỉ gián tiếp vào tạo vòng lập

            Comment


            • #7
              Nguyên văn bởi chung1608 Xem bài viết
              Định địa chỉ gián tiếp vào tạo vòng lập
              bác chung1608 ơi mình đang làm cái truyền data từ máy tính xuống vdk 8051 nhưng mình chỉ truyền dc 1 kí tự trong 1 thời gian nhất định thôi mình muốn truyền 1 chuỗi thì như thế nào.mình đã khai báo 1 mảng char M[30];sau đó đọc data từ SBUF lưu vào m[30] sau khi lưu như thế thì tăng biến lên nhưng không được.bạn có thể chỉ giáo cho mình 1 chút được không

              Comment


              • #8
                mình cũng đã làm rồi nhưng không được.bạn xem chương trình này giúp minh với.minh nhận rồi hiển thị lên LCD
                #include<reg51.h>
                #include<delay.h>
                #include<stdio.h>
                #include<string.h>
                unsigned char x,i,j;
                //////////////////////////////
                sbit RS = P0^0;
                sbit RW = P0^1;
                sbit EN = P0^2;

                char M[30];
                ////////////////////////////////////
                void write_command(unsigned char command)
                {
                RS = 0;
                RW = 0;
                P2 = command;
                EN = 1;
                EN = 0;
                delay_ms(15);
                }
                void write_data(unsigned char LCD_data)
                {
                RS = 1;
                RW = 0;
                P2 = LCD_data;
                EN = 1;
                EN = 0;
                delay_ms(15);
                }
                void write_string(unsigned char *y)
                {
                while(*y)
                {
                write_data(*y);
                y++;
                delay_ms(10);
                }
                }
                void khoitao(void)
                {
                write_command(0x30);
                write_command(0x0E);
                write_command(0x80);
                write_command(0x38);
                write_command(0x0C);
                write_string(" moi ban ");
                write_command(0xc0);
                write_string(" nhap ki tu ");
                delay_ms(1000);
                write_command(0x01);
                }
                void main()
                {
                khoitao(); //khoi tao cac thong so ban dau cho LCD
                TMOD = 0x20; //timer 1 o che do 2 (8bit tu nap lai)
                TH1 = TL1 = -3 ;//chon toc do truyen cho cong noi tiep la 9600
                //co the viet TH1 = 0xFD
                SCON = 0x52;//khung truyen 8 bit data 1 bit stop,
                //cho phep bit REN =1,TI = 1;
                IE = 0x90;//cho phep ngat noi tiep
                TR1 =1;//cho phep timer 1 hoat dong
                while(1);
                }
                void ctngat(void)interrupt 4
                {
                for(j=0;j<=30;j++)
                {
                M[j]=_getkey();
                RI = 0;
                }
                write_data(M[j]);//ch? này em thay bang write_string nhung lai bao loi

                delay_us(10);

                ///////////////////////////////////
                i++;
                if(i==16) //nêu nhan duoc 16 ki tu thi xuong dong
                write_command(0xc0);
                if(i==32) //neu nhan duoc 32 ki tu thi xoa man hinh tro ve dau dong
                {
                write_command(0x01);
                i=0;
                }
                }

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X