Thông báo

Collapse
No announcement yet.

8051 hạn chế công nghệ hay trình độ lập trình ?

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

  • #16
    đa nhiệm trong sách có ví dụ về nháy led rồi đấy thôi.. -_-

    Comment


    • #17
      Nguyên văn bởi h11540 Xem bài viết
      bác nói câu mất quan điểm quá!!!
      thứ nhất:em không bảo là em nghĩ ra cái gì,em lập thớt là để hỏi chứ không công bố cái gì cả,ý em là sau khi được các bác trên tư vấn thì em có biết là có thể dùng lập trình tạo ra nhiều ngắt time được bằng cách lập trình
      thứ hai:bác có đọc nhưng không kĩ,thế này nhá em đố bác viết code quét 8 phím trên port 1 và đồng thời dịch từng led ở port 2 mà không bị trễ phím đấy,thực hiện 2 công việc riêng biệt trên 2 port cùng 1 lúc với thời gian khác nhau,giả sử port 1 không có hàm delay nên nó sẽ chạy 1 lèo theo đúng chu kì của câu lệnh nhưng port 2 có hàm delay nên nó sẽ bị trễ vậy làm thế nào để chạy được 2 port cùng lúc được ???
      ví dụ đơn giản nhất và dễ hiểu như này nhá :
      HTML Code:
      ....
      MAIN:
      JNB P1.0
      JNB P1.1
      JNB P1.2
      JNB P1.3
      JNB P1.4
      JNB P1.5
      ...
      ...
      MOV P2,#11111110B
      CALL DELAY
      MOV P2,#11111101B
      CALL DELAY
      MOV P2,#11111011B
      CALL DELAY
      ......
      .....
      ....
      END
      tất nhiên là còn nhiều các xử lí bằng thuật toán và dịch bít nhưng cách nào thì nó cũng thực hiện theo trình tự hết,vậy ai có thể cho em biết được cách xử lí đa nhiệm cho 8051 này không ????
      Cái này mình cũng đóng góp theo ý hiểu của mình. Muốn làm đa nhiệm thì phải có scheduler (ko còn delay nữa). Scheduler có thể fix chẳng hạn như chu kì của Scheduler là 100 đơn vị thời gian do ngắt timer đảm nhận. Sẽ có một biến đếm đc reset ở 100. Khi biến đếm = 0 thì đọc cổng (hoặc cứ 10 lần đếm thì đọc phím một lần), biến đếm = n thì dịch led. Bạn có thể tùy chỉnh khoảng thời gian cho phù hợp yêu cầu. Như vậy là 2 việc dc làm theo lịch trình đc tính toán trước. Nếu task dài và phức tạp, có thể phải cắt ra nhiều phần. Lúc này thì cần có stack để lưu trạng thái của chuơng trình trước khi chuyển context.
      Vấn đề khó ở đây là nếu làm như bt, cả 2 task ở trên đều đc cài đặt bên trong ISR. Như vậy rất bất tiện khi quá trình xử lý dài và không thể làm preemption. Theo như mình hiểu thì để giải quyết vấn đề trên, người ta ko lập trình task trong ISR. Bên trong ISR sẽ push vào stack của PC địa chỉ của task rồi return. Việc này khá nguy hiểm vì nếu có lỗi lập trình là chuơng trình tiêu ngay tuy nhiên con trỏ chuơng trình nhảy vào task khi thoát khỏi ISR. Cuối của task sẽ pop vào PC chuơng trình trước khi ngắt.
      Hi vọng là mình ko viết sai điều gì. Nếu có gì sai sót mong mọi người sửa giúp

      Comment


      • #18
        Nguyên văn bởi dtcn_112 Xem bài viết
        nghe giọng bác thấy quen ,thứ này mình có được học khi còn là sinh viên,ra trường đi làm rùi ko có thời gian làm lại,được học cái này cũng là may mắn,lập trình đa nhiệm có từ rất lâu rùi,với phương pháp này thì chíp 8051 sẽ mất đi Timer 0(ho hệ điều hành rtx_51 dùng Timer 0 dùng Tiemer này).trong phần mền có sẵn ví dụ luôn .nêu muốn bắt đầu thì chọn cái đèn giao thông có lẽ là dễ nhất.
        P/S:nghe giọng giống người bạn học cùng lớp quá ;D
        Bác có source code của rtx_51 ko? Em muốn đọc để xem thực tế họ làm thế nào

        Comment


        • #19
          Nguyên văn bởi h11540 Xem bài viết
          lại 1 người nữa có vấn đề đọc hiểu =_= ,bạn làm ơn sắn tay vào làm hộ tôi cái..,2 dòng của bạn không có 1 cái giá trị nào đối với tôi cả,bạn viết 2 dòng như vậy chỉ làm chật bộ nhớ của sever mà thôi,xin lỗi bạn viết cứ như ngọc hoàng trong táo quân năm nay vậy..'' đây là vấn đề nhạy cảm,cần xin ý kiến các cấp ...bla..bla, tôi lập thớt để anh em trao đổi những cái chưa biết,cái gì tôi chưa hiểu,chưa biết thì mọi người có thể dạy tôi,chương trình viết sai có thể chửi thẳng để còn tiến bộ,nếu mà nói như bạn thì cái diễn đàn này sẽ chả bao giờ tồn tại....''khả năng của chip tùy vào ứng dụng''..thế chưa hiểu về nó thì ứng vào mắt ak,tôi không ngại khi những người khác bảo làm cái này chưa được cái kia chưa đúng nhưng mà tôi ghét nhất thể loại nói mà chả làm,đi qua buông vài câu vớ vẩn chả được cái tác dụng gì cả,bạn là ''sêu'' bên diễn đàn banlinhkien.vn đúng không làm mất uy tín cả ra
          ai kia bên dien đàn banlinhkien dịch cái chương trình Keil C còn chưa xong, rồi ráp cái mạch y chang người ta mà vẫn ko làm đc ? đã vậy còn la ó mua linh kiện sao ko viết dùm code ? vậy là do đâu ? trình độ hay là công nghệ của chip ?

          Comment


          • #20
            không bênh vực ai vungtau88 hay h11540. nhưng câu hỏi bên h11540 thì đã thể hiện rõ đó là trình độ lập trình còn non, khà khà.

            Comment


            • #21
              Nguyên văn bởi Ari@132 Xem bài viết
              Bác có source code của rtx_51 ko? Em muốn đọc để xem thực tế họ làm thế nào
              trong phần mềm Keil C hay ridekit51 có sẵn về lập trình hệ điều hành rtx_51tiny mình cũng chỉ đọc các ví dụ đó chưa thực sự tự viết được chương trình nào .có một cuốn sách viết về hệ điều hành cho vi điều khiển họ 8051 bạn thích sang (Ebook cho dân nghiện vi điều khiển tải về)

              Comment


              • #22
                Nguyên văn bởi dt3k4 Xem bài viết
                không bênh vực ai vungtau88 hay h11540. nhưng câu hỏi bên h11540 thì đã thể hiện rõ đó là trình độ lập trình còn non, khà khà.
                lại thêm 1 người nữa thừa hơi dỗi việc,2 bạn làm ơn suy nghĩ 1 tý có được không hay để tôi phải giải thích nữa,hồi nhỏ không được ăn nhiều muối i ốt ak
                -nhiệm vụ của cái tít là thu hút được người đọc và mang đại ý của bài viết,cuối tít có dấu hỏi ''?'' thấy chưa hay chưa già mà mắt đã kém,đây là 1 câu hỏi mở để nhiều người cùng trả lời,ai cũng có thể nói,hoàn toàn đây không phải là bài giảng hay công bố công trình gì cả,xin nói lại là đây là hỏi ???,bạn hiểu tiếng việt chứ ?? @@
                -cái test code dịch bị lỗi là do thằng viết chứ không phải do thằng dịch,1 đồng tiền tôi có thể mua linh kiện ở bất cứ đâu nhưng ăn thua nhau ở chỗ support,hỗ trợ khách hàng có tốt hay không bạn Vungtau gì đó ak,kể cả bạn bảo tôi không biết cắm usb thì cũng chả sao vì thực sự tôi chả thèm quan tâm,nhìn chữ ký tôi thì biết,
                đi viết cái chương trình khai báo thư viện còn sai,định nghĩ chân còn phải sửa,thế thì bán hàng kiểu gì,hỏi thì cái lỗi keilc không biết sửa,bán hàng ???tôi mua lọ nước mắm người ta còn nhiệt tình hơn
                -riêng về trình độ thì chả nhẽ bạn không nhìn ra là tôi đang học 8051 hay sao,nó chỉ là 1 nền tảng để tiếp cận với VĐK,nó không có gì phải gọi là xấu hổ hay đáng ngại gì cả mà bạn làm câu cứ như vừa khám phá ra trái đất có nước vậy ,đến người chỉ biết sơ sơ cũng hiểu cái luồng cho 8051 là dành cho những người mới tìm hiểu VĐK,bạn biết thì bạn trả lời,không biết thì next chả ai quan tâm
                -nếu bạn biết tiếng việt thì chắc bạn hiểu cái tôi cần không phải những lời vớ vẩn của bạn,mọi người chỉ dẫn trên kia tôi có phản đối tý nào đâu
                SỐNG THEO BẢN CHẤT,KỆ MỌI NGƯỜI NÓI GÌ THÌ NÓI

                Comment


                • #23
                  Nguyên văn bởi dtcn_112 Xem bài viết
                  trong phần mềm Keil C hay ridekit51 có sẵn về lập trình hệ điều hành rtx_51tiny mình cũng chỉ đọc các ví dụ đó chưa thực sự tự viết được chương trình nào .có một cuốn sách viết về hệ điều hành cho vi điều khiển họ 8051 bạn thích sang (Ebook cho dân nghiện vi điều khiển tải về)
                  theo mình thì dùng time 0 tạo ngắt vào khoảng thời gian rảnh của VĐK như vậy sẽ tạo được 2 tần số khác nhau tại 2 chân của VDK
                  SỐNG THEO BẢN CHẤT,KỆ MỌI NGƯỜI NÓI GÌ THÌ NÓI

                  Comment


                  • #24
                    Nguyên văn bởi dtcn_112 Xem bài viết
                    trong phần mềm Keil C hay ridekit51 có sẵn về lập trình hệ điều hành rtx_51tiny mình cũng chỉ đọc các ví dụ đó chưa thực sự tự viết được chương trình nào .có một cuốn sách viết về hệ điều hành cho vi điều khiển họ 8051 bạn thích sang (Ebook cho dân nghiện vi điều khiển tải về)
                    sách về hệ điều hành thì mình đã đọc qua rồi, thường chỉ nêu lên nguyên lý và một số đoạn code mẫu thôi chứ ko có code của một hệ hoàn chỉnh

                    Comment


                    • #25
                      Nguyên văn bởi Ari@132 Xem bài viết
                      sách về hệ điều hành thì mình đã đọc qua rồi, thường chỉ nêu lên nguyên lý và một số đoạn code mẫu thôi chứ ko có code của một hệ hoàn chỉnh
                      thực sự nó quá khó sao ,ai có thể chỉ cho mình cơ chế hoạt động thế nào không ??
                      SỐNG THEO BẢN CHẤT,KỆ MỌI NGƯỜI NÓI GÌ THÌ NÓI

                      Comment


                      • #26
                        Nguyên văn bởi h11540 Xem bài viết
                        thực sự nó quá khó sao ,ai có thể chỉ cho mình cơ chế hoạt động thế nào không ??
                        Cơ chế thì mình đã viết qua trong trang thứ 2 rồi đấy, vấn đề là mình muốn xem cách cài đặt hoàn chỉnh của scheduler. Chẳng hạn như việc định nghĩa danh sách các task (id, priority, deadline...), tổ chức bộ nhớ để lưu context và truy xuất stack của thanh ghi PC để thoát khỏi ISR.

                        Comment


                        • #27
                          Nguyên văn bởi Ari@132 Xem bài viết
                          Cơ chế thì mình đã viết qua trong trang thứ 2 rồi đấy, vấn đề là mình muốn xem cách cài đặt hoàn chỉnh của scheduler. Chẳng hạn như việc định nghĩa danh sách các task (id, priority, deadline...), tổ chức bộ nhớ để lưu context và truy xuất stack của thanh ghi PC để thoát khỏi ISR.
                          thực sự thì lập trình đa nhiệm cho 8051 không phổ biến cho lắm,chắc cũng có nguyên do của nó như tít mình đề cập do công nghệ không đáp ứng được nên không được ưa chuộng,cũng có thể do khả năng lập trình không có,chắc chỉ dừng lại ở mức ''cưỡi ngựa xem hoa mà thôi'' ,chán quá
                          SỐNG THEO BẢN CHẤT,KỆ MỌI NGƯỜI NÓI GÌ THÌ NÓI

                          Comment


                          • #28
                            Đọc 1 lèo từ nãy tôi thấy hình như các bạn không phân biệt được thế nào là 8051 ?

                            8051 là core xử lý chứ không phải chỉ cụ thể 1 con MCU nào cả , việc đánh đồng mấy con 89 với cả họ 8051 là sai lầm .

                            AT89xxx của ATMEL chỉ là 1 trong số các MCU có tập lệnh theo 8051 !

                            Họ 8051 , các MCU sử dụng core 8051 có rất nhiều và có nhiều MCU mạnh ... ví dụ có những con MCU 8 bits thuộc họ 8051 của silabs , maxim- dallas có thể chạy tới cả 100 Mips ( Nhanh như 1 số ARM 32 bits ).

                            --- Với mấy con AT89 của ATMEL , giá thành rẻ , phổ thông ... tài nguyên bộ nhớ, rom , ram nghèo nàn , tốc độ chậm ,khả năng hạn chế, chịu nhiễu kém, không có nhiều module mở rộng nên hạn chế về nhiều mặt.
                            Thường được dùng trong ứng dụng nhỏ theo trình tự hay khéo léo sắp đặt việc xử lý đối với từng bài toán cụ thể . ( cái này cần yếu tố con người ), còn do những hạn chế phần cứng nên chúng cũng chẳng được đón chào ở những xử lý phức tạp , đòi hỏi chất lượng.
                            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                            Comment


                            • #29
                              Nguyên văn bởi h11540 Xem bài viết
                              thực sự thì lập trình đa nhiệm cho 8051 không phổ biến cho lắm,chắc cũng có nguyên do của nó như tít mình đề cập do công nghệ không đáp ứng được nên không được ưa chuộng,cũng có thể do khả năng lập trình không có,chắc chỉ dừng lại ở mức ''cưỡi ngựa xem hoa mà thôi'' ,chán quá
                              Thường cần đa nhiệm hay ko thì phụ thuộc vào ứng dụng như bác Quế Duơng đã nói. Họ MCU51 có tài nguyên hạn hẹp nên thường dùng trong những ứng dụng đơn giản ko cần đa nhiệm phức tạp. Nếu cần lập trình thời gian thực thì người ta mua các hệ điều hành có sẵn rồi lập trình lên trên như rtx51. Chẳng ai lại đi lập trình lại từ đầu cả vì rất tốn công sức mà ko đảm bảo an toàn.

                              Comment


                              • #30
                                @ Thớt + All.
                                Nó là cả 2.
                                1. Hạn chế công nghệ thì rõ rồi, cứ nhìn phần cứng thì rõ.
                                - Tốc độ xử lý thấp. Thấp vào top so với các MCU hiện giờ như AVR,PIC,,,
                                - Ngoại vi hạn chế. Chả có cái gì ngoài IO, ngắt, timer... trong khi các MCU khác thì nào là ADC,DAC,SPI,I2C....
                                - Dung lượng bộ nhớ ít. 8K hay 16K, 256 byte RAM thì làm ăn gì ? Làm đc mấy cái ứng dụng đơn giản, chương trình ngắn.
                                - ....
                                2. Trình độ lập trình. Cái này thì cũng rõ ràng luôn. Cùng 1 con 8051 người làm đc, người ko. Và trình độ lập trình thể hiện thêm ở cái chỗ là người giỏi biết chọn MCU phù hợp với thời đại, với dự án, với giá thành, với nhiều cái nữa thay thì cố nghiền ngẫm 1 MCU và cố gắng làm mọi thứ với nó trong khi ngoài kia vô số MCU nhiều ưu điểm và mà người ta đang sử dụng.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X