Thông báo

Collapse
No announcement yet.

Tổng hợp các đề tài cho 8051-ASM-Keil(Học tập)

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

  • Tổng hợp các đề tài cho 8051-ASM-Keil(Học tập)

    Bên PIC cũng có một mục như vầy và thấy có nhiều bạn hỏi nên tôi mở thêm cho bên 8051, code cho 8051 tôi có khá nhiều và sẽ cố share dần cho a e mới học, có đủ cả cho ASM và C. Sẽ chuẩn bị và up lên sớm. Mong dc sự đón nhận và ủng hộ của a e, ai có gì hay thì up lên nhé, để cho nhưng người mới đỡ khổ như tôi trước đây, cứ phải mò mẫm và đôt không biết bao nhiêu tiền net cho việc tìm tài liệu.
    - Nháy LED dơn, nháy led nhiều chế độ
    - LED 7 thanh
    - Phím bấm
    - RS232
    - ADC0804, 0809
    - Code cho DAC0808 tôi còn thiếu, ái có bổ xung nhé
    - Led matrix
    - I2C, SPI
    - LCD
    .....nhiều code lặt vặt khác.

    Phát triển box 8051
    Vẫn còn bên AVR nữa, có lẽ cung cần mở môt mục tương tự cho nó đủ bộ AT, AVR, PIC
    Ethernet-RS232, PIC Webserver, RFID Reader
    CallerID, Cảnh báo BTS, ...
    0988006696
    linhnc308@gmail.com
    http://linhnc308.blogspot.com

  • #2
    Ồ, tuyệt thế, vậy là anh em được nhờ rồi đó, làm sao mình phải tạo được những đoạn mã tương đối cho mọi người cả cũ và mới tham khảo chứ. Ai chịu khó coi, tìm hiểu, thử mạch và trao đổi đương nhiên sẽ phải giỏi lên rồi thế có phải đỡ mất thời gian không. Điện tử à? nhiều nhiều lắm, còn rất nhiều cái, vậy thì không nên mất quá nhiều thời gian vào những cái quá cơ bản và ban đầu ấy
    !e

    Comment


    • #3
      ASM code

      File dưới đây là code ASM, có khá nhiều, chi tiết từng file tôi sẽ trình bày sau.
      Attached Files
      Ethernet-RS232, PIC Webserver, RFID Reader
      CallerID, Cảnh báo BTS, ...
      0988006696
      linhnc308@gmail.com
      http://linhnc308.blogspot.com

      Comment


      • #4
        mạn phép bac linhnc208 xin post 2 thư viện điều khiển LCD 8 bit và 4 bit tôi viết bằng C.
        Attached Files
        Last edited by encoder; 07-10-2006, 10:42.
        CUNG CẤP PSOC, MẠCH NẠP
        CHUYỂN ĐỔI USB <-> RS485 AutoBaud
        RS232 <-> RS485 MultiBaud
        MẠCH NẠP USBPPI S7-200
        Mobile: 0906076116
        Email:

        Comment


        • #5
          ok, hoan nghênh, hoan nghênh encoder. Mục này tui mở ra để ai có gì hay thì pót lên cho người mới có DK làm việc với 8051 nhanh chóng.
          Code Keil C tui có viêt rất nhiều, chỉ tội thời gian này bận nhiều dự án quá nên ko pót lên được, a e thông cảm, để sang tuần thong thả tui pót lên cho. Mà đống ASM kia nhiều thứ hay lắm đó.
          Ethernet-RS232, PIC Webserver, RFID Reader
          CallerID, Cảnh báo BTS, ...
          0988006696
          linhnc308@gmail.com
          http://linhnc308.blogspot.com

          Comment


          • #6
            Các bác nào đã làm đồng hồ thời gian thực với DS1307 viết bằng ASM thì chỉ giáo cho tui với. Tui mới học 8051 định làm cái đồng hồ chơi nhưng thực sự mà nói thì đọc datasheet của con DS1307 tui không hiểu lám. Xin được chỉ giáo.

            Comment


            • #7
              NÓi qua!

              Nguyên văn bởi mhai_nguyen
              Chao cac bac, minh cung la nguoi moi thoi. Man phep cho hoi: minh muon gui du lien ra o nho ngoai, hay giao tiep voi thiet bi ngoai vi thi trong C viet ntn
              Trong ASM viet dung lenh: Movx thi trong C tuong duong voi nhung cau lenao????? Mong cac bac chi bao
              Cái này bạn chịu khó coi lại mấy mục trước (bên mục hdsd keil c thì phải). Tui có thể đưa vd ngắn gọn như vầy:

              unsigned char xdata biến; //khai báo biến để ở XRAM
              biến = 0xF2; //viết nội dung F2H ra ô nhớ biến

              Còn nếu muốn cụ thể đưa dữ liệu ra ô nhớ nào thì có thể dùng:
              XBYTE[0x0010] = 0xF2; //viết nội dung F2H ra ô nhớ 0010 của XRAM
              !e

              Comment


              • #8
                Nguyên văn bởi sun_rise Xem bài viết
                Các bác nào đã làm đồng hồ thời gian thực với DS1307 viết bằng ASM thì chỉ giáo cho tui với. Tui mới học 8051 định làm cái đồng hồ chơi nhưng thực sự mà nói thì đọc datasheet của con DS1307 tui không hiểu lám. Xin được chỉ giáo.
                Để có thể giao tiếp với DS1307 thì bạn phải biết về giao tiếp I2C. Nếu bạn đã từng làm giao tiếp này rồi thì không có vấn đề gì khó khăn nữa. Đây là thư viện I2C tôi viết cho 8051 bằng C, bạn tham khảo nhé. Lưu ý là với hàm này thì bạn không cần phải nối điện trở pullup cho 2 đường SCL và SDA.

                sbit SCL = P1^0;
                sbit SDA = P1^1;

                void delay(){
                unsigned char i;
                for (i = 0; i < 20; i++){};
                }

                //-----------------------------------------
                void SCL_high(){
                SCL = 1;
                delay();
                }

                //------------------------------------------
                void SCL_low(){
                SCL = 0;
                delay();
                }

                //-------------------------------------------
                void I2C_Start(){
                SDA = 1;
                SCL = 1;
                SDA = 0;
                delay();
                SCL = 0;
                SDA = 1;
                }

                //--------------------------------------------
                void I2C_Stop(){
                SDA = 0;
                SCL_high();
                SDA = 1;
                }

                //----------------------------------------------
                bit I2C_Write(unsigned char dat){
                unsigned char i;
                bit outbit;
                for (i = 1; i <= 8; i++){
                outbit=dat&0x80;
                SDA = outbit;
                dat = dat << 1;
                SCL_high();
                SCL_low();
                }
                SDA = 1; // set SDA to receive Acknowledge
                SCL_high();
                outbit = SDA; // check busy or not
                SCL_low();
                return(outbit); // if outbit=1 ,A=1: error // if outbit=0 ,A=0: ok
                }

                //----------------------------------------------------
                unsigned char I2C_Read(bit ack){
                unsigned char i, dat;
                bit inbit;

                dat = 0;
                for(i=1;i<=8;i++) {
                SCL_high();
                inbit = SDA;
                dat = dat << 1;
                dat = dat | inbit;
                SCL_low();
                }
                if (ack) SDA = 0; // set SDA = 0 (ACK)
                else SDA = 1; // set Non ACK
                SCL_high();
                SCL = 0;
                SDA = 1; // Set SDA = 1 for next read
                delay();
                return(dat);
                }
                CUNG CẤP PSOC, MẠCH NẠP
                CHUYỂN ĐỔI USB <-> RS485 AutoBaud
                RS232 <-> RS485 MultiBaud
                MẠCH NẠP USBPPI S7-200
                Mobile: 0906076116
                Email:

                Comment


                • #9
                  Ví dụ giao tiếp với DS1307 như sau:

                  //-------------------------------------------------------------
                  // hàm ghi dữ liệu data tới địa chỉ thanh ghi add của RTC
                  //-------------------------------------------------------------
                  void rtc_write(unsigned char add, unsigned char data){
                  I2C_Start();
                  I2C_Write(0xd0); // địa chỉ của 1307 //chế độ ghi
                  I2C_Write(add); // địa chỉ thanh ghi
                  I2C_Write(((data/10)<<4)|(data%10)); // chuyển thành số thập phân
                  I2C_Stop();
                  }

                  //---------------------------------------------------------------
                  // đọc dữ liệu tại thanh ghi có địa chỉ add của RTC
                  //---------------------------------------------------------------
                  unsigned char rtc_read(unsigned char add){
                  unsigned char data;
                  I2C_Start();
                  I2C_Write(0xd0); // địa chỉ của DS1307 // chế độ ghi
                  I2C_Write(add); // địa chỉ thanh ghi cần đọc
                  I2C_Start(); // restart
                  I2C_Write(0xd1); // địa chỉ DS1307 // chế độ đọc
                  data = I2C_Read(0);
                  I2C_stop();
                  data = (data & 0x0f) + (data>>4)*10; // chuyển thành số thập phân
                  return (data);
                  }

                  //------------------------------------------------
                  void main()
                  {
                  unsigned char hour, minute, second, date, month, year;
                  rtc_write(0x07, 10); // set control register 00010000; 1Hz

                  ......................
                  // ghi thời gian vào RTC
                  rtc_write(0x00, second);
                  rtc_write(0x01, minute);
                  rtc_write(0x02, hour);
                  // rtc_write(0x03, day_of_week);
                  rtc_write(0x04, date);
                  rtc_write(0x05, month);
                  rtc_write(0x06, year);
                  while(1){
                  ....
                  // đọc thời gian từ RTC
                  second = rtc_read(0x00);
                  minute = rtc_read(0x01);
                  hour = rtc_read(0x02);
                  date = rtc_read(0x04);
                  month = rtc_read(0x05);
                  year = rtc_read(0x06);
                  }
                  }
                  Last edited by encoder; 04-11-2006, 17:07.
                  CUNG CẤP PSOC, MẠCH NẠP
                  CHUYỂN ĐỔI USB <-> RS485 AutoBaud
                  RS232 <-> RS485 MultiBaud
                  MẠCH NẠP USBPPI S7-200
                  Mobile: 0906076116
                  Email:

                  Comment


                  • #10
                    hướng dẫn chạy Debug trong Keil C bằng hình ảnh.

                    Để biết tại sao chương trình của mình chạy không ngon nghẽ, sai chỗ nào. Một công cụ hữu ích là dùng trình gỡ rối debug. Tôi viết mục này mong giúp những người mới học bổ sung cho mình một công cụ để tránh được những mò mẫm khi làm việc.
                    Attached Files

                    Comment


                    • #11
                      ADC0809 có 8 ngõ vào độ phân giải 8 bit.
                      Nếu dùng PIC16F877A thì đã có tích hợp sẵn ADC bạn có thể sử dụng rất tiện lợi.
                      Một bông hồng cho những ai đang còn mẹ,
                      Đang còn mẹ để lòng vui sướng hơn ..

                      Comment


                      • #12
                        Nguyên văn bởi hackervnbk
                        Sao chỉ mỗi bác Linhnc post bài thế. Em thấy mọi người học 8051 cũng nhiều thế thì tại sao không mỗi người góp một chút cho các đề tài của chúng ta thêm phong phú nhỉ
                        http://www.embestdks.com/vn/Download...d=75&idmenu=72
                        thêm tí đề tài cho sinh viên hưởng ứng chú linh
                        SHARE KHO PHIM LỚN

                        Comment


                        • #13
                          led matrix

                          em đang tìm hiểu sơ sơ về led matrix nhưng làm mấy lần mà vẫn không thành.Có cao thủ nào giành chút thời gian hướng dẫn cụ thể 1 chút không ạ?Em đã đọc thử về MAX6952 nhưng chưa hiểu cách dùng để tạo font chữ và hiển thị như thế nào? Bác nào đã từng làm rồi thì cho em xin sơ đồ và code để học tập được không ạ?(Em đã đọc 1 số bài post trên diễn đàn nhưng chắc do kiến thức không đủ nên không hiểu lắm, mong các bác chỉ giáo cụ thể)

                          Comment


                          • #14
                            bác linhnc308 ơi, cái file code ASM của bác rất hay, rất bổ ích, bác có cái tương tự như thế mà viết = C ko bác, bác post lên nhé, hoặc gửi vào email của em nhé bác
                            Em cám ơn bác

                            Comment


                            • #15
                              EM ten Nguyen Nhut Doan la thanh vien moi.Em dang hoc lap trình 8951 vay bac nao co chuong trinh keil cho em xin .em cam on nhieu!!!
                              |

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X