Thông báo

Collapse
No announcement yet.

HƯỚNG DẪN LẬP TRÌNH KEIL C CHO 8051-[Chỉ dành post bài hướng dẫn]

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

  • anh newuser ah. em da đọc bài của bác về lâp trình về ché tạo đờng hồ dùng rtc nhưng em ko hiểu các chân mà bác chọn nối với selec,dec,..có tác dụng gì em mong bác giải thích rõ hộ em vì emcung đang làm về dề tai dấy bác có thể giải thích cho em dược ko? với lại em muốn thiết kế thêm các phím ấn để điều chỉnh thời gian tùy ý nhưng chưa lập trình được anh giúp em được ko?
    Last edited by vtanh1310; 01-12-2006, 20:46. Lý do: anh newuser nhanh giup em nhe

    Comment


    • Qua đây down tài liêu I2C nhé, cái này là tổng quan và áp dụng cho PIC, nhưn các loại VDK khác thì như nhau thôi.
      Về CCS cho PIC:
      http://www.picvietnam.com/forum//showthread.php?t=612

      Về I2C:
      http://www.picvietnam.com/forum/showthread.php?t=301

      Có bài viết về I2C dùng CCS nhưng tôi chua tìm lại dc. nếu bạn cần thì gửi mail cho tôi rồi tôi send lại cho.
      Chúc thành công!
      linhnc308@yahoo.com
      Ethernet-RS232, PIC Webserver, RFID Reader
      CallerID, Cảnh báo BTS, ...
      0988006696
      linhnc308@gmail.com
      http://linhnc308.blogspot.com

      Comment


      • Anh NgoHaiBac ơi , qua forums em thấy anh hiểu biết rất rộng về mảng đề tài mà anh đã trả lời , theo sự hướng dẫn của anh , em đã download được phần mềm Keil C 8.02 nhưng để ***** theo địa chỉ anh hướng dẫn "Lic: http://www.mcubbs.net/bbs/uploadfile...1057467280.rar" em chẳng tìm thấy cái mình cần , anh có thể giúp em được không.

        Thành thật cám ơn.
        Last edited by btram104; 04-12-2006, 10:24.

        Comment


        • http://www.tailieuvietnam.net/downlo...aibac/Keil.zip

          Em download file này vài giải nén vào ổ C:\ nhé. File này anh ***** rùi. Nên chạy bình thường.

          Chúc bạn thành công.
          Technical sale at WT Microelectronics S'pore
          Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
          Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

          Comment


          • Chào các bạn, như đã hứa với các bạn gửi mail cho mình cũng như các bạn trong diễn đàn. Nay mình gửi các bạn mốt số file trong đĩa mà bọn www.keil.com cho mình nhé:

            1/Các appnote của keil. Các bạn có khi chẳng cần đặt câu hỏi gì nữa khi có nó .
            http://www.tailieuvietnam.net/downlo...%20Appnote.zip
            (32.6 MB)

            2/ File hướng dẫn debug trong Keil C.
            http://www.tailieuvietnam.net/downlo...ibac/debug.zip
            (34.6MB).

            3/File hướng dẫn mô phỏng trong Keil C.
            http://www.tailieuvietnam.net/downlo...c/simulate.zip
            (28.7 MB)

            4/Phần mềm Keil C 8.05 bản Full. Đã có hướng dẫn *****. Anh em xem ở các bài trước nhé.
            http://www.tailieuvietnam.net/downlo...ac/C51v805.zip

            Chúc các bạn thành công.
            Technical sale at WT Microelectronics S'pore
            Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
            Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

            Comment


            • Em là dân mới tập tành viết VXL , xin nhờ các anh chị giúp giùm em một việc như thế này , đây là đoạn code viết bằng assembler cho AT89C51 dùng cổng T0 P3.4 để đếm , nhưng nó chỉ đếm được 255 lần ghi trong TL0 mà TH0 chẳng thay đổi giá trị gì , em muốn đếm sự kiện bằng 16 bít thì phải làm sao , anh chị nào chỉ em với , cám ơn nhiều nhiều ... lắm.


              ; Counter.asm

              org 0000h
              setb T0
              mov a, TMOD
              anl a, #0f0h
              orl a, #5 ; counter 0 mode 1
              ; --------------------------------------------------------
              mov TMOD, a
              setb TR0 ; counter 0 on
              mov b, #0

              mov a, b
              mov P0, a
              mov a, b

              loop:
              mov a, TL0 ; lay TL0 vao a
              anl a, #255
              xrl a, b ; so sanh gia tri dem
              jz loop ; nhay neu bang

              inc b ; tang b
              anl b, #0Fh
              mov a, b

              mov P0, a ; chi thi ra cong P0
              mov a, b ;
              sjmp loop ; lap lai mai mai...


              END
              Last edited by btram104; 21-12-2006, 10:01.

              Comment


              • Chú này viết loằng ngoằng quá. Cụ thể toi hiển thị số đếm ra cổng P0 và P1 nhé.
                org 0
                setb P3.4 ;xac lap P3.4 la dau vao
                mov a,TMOD ;doc TMOD vao A
                anl a,#0F0H ;xoa 4 bit thap
                orl a,#00000101B ;05H(xac lap timer0:mode 1(16 bit), counter
                mov TMOD,a
                mov TH0,#0 ;xoa counter0
                mov TL0,#0
                setb TR0 ;cho phep counter0 bat dau dem
                loop:
                mov P0,TL0 ;chuyen so dem byte thap ra P0
                mov P1,TH0 ;chuyen so dem byte cao ra P1
                jmp loop ;khi dem tran, tu dong quay ve 0 de dem len

                Comment


                • Cám ơn anh GANHEP cu phap của anh đơn giản mà hiệu quả , " đúng là có tay nghề "

                  Comment


                  • Nguyên văn bởi pace100k
                    Cac anh oi em moi tim hieu ve VDK ho 89 (89s52), em co cau hoi the nay :
                    sau khi bien dich song bang kelvil roi thi lam the nao de nap vao cho no vay ???

                    mong duoc chi giao' .
                    troài dùng mạch nạp chíp chứ còn gì nữa dùng phần mềm nạp
                    89c thì dùng ezdownloader còn 89s thì dùng SPI pgm
                    đây là một dạng kit có tích hợp mạch nạp
                    SHARE KHO PHIM LỚN

                    Comment


                    • Cháu nên vào luồng http://www.dientuvietnam.net/forums/...ead.php?t=2968
                      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


                      • Help! help! help! mọi người giúp mình cái ... gay go quá.
                        Mình có một đoạn code được viết bằng C và build thành hex nạp vào con 89C51 thì chạy ngon ơ, thế nhưng nạp vào 89C2051 (Đã chuyển thư viện trong KeilC, nội dung chương trình thì chỉ sử dụng port 1 và 3, sử dụng cả 2 timer) thì nó lại báo lỗi "Verify Failed at 0".
                        Chú ý rằng... mạch chắc là ko thể lỗi đc vì nạp thử file hex có sẵn trong chaokhun (cái mạch đồng hồ ấy) lại ko sao....
                        Không biết thiết lập thư viện có sai gì không? Mong mọi người giúp đỡ

                        Comment


                        • Lỗi này là khi cậu include sai header file, nó báo là chưa khai báo các biến. Bạn phải

                          # include "regx51.h"

                          vì header file này đã định nghĩa địa chỉ của P1_0, ... thì bạn mới sử dụng được chứ nhỉ:d

                          Bạn cứ thử mở file regx51.h trong thư mục INC/Atmel/ của thư mục cài đặt ra xem sao sẽ hiểu ngay mà.

                          chúc bạn thành công.
                          Technical sale at WT Microelectronics S'pore
                          Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                          Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                          Comment


                          • mình cũng xem lại rùi.# include "regx51.h" rất đúng.
                            mình đã xem bài của ccaaju làm lúc trước ma.

                            Comment


                            • còn nữa.cậu có thể chỉ cho mình biết ở đâu dạy lập trình 8051 bằng c ko?
                              mình muốn học ngay.gấp rút lắm rùi.mình ở hà nội.
                              cám ơn hải bắc nhe!

                              Comment


                              • Mình chẳng biết chỗ nào dạy lập trình 8051 bằng C cả. Bạn cứ lên diễn đàn học hỏi down sách vở về mà đọc thôi. Còn chương trình mà bạn gửi lỗi thì bạn hãy đưa cả code của chương trình đó lên nhé k có sao mà biết được. Còn chương trình mà mình viết thì chạy ok mà.

                                Anh em nếu lên mạng không tiện mang theo quyển sách C51 Primer thì có một địa chỉ đọc nó trực tuyến dạng HTML ở đây:
                                http://www.esacademy.com/automation/docs/c51primer/

                                hoặc đây:
                                http://www.hitex.com/iuk/c51primer/c51primer.html

                                Tiếp theo, vừa học 8051 để thi vừa viết cho anh em luôn :d. Bài này mình viết về các vùng nhớ của 8051 để có cơ sở viết các bài tiếp theo.





                                Hình 1: Các không gian nhớ của 8051


                                1/Vùng nhớ Data
                                Trong CPU 8051 vùng nhớ đầu tiên là "DATA". Đó là vùng nhớ RAM on-chip. Bắt đầu từ D:0x00 đến D:0x7F (D chỉ rằng đây là vùng nhớ Data). Vùng RAM này có thể được dùng cho các biến chương trình. Đó là vùng nhớ có thể định được địa chỉ trực tiếp, vì thế có thể dùng các lệnh dạng như: "MOV A,x".

                                D:00 đến D:1F là 4 bank (bank 0 đến bank 3). Mỗi bank gồm 8 byte là địa chỉ của các thanh ghi R0 đến R7. Muốn sử dụng vùng nhớ này thì khai báo với từ khóa data


                                D:20 đến D:2F là vùng không gian có thể định địa chỉ bít được (bit addressable). Đó là sự khác biệt so với C chuẩn. Ví dụ một biến P ở địa chỉ D:0x21 thì bạn có thể truy nhập vào từng bít của nó như: P.0, P.1, P.3 , P.4,... trong ASM thì phải . Còn trong C bạn phải định nghĩa với từ khóa sbit. ví dụ:

                                Code:
                                char bdata test;   // khai báo biến test nằm trong vùng nhớ định được địa chỉ bit
                                sbit  sign = test^7; // biến dấu của test khai báo là bit thứ 7
                                Từ đó bạn có thể thấy rằng muốn khai báo một biến trong vùng RAM định địa chỉ bít thì các bạn thêm từ khóa bdata.

                                Vùng nhớ trên 0x80 là vùng nhớ dành cho các thanh ghi đặc biệt (SFR). Đây là vùng nhớ thường định địa chỉ bằng tên như SYSCON. Các tên này bạn có thể thấy là nó khởi tạo bởi các thanh ghi trong header file (thử mở file regx51.h ra xem nó viết kí rì ). Nó không định nghĩa hết mà các địa chỉ không định nghĩa dùng cho các mục đích khác trong tương lai. Các bạn sẽ thấy là nó định nghĩa các thanh ghi với từ khóa sfr.

                                Ví dụ:
                                Code:
                                sfr P1=0x90; // định nghĩa tên P1 là địa chỉ của port1
                                2/ Vùng nhớ thứ 2 là vùng nhớ tồn tại giữa địa chỉ 80H đến FFh. Đây là vùng nhớ IDATA : vùng nhớ không định địa chỉ trực tiếp (indirectly addressable) thường dùng với các lệnh thao tác với địa chỉ tương đối trong ASM (như MOV A,@Ri), vùng nhớ này có tiền tố I và kí hiệu với tên là IDATA.

                                Đây chính là vùng nhớ tiếp theo của RAM nội với 8051 hay nói cách khác khi gắn thêm RAM thì vùng nhớ này chính là vùng RAM ngoài. Còn với 8052 với 256 byte RAM nội thì vùng nhớ này chính là vùng RAM nội.

                                Đây là vùng nhớ rất thích hợp dùng cho stack SP.

                                3/ Thứ 3 là vùng nhớ CODE segment là vùng nhớ trong ROM, bắt đầu từ địa chỉ 0 và nó được dành cho CODE chương trình. Nó bắt đầu từ C:0000 đến C:0FFFFh (65536 bytes). Vùng nhớ này được truy nhập qua bộ đếm chương trình (PC) đối với opcode và bởi DPRT cho dữ liệu (cả 2 thanh ghi này là các thanh ghi 16 bit).

                                Trong ROM chỉ có biến constant mới được đặt tại đây. Tuy nhiên, một vài bộ nhớ Flash có khả năng thay đổi dữ liệu trong CODE space. Một số loại mới cho phép ứng dụng có thể load các blocks của code thông qua giao diện ISP. Cái này có thể thấy ở dòng 89S hay ở PIC đó.

                                (còn tiếp nữa ở bài sau, giờ tớ phải đi học mấy cái, đang ôn thi mà .)
                                Technical sale at WT Microelectronics S'pore
                                Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                                Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X