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

                              • bqviet
                                Trả lời cho Đấu tắt điện cho máy tính bảng
                                bởi bqviet
                                Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                                06-12-2025, 17:17
                              • nguyendinhvan
                                Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                                bởi nguyendinhvan
                                Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                                05-12-2025, 19:59
                              • afrendly
                                Trả lời cho Đấu tắt điện cho máy tính bảng
                                bởi afrendly
                                Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                                04-12-2025, 01:27
                              • nick22
                                Trả lời cho Máy điện châm ?
                                bởi nick22
                                Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                                01-12-2025, 13:23
                              Đang tải...
                              X