Thông báo

Collapse
No announcement yet.

Làm sao để giỏi lập trình ASM cho vi điều khiển?

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

  • Làm sao để giỏi lập trình ASM cho vi điều khiển?

    Các bạn cho tôi hỏi:
    Tôi mới nhảy vào lĩnh vực vi điều khiển & học con 8051 khoảng 2 tháng nay. Tôi đã đọc lý thuyết về cách điều khiển LED đơn nhấp nháy, LED 7 đoạn, PWM, ma trận phím, động cơ bước, động cơ một chiều, ma trận phím...nhưng sao tôi cảm thấy việc lập trình (tôi dùng ASM) là một vấn đề khá khó khăn. Các bạn vui lòng chỉ cho tôi làm cách nào để có thể lập trình vi điều khiển cho giỏi? Làm sao để nghĩ ra được các thuật toán hay?
    Cám ơn nhiều.

  • #2
    Bạn phải lập trình và tét mạch với phần cứng thực tế thật nhiều.
    Dần dần bạn sẽ có nhiều kinh nghiệm và phát triển thuật toán hay hơn thôi.
    Nếu lập trình nhiều và hơi chuyên thì dù là asm cũng sẽ rất gọn và giải quyết tốt vấn đề.
    Chúc may mắn!

    Comment


    • #3
      theo mình có rất nhiều việc có thể học được nhưng tư duy lập trình,nhất là tổ chức chương trình tối ưu thuật toán thì chỉ có thể cải thiện mà thôi .Cái này có bạn khi sinh ra đã có nên nó rất tự nhiên

      Comment


      • #4
        Cái chính là phải làm nhiều , bác à. Hãy tự ra cho mình các bài tập: VD như thiết kế một đồng hồ số, đo tóc độ động cơ, đo tần số dòng điện, lập trình ma trận phím, led ma trận... Assembly là một ngôn ngữ khó, đòi hỏi phải nhớ nhiều, làm nhiều và hiểu biết khá sâu về phần cứng.

        Comment


        • #5
          Sản phẩm đầu tay của tui là làm cái mạch hiển thi led 7 thanh và bài lập trình đầu tiên của tui là lập trình đếm tăng từ 0 đến 9 và ngược lại ..... he he nhớ lại hồi đó tui làm vội vàng cái mạch rồi về nghỉ tết . năm đó tôi gần như không đi chơi tết. ở nhà lập trình .. hi hi có những lúc lầm mãi mà không chạy ...... nó lại hiển thị lung tung .... thế là tôi gọi điện cho bạn ( khi đó chưa biết trang dientuvietnam ) vì nó đã nghịch cái này trước tôi he he .... tháng đó nhà tôi mất kha khá tiền điện thoại . Nhưng sương thật lập trình cho nó chạy ( trên chính mạch mình làm ra ) rất là thú vị ............

          Comment


          • #6
            Lưu đồ giải thuật rất quan trọng !!

            Comment


            • #7
              Nguyên văn bởi love_ac Xem bài viết
              theo mình có rất nhiều việc có thể học được nhưng tư duy lập trình,nhất là tổ chức chương trình tối ưu thuật toán thì chỉ có thể cải thiện mà thôi .Cái này có bạn khi sinh ra đã có nên nó rất tự nhiên
              Cám ơn bạn nhưng nếu vậy thì trong trường hợp này ta phải làm sao? Không nên học vdk nữa vì sẽ không có hiệu quả?

              Comment


              • #8
                Nguyên văn bởi laquoc Xem bài viết
                Các bạn cho tôi hỏi:
                Tôi mới nhảy vào lĩnh vực vi điều khiển & học con 8051 khoảng 2 tháng nay. Tôi đã đọc lý thuyết về cách điều khiển LED đơn nhấp nháy, LED 7 đoạn, PWM, ma trận phím, động cơ bước, động cơ một chiều, ma trận phím...nhưng sao tôi cảm thấy việc lập trình (tôi dùng ASM) là một vấn đề khá khó khăn. Các bạn vui lòng chỉ cho tôi làm cách nào để có thể lập trình vi điều khiển cho giỏi? Làm sao để nghĩ ra được các thuật toán hay?
                Cám ơn nhiều.
                Muốn biết phải hỏi, muốn giỏi phải học, "Không thầy đố mày làm nên", thậm chí "dốt nát đến đâu, học lâu cũng biết".
                trích : http://www.quehuong.org.vn/vi/nr0503...ns061128153532

                Comment


                • #9
                  Nguyên văn bởi laquoc Xem bài viết
                  Cám ơn bạn nhưng nếu vậy thì trong trường hợp này ta phải làm sao? Không nên học vdk nữa vì sẽ không có hiệu quả?
                  Vậy là bạn không hiểu ý của love_ac rồi . Muốn gioi thì chúng ta cần phải luyện tập thường xuyên , tự nâng cấp mỗi bài tập hay đề tài của mìh lên cao hơn để hiểu hơn đối với mỗi chương trình khó. Và bạn cần thay đổi nhiều đề tài khác nhau .... như vậy bạn sẽ hiểu hơn về cái cũ ..... nó giúp cho bạn củng cố kiến thức ....
                  Đây là ý kiến riêng cuả mình .....
                  Chúng ta làm kỹ thuật thì nên luyện khả năng quan sát, phân tích và suy đoán đối với nhưng vấn đề mà ta gặp như vậy thì mới nhanh tiếp thu cái mới . Thằng bạn mình nó quan sát khá tốt, hiểu nhanh và làm cũng nhanh .... cùng học với nó mà mình luôn bị chậm ..... vậy đó
                  Mọi sự cố gắng luôn được đền đáp ..... Hãy làm việc tập chung nhất có thể ....
                  Ví dụ cụ thể cho bạn : đối với toàn thể sinh viên thì thời kì làm đồ án là thời kì SV chúng ta học được nhiều điều nhất và nhanh nhất .............

                  Comment


                  • #10
                    Chỉ có lập trình và thiết kế nhiều mới giỏi được.
                    Làm nhiều sẽ sáng ra thôi.
                    Ko ai giỏi khi ko đụng chạm thực tế nhiều được.

                    Comment


                    • #11
                      Nguyên văn bởi laquoc Xem bài viết
                      Các bạn cho tôi hỏi:
                      Tôi mới nhảy vào lĩnh vực vi điều khiển & học con 8051 khoảng 2 tháng nay. Tôi đã đọc lý thuyết về cách điều khiển LED đơn nhấp nháy, LED 7 đoạn, PWM, ma trận phím, động cơ bước, động cơ một chiều, ma trận phím...nhưng sao tôi cảm thấy việc lập trình (tôi dùng ASM) là một vấn đề khá khó khăn. Các bạn vui lòng chỉ cho tôi làm cách nào để có thể lập trình vi điều khiển cho giỏi? Làm sao để nghĩ ra được các thuật toán hay?
                      Cám ơn nhiều.
                      cũng giống như các bạn khác khuyên thôi
                      còn kinh mghiệm của mình là hiểu sâu về kiến trúc của VĐK để gặp loại nào cũng làm được 89 PIC AVR ARM ...
                      còn ý tưởng để giải quyết bài toán là do trời phú
                      nhưng nếu cần cù thì sẽ bù thông minh
                      Điện thoại:
                      email:

                      Comment


                      • #12
                        "còn ý tưởng để giải quyết bài toán là do trời phú" giống ý mình thế.Đồng ý với anh Dung về câu này .Có những cái không bao giờ học được...

                        Comment


                        • #13
                          mình nghĩ cái quan trọng khi làm việc với vi điều khiển cũng như là hệ thống nhúng là phải tính toán, thiết kế, tổ chức là lựa chọn đúng. Lập trình chỉ là bước cuối cùng.

                          Ví dụ: Bạn làm một ứng dụng không cần real-time, bộ nhớ khá lớn, tốc độ chip khá mạnh thì tốt nhất là chọn C vừa portable lại ít phụ thuộc vào phần cứng. Viết sẽ nhanh hơn rất nhiều, lại còn dễ debug v.v...

                          ASM thường dùng cho các ứng dụng real-time đòi hỏi độ chính xác cao, tốc độ nhanh, codesize nhỏ ( nói chung là tài nguyển hệ thống ít ). Nhược điểm của asm là bạn viết cho 1 con khi chuyển sang con khác không cùng dòng thì sẽ phải sửa kha khá. Khó tư duy trừu tượng và triển khai thuật toán.

                          Còn cái quan trọng nhất ai cũng biết đó là lựa chọn thuật toán. Thuật toán mà tốt có khi viết bằng C còn chạy nhanh hơn ASM ( chi tiết cho luận chứng này xin mời đọc quyển Introduction to algorithms của MIT). Cũng phải hiểu cấu trúc của VDK để có những cách viết code tối ưu cho nó hơn.

                          P/s: Thành công chỉ có 1% là tài năng còn lại 99% là những thứ còn lại

                          chúc vui.

                          Comment


                          • #14
                            Theo như kinh nghiệm của tui thì muốn thành thạo Asem thì ít ra phải có một cuốn sách gối đầu giường.Quan trọng là bạn phải rèn luyện ý tưởng.Khi có một bài toán đặt ra,bạn phải gắng suy nghĩ con đường đi của mình,sau đó coi trong sách người ta giải sao,rồi so sánh với lối suy nghĩ cua mình.Đặc biệt bạn phải học biết được tập lệnh.Rèn luyện nhiều rồi bạn se thành công.Chúc bạn học tốt.

                            Comment


                            • #15
                              Có nhiều phương pháp để có thể tiếp thu nhanh một ngôn ngữ lập trình mới học,sau đây là một trong những phương pháp mà tôi đã áp dụng và có hiệu quả trong thờI gian ngắn.

                              1/ về lý thuyết :
                              cần có sách học lập trình ngôn ngữ mà mình muốn học,thường thì học song hành cùng 1 lúc 2 ngôn ngữ lập trình sẽ có lợI hơn,sự so sánh cú pháp và chức năng các câu lệnh của 2 ngôn ngữ lập trình có thể gíup mau thuộc bài hơn.
                              a/ Đọc qua toàn bộ các câu lệnh , cách viết của ngôn ngữ lập trình,nếu trong sách đã phân chương trình ra nhiều phần rồI ,ta lập thêm 1 bảng tóm tắt các câu lệnh theo thứ tự từ A tớI Z,dán vào mỗI tờ giấy của cuốn sách để khi cần có thể tra ý nghĩa các câu lệnh một cách nhanh chóng(giống như các mẩu giấy đánh dấu của từ điển),
                              lúc đầu không cần học thuộc lòng các câu lệnh,chỉ cần biết tổng quát chức năng của một số câu lênh thông dụng,và nhớ nó được dánh dấu ở chỗ nào trong sách
                              b/ ghi nhớ 1 số thí dụ đơn giản trong sách
                              c/ nếu là ngôn ngữ lập trình cho vi điều khiển thì cần đọc,hỏI,tra data sheet,am hiểu 1 số cơ bản về vi điều khiển này,như tần số dao động thạch anh,thanh ghi,các địa chỉ ô nhớ,timer,ngắt ,port v…v….
                              d/một vài phần mềm tiện ích.
                              2/ thực hành:
                              cần có 1 bo nạp cho VĐK,nếu là bo nạp tích hợp luôn phần thực thi chương trình thì tốt
                              thực hành 1 vài thí dụ đơn giản trong sách ,
                              học một ngôn ngữ lập trình mớI,trở ngạI đầu tiên thường là không nhớ câu lệnh ,cách viết,cùng những chức năng ,vì vậy sự chuẩn bị cho việc tra cứu câu lệnh trong sách sao cho nhanh là cần thiết, điều này làm ta có thì giờ tập trung để viết nhiều câu lệnh hơn.và xem được kết quả thực hành nhanh hơn,chỉ cần xem được câu lệnh mà mình chưa thuộc lắm bằng động tác lật đúng trang giấy có viết câu lệnh này ngay lập tức thay vì phảI lật 20 tờ giấy là bạn có thể viết chương trình nhanh gấp 20 lần,

                              3/viết lưu đồ giảI thuật : có nhiều khi các bạn và tôi nghĩ rằng giảI thuật cho 1 ngôn ngữ lập trình đòi hỏI ít nhiều sự sáng tạo và tùy thuộc Gen của mỗI ngườI, điều này đúng,giống như nước cờ đi của mỗI ngườI mỗI khác,nhưng chúng ta vẫn có thể nâng cao trình độ giảI thuật được bằng cách làm thực hành nhiều bài tập của các chương trình mẫu cho sẵn, tập viết lưu đồ giảI thuật từ các câu lệnh có sẵn của 1 chương trình, ta sẽ rút ra được nhiều kinh nghiệm về giảI thuật của các chương trình căn bản.(tương tự như một ngườI đánh cờ học các thế cờ căn bản vậy).

                              4/Trí não: Dĩ nhiên động não là chính ,trong việc nghĩ ra các thuật toán hay, động não cần năng lượng,cần vitamin 6. năng lượng từ cơ thể do máu chuyển tảI lên não,nếu bạn có thường xuyên tập luyện 1 môn thể thao nào đó ,bạn sẽ nhận thấy rằng việc học lập trình không quá khó.

                              5/ Tìm giảI thuật lúc trước khi ngủ,và viết câu lệnh của chương trình vào sáng sớm hôm sau.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X