Thông báo

Collapse
No announcement yet.

Giúp code gọi chương trình con bằng nút ấn MODE

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

  • Giúp code gọi chương trình con bằng nút ấn MODE

    Chào các bác. Em có 1 vài chỗ ko biết mong các bác giúp với.
    Đề bài là:
    Nguyên lý : Khi ấn Start hệ thống chạy, ấn nút Mode hệ thống chuyển sang các chế độ nháy khác nhau, cho đến khi ấn Stop hệ thống dừng
    Yêu Cầu: - Xây dựng phần cứng
    - Xây dựng lưu đồ thuật toán
    - Viết chương trình (dùng hợp ngữ hoặc C)
    Hiện tại đã viết code vài kiểu nháy và chạy mô phỏng ok. Nhưng em chưa biết các vấn đè sau:
    1. các nút ấn STOP, START, MODE thì cho vào đâu?
    2. code gọi các chương trình con khi ấn START, STOP, MODE

    Sau đây là mạch mô phỏng và code. Các bác giúp em với, sắp nộp bài rồi





    code: (ví dụ 2 kiểu nháy)
    ORG 00H

    ;Nhay 4 led thay doi nhau
    MAIN:
    MOV P2,#00001111B
    CALL DELAY
    MOV P2,#11110000B
    CALL DELAY
    JMP MAIN

    ;Nhay sang dan
    MAIN:
    MOV P2,#00000000B
    CALL DELAY
    MOV P2,#00000001B
    CALL DELAY
    MOV P2,#00000011B
    CALL DELAY
    MOV P2,#00000111B
    CALL DELAY
    MOV P2,#00001111B
    CALL DELAY
    MOV P2,#00011111B
    CALL DELAY
    MOV P2,#00111111B
    CALL DELAY
    MOV P2,#01111111B
    CALL DELAY
    MOV P2,#11111111B
    CALL DELAY
    JMP MAIN


    DELAY:
    MOV R0,#255
    LAP:MOV R1,#255
    DJNZ R1,$
    DJNZ R0,LAP
    RET
    END
    Thks !
    Last edited by mrmiu; 22-04-2012, 09:14.

  • #2
    lắp start, stop, mode vào chân nào chả được, nếu chưa quen thì có thể dụng ngắt ngoài, đảm bảo kích phát là gọi chương trình con ngay
    làm thêm 1 biến điều kiên, khi ấn công tắc bất kì thì biến điều kiện thay đổi, chuơng trình main sẽ kiểm tra biến điều kiện để hiện thị ở chế độ nào hay ko hiển thị
    Website chính thức đổi địa chỉ website thành
    Mời các bạn ghé thăm !!!

    Comment


    • #3
      cái này là đề bài tập của Thầy Hùng ở DHCNHN phải không

      Comment


      • #4
        Nguyên văn bởi mast090 Xem bài viết
        lắp start, stop, mode vào chân nào chả được, nếu chưa quen thì có thể dụng ngắt ngoài, đảm bảo kích phát là gọi chương trình con ngay
        làm thêm 1 biến điều kiên, khi ấn công tắc bất kì thì biến điều kiện thay đổi, chuơng trình main sẽ kiểm tra biến điều kiện để hiện thị ở chế độ nào hay ko hiển thị
        Bác có thể hướng dẫn cho em kĩ hơn 1 chút đc ko, em chưa hiểu


        Nguyên văn bởi haprohaui Xem bài viết
        cái này là đề bài tập của Thầy Hùng ở DHCNHN phải không
        đoàn chuẩn bác cũng CN à

        Comment


        • #5
          Chính xác đây là đề của thầy Hùng ở Haui.

          Comment


          • #6
            đề này ai làm vậy chứ
            Chạy ở nhiều chế độ chứ có phải bật tắt led đơn đâu
            Cái này thầy chỉ yêu cầu làm là phần xử lý phím đó
            cái này hay đấy

            Comment


            • #7
              thì mình xin hướng dẫn phần code xử lý 3 nút STOP, START, MODE là chủ yếu + mạch, còn các kiểu nháy khác nhau có rồi, trên kia là ví dụ 2 kiểu thôi

              Bác nào biết giúp em với

              Comment


              • #8
                Nguyên văn bởi mrmiu Xem bài viết
                thì mình xin hướng dẫn phần code xử lý 3 nút STOP, START, MODE là chủ yếu + mạch, còn các kiểu nháy khác nhau có rồi, trên kia là ví dụ 2 kiểu thôi

                Bác nào biết giúp em với
                có 2 điều kiện để thực hiện lệnh nhãy, thứ 1 nhãy khi port nào đó từ 0 lên 1 đó là lệnh JB, thứ 2 nhãy khi port nào đó từ 1 xuống 0 đó là lệnh JNB.
                VD: JB p1.1, sang_dan
                JB p1.2,tat_dan
                có nghĩa khi port 1.1 từ trạng thái 0 lên 1 thì nó lập tức nhãy đến nhãn sang_dan, nếu ko có sự thay đổi mức logic thì nó tiếp tục thực hiện lệnh dưới nó.

                Comment


                • #9
                  Nguyên văn bởi nguyentot90 Xem bài viết
                  có 2 điều kiện để thực hiện lệnh nhãy, thứ 1 nhãy khi port nào đó từ 0 lên 1 đó là lệnh JB, thứ 2 nhãy khi port nào đó từ 1 xuống 0 đó là lệnh JNB.
                  VD: JB p1.1, sang_dan
                  JB p1.2,tat_dan
                  có nghĩa khi port 1.1 từ trạng thái 0 lên 1 thì nó lập tức nhãy đến nhãn sang_dan, nếu ko có sự thay đổi mức logic thì nó tiếp tục thực hiện lệnh dưới nó.
                  lệnh nhảy đó là cho nút MODE? vậy còn START, STOP. Và 3 nút này nối vào port nào vậy bác?
                  nói chung là hơi hiểu tí xíu nhưng vẫn chưa nghĩ ra viết code thế nào

                  Comment


                  • #10
                    nối 3 nút đó vào đâu cũng dc nhưng phải biết mã hex của mã đó, dùng 1 thanh ghi lưu lại dữ liệu khi có biến đổi từ port đó, dùng lệnh nhảy có điều kiện để kt khi có dk xảy ra
                    ở đây mình dùng lệnh: CJNE Rn (thanh ghi lưu lại dữ liêu khi có nút nhấn),# (mã hex bị thay đổi khi có nút nhấn), nhãn ( nhảy đến khi có nút bấm)

                    Comment


                    • #11
                      Nguyên văn bởi mrmiu Xem bài viết
                      lệnh nhảy đó là cho nút MODE? vậy còn START, STOP. Và 3 nút này nối vào port nào vậy bác?
                      nói chung là hơi hiểu tí xíu nhưng vẫn chưa nghĩ ra viết code thế nào
                      nối vào 3 chân nào đó còn dư, có thể dùng 2 ngắt ngoài. Ngắt ngoài 0 để đổi mode, ngắt ngoài 1 làm nút stop, vì nút start phụ thuộc nút stop nên chỉ cần 1 chân I/O bình thường làm nút start

                      Comment


                      • #12
                        Nguyên văn bởi mrmiu Xem bài viết
                        lệnh nhảy đó là cho nút MODE? vậy còn START, STOP. Và 3 nút này nối vào port nào vậy bác?
                        nói chung là hơi hiểu tí xíu nhưng vẫn chưa nghĩ ra viết code thế nào
                        thì cũng tương tự..Ngắt ngoài như mấy Anh, chị nói mình ko rành, vì chưa tìm hiểu. Còn cách của mình lệnh JB và JNB giống như là lệnh "dò" vậy. Các nút còn lại cũng lập trình tương tự. Ví dụ như bạn muốn p1.1 là MODE, p1.2 là Start, p1.3 là Stop. thì JB p1.1,MODE
                        JB p1.2,start
                        JB p1.3,Stop
                        Vi điềun khiển sẽ "dò" từ trên xuống khi 1 trong 3 port đó có port nào lên 1 nó sẽ nhãy đến nhãn và thực hiện nộ dung trong nhãn đó.

                        Comment


                        • #13
                          vẫn mơ hồ quá à, các bác có thể giúp em vài dòng code luôn đc ko

                          Comment


                          • #14
                            Nguyên văn bởi mrmiu Xem bài viết
                            vẫn mơ hồ quá à, các bác có thể giúp em vài dòng code luôn đc ko
                            rất đơn giản, vì chú ko chịu động não thôi, xử lý phím bấm này trong ví dụ lúc học thế nào mà ko có. Nhìn code mà chú up lên là biết bảo đảm chú chưa dịch code đó ra file hex rồi, lỗi cơ bản dịch làm sao ra.
                            Giải thích thêm, về bản chất nếu ko dùng ngắt thì ko đơn thuần chỉ là JNB Px.x,CAIGIDO đâu, mà phải có thêm biến nhớ, hoặc ko thêm biến nhớ thì code sẽ dài gấp đôi.
                            Last edited by chung1608; 22-04-2012, 22:06.

                            Comment


                            • #15
                              ORG 00H
                              MOV P1,#00H ;cho p1 bằng 0 hết để khi nó lên mức 1 thì sẽ nhãy bởi lệnh JB
                              MAIN:
                              JB p1.1,MODE ;khi p1.1 bị tác động mức 1 từ bên ngoài ví dụ như nút ấn thì lệnh JB sẽ nhãy tới nhãn MODE
                              JB p1.2,START ; tương tự p1.1
                              JB p1.3,STOP ; tương tự p1.1
                              JMP MAIN ;nhãy về MAIN để dò lại từ đầu
                              MODE: ; nhãn MODE
                              MOV P2,#00H ; nội dung trong MODE ví dụ tác động mức 0 led ở p2 sẽ sáng
                              SJMP MAIN ; nhãy về MAIN để dò lại từ đầu
                              START: ; tương tự nhãn MODE
                              SJMP MAIN
                              STOP:
                              MOV P2,#0FFH
                              MOV P3,#0FFH
                              SJMP MAIN
                              RET
                              END

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X