Thông báo

Collapse
No announcement yet.

Hướng dẫn mô phỏng 8051 = Multisim (MultiMCU)

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

  • Hướng dẫn mô phỏng 8051 = Multisim (MultiMCU)

    MultiMCU là một bộ phần mềm Add-on trong Multisim (của hang Electronics WorkBench). Các bộ phần mềm của hãng này ít được nhiều người biết đến cũng như sử dụng. Tuy nhiên vào một vào năm gần đây hãng đang dần chiếm lại được thị trường trong khoản thiết kế, mô phỏng... điện tử, tự động hóa.
    ------------------------------
    1. Hướng dẫn sơ sơ nhé:
    • Bạn cài đặt Multisim sau đó cài MultiMCU. Nếu bạn nào cần Key thì liên hệ với mình qua Email: hieutq@gmail.com.
    • Cài MultiMCU sẽ add-on vào Multisim con chip 80xx, và PIC... (chưa có AVR). Bạn có thể lập trình trực tiếp trên phần mềm = này và chạy mô phỏng. Không phải dịch sang file .hex và chỉnh sửa trực tiếp luôn
    • Việc mô phỏng dòng, các dạng sóng.... thì cái phần mềm này mình thấy rất very Good. Các bạn thủ nhé.


    2. Phần mềm.

    3. Begin

  • #2
    Bài thứ nhất: Điều khiển LED thanh, có sử dụng ngắt ngoài.

    Bài 1: Điều khiển LED thanh, có sử dụng ngắt ngoài.
    - Khởi động chương trình, Led thanh quét từ bên trái qua phải.
    - Khi kích hoạt ngắt ngoài (theo cạnh) bằng phím A, Led chuyển sang chế độ quét từ phải qua trái.
    -----------------------------------------------------

    Sơ đồ thiết kế và mô phỏng trên Multisim (MultiMCU)




    Code:
    org 00h
    LJMP     main
    org 0003h
    LJMP     ISR_0
    org  00030h
    main:
    SETB     EA
    SETB     EX0
    SETB     IT0
    MOV      P2,#0FFh
    MOV A, #0FEh
    here: 
    MOV P2,A
    NOP
    RL A
    SJMP     here
    ISR_0:
    MOV R0,#100
    more: DJNZ R0,skip
    RETI
    skip:
    RR A 
    MOV P2,A
    NOP
    SJMP   more
    END
    --------------------------
    Nguồn: http://www.dieukhientudong.com/diend...=ST&f=7&t=931&
    --------------------------

    Comment


    • #3
      Bài 2: Quét Led

      Bài 2: Quét LED
      - LED1 hiển thị số 1, Led 2 hiển thị số 2, Led 3 : số 3, Led 4 : số 4.
      - Các Led sáng lần lượt 1,2,3,4
      - Sư dụng ngắt
      ----------------------------------------
      Sơ đồ thiết kế và mô phỏng trên Multisim (MultiMCU)


      Code:
      ORG 00H
           LJMP MAIN
         ORG 003H
           Lcall ngat1 
           reti 
           ORG 013H
           Lcall ngat2 
           reti 
      MAIN: 
       LOOP:    MOV IE,#85H
           LCALL QUETLED
         SJMP LOOP
      QUETLED:
           mov p0,#00
           MOV P2,#1H
           SETB P0.3
         ; ACALL DELAY
           CLR P0.3
           MOV P2,#2H
           SETB P0.2
          ;ACALL DELAY
           CLR P0.2
           MOV P2,#3H
           SETB P0.1
          ;ACALL DELAY
           CLR P0.1
           MOV P2,#4H
           SETB P0.0
          ;ACALL DELAY
        RET
      ngat1:
         MOV P0,#00
         mov p2,#4h
         SETB P0.3
         ACALL DELAY
         CLR P0.3
         mov p2,#3h
         SETB P0.2
         ACALL DELAY
         CLR P0.2
         mov p2,#2h
         SETB P0.1
         ACALL DELAY
         CLR P0.1
         mov p2,#1h
         SETB P0.0
         ACALL DELAY
             RET 
         ngat2: 
         mov p0,#00
         mov p2,#0
         mov p0,#5
         call delay
         mov p0,#0ah
         call delay
            ret
             DELAY:
              
             MOV     R0,#03H       
      loop2:  DJNZ    R0,LOOP2              
             RET                           
      END
      --------------------------
      Nguồn: http://www.dieukhientudong.com/diend...=ST&f=7&t=931&
      --------------------------

      Comment


      • #4
        Bài 3: Điều khiển đèn giao thông (2 hướng A và B )

        Thêm 1 bài nũa nhé

        ------------------------------ Bài 3: ------------------------------
        Điều khiển đèn giao thông (2 hướng A và
        Mục đích yêu cầu:
        - Đèn đỏ A sáng khi và chỉ khi đèn xanh và đèn vàng B sáng. Đèn đỏ B sáng khi và chỉ khi đèn xanh và đèn vàng A sáng.
        - Nút ưu tiên gắn với một ngắt ngoài (điều khiển bằng phím A)
        - Khi kích hoạt ngắt (nút ưu tiên được ấn), đèn đỏ ở 2 hướng A và B đều sáng (cùng lúc) cho đến khi nút ưu tiên được ấn lần nữa, đèn giao thông trở lại trạng thái làm việc bình thường
        ----------------------------------------------------------
        Sơ đồ thiết kế và mô phỏng trên Multisim (MultiMCU)





        Code:
        $MOD52
        ;Khai bao nhan va cac bien
         XA equ  P1.0
         DoA equ  P1.1
         VA equ  P1.2
         XB equ  P1.3
         DoB equ  P1.4
         VB equ  P1.5
         SELECT BIT p3.0 
                                                          ;=1 thi hien thi thoi gian dem cot A
            ;=0 thi hien thi thoi gian dem cot B
         UT  BIT P3.1
        
         LJMP INIT     ;Nhay toi chuong trinh INIT
               ORG     0013H       ;Dia chi ngat EXT1 
               LJMP    EXT1        ;go to EXT1 Interrupt handler
               LJMP MAIN  ;Quay tro lai vong lap chinh
               
        INIT:
         MOV     SP,#20h    ;Di chuyen SP toi phan xa cua thanh ghi 
         LCALL ENABLE_INTS;Bat dau ngat khi thay thich hop
        ;/////////////////////////////////////////////////////////////////////////////  
         ORG  30H    ; Dia chi bat dau chuong trinh chinh
        MAIN: 
         MOV  P2,#0
         CALL CLEAR_ALL
         SETB DoB
         SETB XA
         MOV  R0,#7  
                                ; Thoi gian cho truoc khi den bat dau thay doi trang thai
         MOV  R1,#10; thoi gian hien thi cua led 7 doan
         SETB SELECT 
        LOOP1: 
         LCALL HIENTHI
         LCALL ONESEC
         DJNZ R0,LOOP1
        ;/////////////////////////////////////////////////////////////////////////// 
         CLR  XA
         SETB VA
         MOV  R0,#3  ;THOI GIAN HIEN THI DEN VANG LA 5s
        LOOP2: 
         CALL HIENTHI 
         CALL ONESEC  
                                  ; Doi 1s de chuyen trang thai tu den vang sang den do
         DJNZ R0,LOOP2
        ;////////////////////////////////////////////////////////////////////
         CALL CLEAR_ALL
         SETB DoA
         SETB XB
         MOV  R0,#7  
                                ; Thoi gian cho truoc khi den bat dau thay doi trang thai
         MOV  R1,#10
         CLR  SELECT
        LOOP3:
         CALL HIENTHI
         LCALL ONESEC
         DJNZ R0,LOOP3
        ;/////////////////////////////////////////////////////
         CLR     XB
         SETB DoA
         SETB VB
         MOV  R0,#3
        LOOP4:
         CALL HIENTHI
         LCALL ONESEC ;Doi 1s de chuyen trang thai tu den vang sang den do
         DJNZ R0,LOOP4
         JMP  MAIN    
         
        ;EXT1 Phuc vu ngat ngoai
        EXT1: 
         CPL UT ; 
         RETI
        
        ;Cac thu tuc con 
        CLR_LCD:
         MOV  P0, #00h 
         RET
         
        ENABLE_INTS:
         SETB    IT1        ;Co ngat ngoai 1(kich canh hoac muc). 
               SETB    EX1                 ;Cho phep ngat ngoai 1
            MOV  TMOD,#01H 
                                        ; SET 16 BIT COUNTER.Bo dinh thoi 1 che do 1
               SETB    EA         ;Enable interrupt global
         RET
        
        ; CLEARS ALL THE LIGHTS
        CLEAR_ALL:
         MOV  P1,#00H ; Xoa tat ca cac den
         CLR  ACC.0 ; Xoa toan bo co ngat
         MOV  P0,0
         RET
        
        ;Bo dem trong 1s
        ONESEC:
         MOV  R5,#12H  
        ; COUNTER USED TO LOOP 20 TIMES, WHICH IS EQUIVALENT TO 1 SEC
        SEC_LOOP:
         MOV  TH0,#00H; Xoa TIMER 0
         MOV  TL0,#00H
         CLR  TF0  ; Xoa bit tran
         SETB TR0  ; Khoi dong  TIMER 0
         JNB  TF0,$ ; WAIT FOR OVERFLOW FLAG
         CLR  TR0  ; Dung TIMER 0
         JB  UT,HUONG_UT 
                                      ; Nut danh cho nguoi di bo bi an,thoat khoi vong lap
         DJNZ R5,SEC_LOOP
         RET
        HUONG_UT:
         MOV  P0,#0
         MOV  p1,#1
         MOV  P2,#1
         LCALL ClEAR_ALL
        LOOP_UT:
           SETB DoB
         SETB DoA
         JB  UT,LOOP_UT 
                                      ; Nut danh cho nguoi di bo bi an,thoat khoi vong lap
         LCALL CLEAR_ALL
         LJMP MAIN
         RET
        HIENTHI:
         MOV  A,R1 ;NAP SO DEM CHO LED 7 DOAN
         MOV     B,#0AH
         DIV  AB
         SWAP A
         ADD  A,B
         JB  SELECT,COTB  
        COTA: 
         MOV  P2,A
         DEC  R1;GIAM SO DEM CUA LED
         MOV  A,#0
         RET
        COTB:  
         MOV  P0,A
         DEC  R1;GIAM SO DEM CUA LED
         MOV  A,#0
         RET
        ;/////////////////////////////////////// 
        HALT: JMP  $
        
        END

        Comment


        • #5
          Cái này thật là tuyệt vời. Mình đã cài bản Multisim 9. Bạn có thể cho biết MultiMCU download ở đâu được không?
          “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

          Comment


          • #6
            Đối với các bản 8 trở về trước, nếu muốn có MCU thì cần phải cài bộ riêng của nó. Nhưng ở bản 9 mình phát hiện ra là không cần cài bản riêng mà nó đính sẵn trong Multisim rồi. Bạn cài các ver Education, Professional, Power Pro thì sẽ không có đâu, mà phải cài Special nó sẽ có sẵn ở trong luôn. Lúc đầu mình cũng như bạn, cài bản Pro cứ nghĩ là đã đỉnh rồi, cứ đi tìm tiếp cái MCU trên NET để cài. Nhưng về sau gơ Multi đi cài lại và chọn Special thì thấy nó đã có MCU luôn ở trong rồi. Thật hay...........

            Comment


            • #7
              Nguyên văn bởi hieutq
              Đối với các bản 8 trở về trước, nếu muốn có MCU thì cần phải cài bộ riêng của nó. Nhưng ở bản 9 mình phát hiện ra là không cần cài bản riêng mà nó đính sẵn trong Multisim rồi. Bạn cài các ver Education, Professional, Power Pro thì sẽ không có đâu, mà phải cài Special nó sẽ có sẵn ở trong luôn. Lúc đầu mình cũng như bạn, cài bản Pro cứ nghĩ là đã đỉnh rồi, cứ đi tìm tiếp cái MCU trên NET để cài. Nhưng về sau gơ Multi đi cài lại và chọn Special thì thấy nó đã có MCU luôn ở trong rồi. Thật hay...........
              Một khám phá vĩ đại như Kha Bố Luân tìm ra Châu Mỹ. Em thấy bác khăn gói bôn ba trên các diễn đàn nước ngoài đi tìm chân lý về soi sáng quê nhà. Em thích Multisim ở chỗ nó thao tác nó thân thiện như những ứng dụng Office bình thường chứ không chéo cẳng ngỗng như Proteus. Và khi vẽ xong mạch nguyên lý ra bấm một phát để chuyển qua làm mạch in liền. Bữa nào em xin được mời bác vài chai. Nhân tiện cho em hỏi là bác đã tìm ra thư viện cho các MCU mới như PIC 16F628A, 16F877A chưa?
              “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

              Comment


              • #8
                Mấy con PIC trên rất thông dụng mà. Nếu mình không nhần thì khi cài MCU ra là nó đã có rồi. Mấy con Atmel hỗ trợ còn ít, còn Pic thì khá đầy đủ

                Comment


                • #9
                  Trong phần MultiMCU của máy mình chỉ hiện lên có 2 con PIC16F84 và PIC16F84A thôi
                  “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

                  Comment


                  • #10
                    xin huong dan:mong ban huogndan cho mihn lap trinh dem toc do dong co 1 chieu va hien thi ra 3 led 7 thank .minh moi hoc nen viet mai ma khogn duoc mong duoc giup do thank

                    Comment


                    • #11
                      Mấy cái multisim (MCU) với Proteus này tôi thấy bàn bạc từ lâu lắm rồi mà ( ở trên diễn đàn điện tử ) thì phải .
                      Vì hiếm khi dùng mấy cái mô phỏng ( trừ mô phỏng của CPLD - FPGA thì tôi vẫn dùng) nên cũng không rành mấy cái mô phỏng MCU này lắm.

                      tôi nghĩ Nó là công cụ rất hữu ích cho các bạn mới vào nghề.
                      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


                      • #12
                        8051

                        tui chưa hiểu rõ lắm về proteus? giữa proteus và multisim thì cái nào mô phỏng mạch điện tử nói chung và mạch 8051 nói riêng mạnh hơn? trong 2 phần mềm này cái nào dễ sử dụng và thông dụng hơn? ko biết mình có thể mua các phần mềm này ở đâu của hà nội? rất mong sự chỉ giáo của cư dân điện tử, cảm ơn nhiều!
                        Last edited by lucky luke; 08-03-2008, 16:30.

                        Comment


                        • #13
                          Nguyên văn bởi lucky luke Xem bài viết
                          tui chưa hiểu rõ lắm về proteus? giữa proteus và multisim thì cái nào mô phỏng mạch điện tử nói chung và mạch 8051 nói riêng mạnh hơn? trong 2 phần mềm này cái nào dễ sử dụng và thông dụng hơn? ko biết mình có thể mua các phần mềm này ở đâu của hà nội? rất mong sự chỉ giáo của cư dân điện tử, cảm ơn nhiều!
                          protues là 1 chương trình mô phỏng mạch điện, protues thiên về mô phỏng các dạng mạch số logic hơn: 8051,pic,avr..., multisim lại mô phỏng về mạch tương tự, công suất đạt hơn: mạch chuyển đổi xoay chiều sang 1 chiều, băm áp, xung,...

                          Comment

                          Về tác giả

                          Collapse

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

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

                          Collapse

                          Đang tải...
                          X