Thông báo

Collapse
No announcement yet.

thiết kế bộ nhớ ngoài cho vdk 89c51

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

  • thiết kế bộ nhớ ngoài cho vdk 89c51

    Bạn nào đã và đang làm về thiết kế bộ nhớ ngoài cho 89c51 có thể giúp mình được không? share cho mình tài liệu và kinh nghiệm thì tốt quá.

  • #2
    Vậy bạn đã ít nhiều nghiên cứu về chuyên đề này chưa?!và theo bạn chổ nào cảm thấy chưa thông?! Có thế anh em mới giúp bạn được.

    Comment


    • #3
      - Bộ nhớ ngoài là bộ nhớ chương trình hay dữ liệu?
      - Là bộ nhớ song song hay nối tiếp?
      - Tên cụ thể của bộ nhớ ngoài cần ghép nối?

      Comment


      • #4
        bác nên nói cụ thể một tí ,bộ nhớ ngoài là rom hay ram
        bác có thể dùng loại 24Cxxx ,truyền dữ liệu theo kiểu I2C cũng khá tốt
        bác nên lựa chọn rom ,ram ,eeprom hay nvram để ghép nối
        SHARE KHO PHIM LỚN

        Comment


        • #5
          HI!
          Các huynh chỉ giùm đệ điều này:
          giao tiếp nối tiếp với eeprom ngoài bằng SPI hoac I2c thì đọc được EEPROM ko??? hay chỉ ghép nối song song với EEPRom mới đọc được
          thank!

          Comment


          • #6
            EEPROM có nhiều loại do đó tùy loại EEPROM cần ghép nối chứ, loại song song thì phải ghép kiểu song song, loại nối tiếp thì ghép kiểu nối tiếp, loại nối tiếp lại có nhiều chuẩn SPI, I2C, Microwire...

            Comment


            • #7
              Chào các Bạn.
              Mình cũng đang phải làm bài tập mở rộng bộ nhớ ngoài cho con 89c51. mình chọn EEPROM ATt28c64B, truyền song song, mình gặp một số vấn đề chưa giải quyết được mong các bạn giúp đỡ:
              -Mình viết chương trình bằng Keil, mình không muốn khai báo một biến theo kiểu xdata mà mình muốn nối các đường dữ liệu và địa chỉ riêng, sau đó đọc viết trực tiếp vào những địa chỉ đó. Có một vấn đề nảy sinh ở đây là giản đồ thời gian trong các chu kỳ đọc và viết phải tính toán làm sao cho chính xác. Mình thấy trong các sách thường hay dùng kiểu thiết kế tối thiểu: dữ liệu và địa chỉ đi chung một đường, mình không rõ lúc ấy phải đọc ghi nhw thế nào trong Keil.
              -À mà mình dùng Protelus để mô phỏng con EEPROM ATt28c64B mà không được dù trong thư viện device vẫn có nó.
              Các bạn có cao kiến gì giúp mình với.

              Comment


              • #8
                Nguyên văn bởi giangvtdt
                Chào các Bạn.
                Có một vấn đề nảy sinh ở đây là giản đồ thời gian trong các chu kỳ đọc và viết phải tính toán làm sao cho chính xác. Mình thấy trong các sách thường hay dùng kiểu thiết kế tối thiểu: dữ liệu và địa chỉ đi chung một đường, mình không rõ lúc ấy phải đọc ghi nhw thế nào trong Keil.
                nick này trông quen quen
                Tính khỉ gì, cứ đặt địa chỉ, đặt dữ liệu rồi phát xung read,write thứ tự trước sau như trong data sheet của con 28C64 là được. Còn cách ghép nối kia là cách ghép truy cập không gian bộ nhớ ngoài sử dụng chân ALE để tách 8 bit địa chỉ thấp. Phần cứng sẽ chịu trách nhiệm về chu kỳ bus data, address, ALE, RD,WR phần mềm chỉ cần phát lệnh truy cập bộ nhớ ngoài thôi.

                Có thể không cần dùng khai báo biến kiểu xdata mà dùng con trỏ để truy cập trực tiếp.

                Code:
                unsigned char data , *pData = 0x7000;
                
                *pData = 0xAA;  // viết ra AA
                data = *pData; // đọc về từ địa chỉ 0x7000;

                Comment


                • #9
                  Em xin chao`!
                  em lại phải hỏi thêm cái
                  em vẫn chưa hiểu...truyền dữ liệu cho eeprom lúc nạp ... hay là nạp chip xong roi cắm vô mạch thì dữ liệu mới được truyền đến eeprom
                  Ma``` nếu khi nạp và đồng thời truyền dữ liệu vào eeprom thì mạch nạp phải ghép thêm Dip cho eeprom đúng không????

                  Comment


                  • #10
                    Nguyên văn bởi tienvnu
                    Em xin chao`!
                    em lại phải hỏi thêm cái
                    em vẫn chưa hiểu...truyền dữ liệu cho eeprom lúc nạp ... hay là nạp chip xong roi cắm vô mạch thì dữ liệu mới được truyền đến eeprom
                    Ma``` nếu khi nạp và đồng thời truyền dữ liệu vào eeprom thì mạch nạp phải ghép thêm Dip cho eeprom đúng không????
                    Nếu dùng bộ nhớ EEPROM kiểu giao tiếp // thì chỉ chon 1 trong 2 mục đích:
                    1-Lưu thông tin.
                    Thì việc đọc thì viết lệnh và rất nhanh, và đọc như đọc RAM ngoài thôi. Lệnh này phần cứng suport như các chân: R,ALE. như bác CQ có nói.
                    Việc ghi thong tin thì chậm nên ko dùng cách 1 lệnh như trên đc, vì việc ghi vào EEPROM khá mất thời gian. Vây việc ghi vào EEPROM có thể cho tự 89 làm.
                    2-Bộ nhớ chương trình(đặt chân chọn bộ nhớ của 89 =0), và đương nhiên thì phải dùng mạch nạp ngoài nạp cho EEPROM rồi cắm vào đế.
                    Và khi nạp chương trình cho 89, phải nạp vào EEPROM chứ ko nạp vào 89.
                    Lâu rồi, ko đụng, nên các bác check thông tin lại
                    -------------------

                    Comment


                    • #11
                      Cảm ơn anh CHI... anh nói rõ hơn một chút hộ tiểu đệ với... đệ ngu giốt ... đọc mãi mà chả làm được anh a```

                      Comment


                      • #12
                        Các bác cứu em với.
                        Chương trình này em viết các số từ 0->9 vào AT28C64, rồi đọc từ AT28C64 ra và hiển thị trên LED. Em nạp và chạy thử nhưng tất cả các led ở PORT2 đều sáng suốt, chẳng nhấp nháy gì cả. Các bác xem ct của em sai ở chỗ nào vậy. Cứu em với

                        /*Using AT28C64 to make an external memory of MicroController AT89C52
                        This application is configured as follow:
                        PORT0 and PORT1 are connected to Address pins of AT28C64
                        PORT2 is connnect to I/O pins of AT28C64
                        PORT3 is used to control AT28C64
                        P3.0-------->CE
                        P3.1-------->OE
                        P3.2-------->WE*/

                        #include<reg51.h>
                        #include<stdio.h>
                        sbit CE=P3^0;
                        sbit OE=P3^1;
                        sbit WE=P3^2;

                        void delay(unsigned int ms)
                        {
                        unsigned char i,j;
                        for(i=1;i<=ms;i++)
                        {
                        for(j=1;j<=125;j++)
                        {
                        }
                        }
                        }

                        void StartWrite()
                        {
                        unsigned int time;
                        WE=0;
                        for(
                        {
                        }
                        CE=0;
                        for(
                        {
                        }
                        OE=1;
                        for(
                        {
                        }
                        }

                        void LatchAddr()
                        {
                        WE=1;
                        for(
                        {
                        }
                        WE=0;
                        for(
                        {
                        }
                        }

                        void LatchData()
                        {
                        WE=0;
                        for(
                        {
                        }
                        WE=1;
                        for(
                        {
                        }
                        }

                        void StartRead()
                        {
                        CE=0;
                        OE=0;
                        WE=1;
                        }

                        //Main Program lies here
                        void main()
                        {
                        unsigned int i;
                        //Set up configure of Application
                        P0=0x0; //Set PORT0 to be the Output
                        P1=0x0; //Set PROT1 to be the Output
                        P2=0x0; //Set PORT2 to be the the Output

                        for(i=0;i<=9;i++)
                        {
                        StartWrite();
                        LatchAddr();
                        P0=i;
                        P1=0x0;
                        LatchData();
                        P2=i; //Writting Data to AT28C64
                        }
                        P2=0;
                        delay(1000);
                        P2=0x0; //PORT2 displays data read from AT28C64
                        for(i=0;i<=9;i++)
                        {
                        StartRead();
                        P0=i;
                        P1=0;
                        delay(1000);
                        }
                        }

                        Comment


                        • #13
                          Code:
                          for(;;)
                          {
                          }
                          lệnh gì đây bạn

                          Comment


                          • #14
                            Nguyên văn bởi Cuong Quay
                            Code:
                            for(;;)
                            {
                            }
                            lệnh gì đây bạn
                            Lệnh delay đó
                            -------------------

                            Comment


                            • #15
                              Nguyên văn bởi CHIBANG
                              Lệnh delay đó
                              delay forever à?????

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X