Thông báo

Collapse
No announcement yet.

Nhờ mọi người giải thích code asm cho 89c51

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

  • Nhờ mọi người giải thích code asm cho 89c51

    Mình đang làm đồ án quét led 7 đoạn hiển thị từ 00 đến 9999 với yêu cầu cứ 1s là tăng một giá trị, mình tìm được code này nhưng chưa hiểu code. Nhờ mọi người giúp

    ORG 00
    MAIN:
    MOV R1,#0
    LAPLAI:
    MOV R0,#0
    LAP:
    CALL HIENTHI
    INC R0
    CJNE R0,#100,LAP
    INC R1
    CJNE R1,#100,LAPLAi
    JMP MAIN
    HIENTHI:
    MOV R7,#100
    QUET:
    MOV P3,#00H
    MOV A,R0
    MOV B,#10
    DIV AB
    MOV DPTR,#MALED
    MOVC A,@A+DPTR
    MOV P2,A
    CALL DELAY
    SETB P3.1
    CALL DELAY
    CLR P3.1
    MOV A,B
    MOVC A,@A+DPTR
    MOV P2,A
    SETB P3.0
    CALL DELAY
    CLR P3.0
    CALL DELAY
    MOV A,R1
    MOV B,#10
    DIV AB
    MOV DPTR,#MALED
    MOVC A,@A+DPTR
    MOV P2,A
    CALL DELAY
    SETB P3.3
    CALL DELAY
    CLR P3.3
    MOV A,B
    MOVC A,@A+DPTR
    MOV P2,A
    SETB P3.2
    CALL DELAY
    CLR P3.2
    CALL DELAY
    RET
    MALEDB 11000000B,11111001B,10100100B,10110000B,10011001B, 10010010B,10000010B,11111000B,10000000B,10010000B
    DELAY:
    MOV R3,#100
    LAP1:
    MOV R2,#12
    LAPA:
    NOP
    NOP
    NOP
    NOP
    DJNZ R2,LAPA
    DJNZ R3,LAP1
    RET
    END


    Đây là file mô phỏng :

    http://www.dientuvietnam.net/forums/...51-00-9999.zip

  • #2
    ai đó giải thích giúp mình với

    Comment


    • #3
      các cao thủ đâu hết rồi vào giúp bạn tề

      Comment


      • #4
        mình chỉ mới đọc code online chưa tải về máy nhưng thấy bài này dùng 2 delay >mình đoán chắc dùng transistor quét,khi mô phỏng mình nghĩ chắc là led chớp,cpu máy tính không load được.

        Comment


        • #5
          mình sửa code lại một chutchaswsc là mạnh mô phỏng cũng khác bạn tham khảo nha;
          $mod51
          ORG 00
          MAIN:mov p3,#0ffh
          MOV R1,#0
          LAPLAI:
          MOV R0,#0
          LAP:
          CALL HIENTHI
          INC R0
          CJNE R0,#100,LAP
          INC R1
          CJNE R1,#100,LAPLAi
          JMP MAIN
          HIENTHI:
          MOV R7,#100
          QUET:
          ;MOV P3,#00H
          MOV A,R0
          MOV B,#10
          DIV AB
          MOV DPTR,#MALED
          MOVC A,@A+DPTR
          MOV P2,A ;hang chuc
          CALL DELAY
          SETB P3.1
          ;CALL DELAY
          CLR P3.1
          MOV A,B ;hang don vi
          MOVC A,@A+DPTR
          MOV P2,A
          SETB P3.0
          ;CALL DELAY
          CLR P3.0
          ;CALL DELAY
          MOV A,R1
          MOV B,#10
          DIV AB
          MOV DPTR,#MALED
          MOVC A,@A+DPTR
          MOV P2,A ;hang nghin
          ;CALL DELAY
          SETB P3.3
          ;CALL DELAY
          CLR P3.3
          MOV A,B
          MOVC A,@A+DPTR
          MOV P2,A
          SETB P3.2 ;hang tram
          ;CALL DELAY
          CLR P3.2
          CALL DELAY
          RET
          MALED: DB 11000000B,11111001B,10100100B,10110000B,10011001B, 10010010B,10000010B,11111000B,10000000B,10010000B
          DELAY:
          MOV R3,#100
          LAP1:
          MOV R2,#12
          LAPA:
          NOP
          NOP
          NOP
          NOP
          DJNZ R2,LAPA
          DJNZ R3,LAP1
          RET
          END
          bạn chỉnh lại thời gian trễ hợp lý nhé đây là mạch:mophong.rar

          Comment


          • #6
            bạn nào giải thích các lệnh với!

            Comment


            • #7
              ORG 00 băt đàu tại ngăn nhớ 0000h
              MAIN:mov p3,#0ffh chép vào p3 giá trị 0ffh (chuyển qua nhị phan cho dể hỉu) main: khi tới cái( JMP MAIN) thì nhảy về đây
              MOV R1,#0 chép 0 vào thanh gi r1
              LAPLAI: lệnh nhảy giống main
              MOV R0,#0 chép
              LAP:
              CALL HIENTHI ;call là lệnh gọi chương trình con tên chương trình con là hienthi
              INC R0 mình không nhớ
              CJNE R0,#100,LAP nhảy
              INC R1
              CJNE R1,#100,LAPLAi nhảy
              JMP MAIN
              HIENTHI: chương trình con
              MOV R7,#100
              QUET:
              ;MOV P3,#00H
              MOV A,R0
              MOV B,#10
              DIV AB
              MOV DPTR,#MALED
              MOVC A,@A+DPTR
              MOV P2,A ;hang chuc
              CALL DELAY
              SETB P3.1
              ;CALL DELAY
              CLR P3.1
              MOV A,B ;hang don vi
              MOVC A,@A+DPTR
              MOV P2,A
              SETB P3.0
              ;CALL DELAY
              CLR P3.0
              ;CALL DELAY
              MOV A,R1
              MOV B,#10
              DIV AB
              MOV DPTR,#MALED
              MOVC A,@A+DPTR
              MOV P2,A ;hang nghin
              ;CALL DELAY
              SETB P3.3
              ;CALL DELAY
              CLR P3.3
              MOV A,B
              MOVC A,@A+DPTR
              MOV P2,A
              SETB P3.2 ;hang tram
              ;CALL DELAY
              CLR P3.2
              CALL DELAY
              RET
              MALED: DB 11000000B,11111001B,10100100B,10110000B,10011001B, 10010010B,10000010B,11111000B,10000000B,10010000B
              DELAY: chương trình con tạo trễ
              MOV R3,#100
              LAP1:
              MOV R2,#12
              LAPA:
              NOP lênh nay là không làm gì cả nhưng tiêu tốn 1 chu kỳ máy là tốn 1us
              NOP
              NOP
              NOP
              DJNZ R2,LAPA
              DJNZ R3,LAP1
              RET kết thúc chương trình con
              end kết thúc toàn bộ
              em mới tự học vdk 8 ngày thôi kô có người dậy nên có gì sai các bác bổ xung nhé các bác có tài liệu hay về lập trình ngôn ngữ c thì cho em luôn thank mấy bác
              kiếm của kiếm khách , bút của văn nhân , chân của vũ giả , giọng ca của ca nữ , đấu chí của anh hùng , mỏ hàn của thợ điện . đều giống nhau ở 1 điểm là:
              đến chết mới buông tay

              Comment


              • #8
                Nguyên văn bởi huukhanh Xem bài viết
                ORG 00 băt đàu tại ngăn nhớ 0000h
                MAIN:mov p3,#0ffh chép vào p3 giá trị 0ffh (chuyển qua nhị phan cho dể hỉu) main: khi tới cái( JMP MAIN) thì nhảy về đây
                MOV R1,#0 chép 0 vào thanh gi r1
                LAPLAI: lệnh nhảy giống main
                MOV R0,#0 chép
                LAP:
                CALL HIENTHI ;call là lệnh gọi chương trình con tên chương trình con là hienthi
                INC R0 mình không nhớ
                CJNE R0,#100,LAP nhảy
                INC R1
                CJNE R1,#100,LAPLAi nhảy
                JMP MAIN
                HIENTHI: chương trình con
                MOV R7,#100
                QUET:
                ;MOV P3,#00H
                MOV A,R0
                MOV B,#10
                DIV AB
                MOV DPTR,#MALED
                MOVC A,@A+DPTR
                MOV P2,A ;hang chuc
                CALL DELAY
                SETB P3.1
                ;CALL DELAY
                CLR P3.1
                MOV A,B ;hang don vi
                MOVC A,@A+DPTR
                MOV P2,A
                SETB P3.0
                ;CALL DELAY
                CLR P3.0
                ;CALL DELAY
                MOV A,R1
                MOV B,#10
                DIV AB
                MOV DPTR,#MALED
                MOVC A,@A+DPTR
                MOV P2,A ;hang nghin
                ;CALL DELAY
                SETB P3.3
                ;CALL DELAY
                CLR P3.3
                MOV A,B
                MOVC A,@A+DPTR
                MOV P2,A
                SETB P3.2 ;hang tram
                ;CALL DELAY
                CLR P3.2
                CALL DELAY
                RET
                MALED: DB 11000000B,11111001B,10100100B,10110000B,10011001B, 10010010B,10000010B,11111000B,10000000B,10010000B
                DELAY: chương trình con tạo trễ
                MOV R3,#100
                LAP1:
                MOV R2,#12
                LAPA:
                NOP lênh nay là không làm gì cả nhưng tiêu tốn 1 chu kỳ máy là tốn 1us
                NOP
                NOP
                NOP
                DJNZ R2,LAPA
                DJNZ R3,LAP1
                RET kết thúc chương trình con
                end kết thúc toàn bộ
                em mới tự học vdk 8 ngày thôi kô có người dậy nên có gì sai các bác bổ xung nhé các bác có tài liệu hay về lập trình ngôn ngữ c thì cho em luôn thank mấy bác
                bạn có biết NOP, DJNZ, RET là viết tắt của chữ gì không

                Comment


                • #9
                  NOP em đoán là NOn Program , DJNZ là Decrement Jump Not Zero , RET :return ..... M.n lên tim cuốn VXL 8051 , Tập lệnh 8051 , các bài học cơ bản vxl 8051 .... mà đọc , e đọc hết mấy cuốn đó tầm 3 ngày cũng hiểu đươc chút ít ...

                  e k hiểu lần lặp trên để lzi nữa ....

                  Comment


                  • #10
                    bạn làm mạch thật quét sẽ thấy, protues không làm được đâu.

                    Comment


                    • #11
                      Muốn mô phong protues thì phải chỉnh lại các thời gian delay, mấy cái giá trị này thường khác xa so với thực tế. Việc mô phỏng không phán ánh hoàn toàn thực tế nó chỉ là công cụ trợ giúp trong việc thiết kế và gỡ lỗi chương trình, không có nghĩa là nó có thể thay thế cho phần cứng. Khi làm thực tế cón có nhiều vấn đề khác nữa như hàn ko tiếp xúc, chạm mạch, ... .

                      Comment


                      • #12
                        ban xem lai thu

                        ORG 00 băt đàu tại ngăn nhớ 0000h
                        MAIN:mov p3,#0ffh chép vào p3 giá trị 0ffh (chuyển qua nhị phan cho dể hỉu) main: khi tới cái( JMP MAIN) thì nhảy về đây
                        MOV R1,#0 chép 0 vào thanh ghi r1
                        LAPLAI: cai nay la ten ( khi cua lenh nao do thoa dk thi no se quay toi day)
                        MOV R0,#0 gan thanh ghi R0 =0000h
                        LAP:cai nay la ten ( khi cua lenh nao do thoa dk thi no se quay toi day)
                        CALL HIENTHI ;call là lệnh gọi chương trình con tên chương trình con là hienthi
                        INC R0 cau lenh nay tang R0 lenh 1 ( vd truoc do minh co R0=0 sau cau nay R0=1)
                        CJNE R0,#100,LAP so sanh R0 voi so 100 neu chua bang thi quay len LAP ( chu yeu la de tang R0 do ma) con r0 ma = 100 di tiep
                        INC R1 cau lenh nay tang R1 lenh 1 ( vd truoc do minh co R1=0 sau cau nay R1=1)
                        CJNE R1,#100,LAPLAi tuong tu cau tren
                        JMP MAIN ( quay lai chuong trinh chinh)
                        HIENTHI: chương trình con
                        MOV R7,#100
                        QUET:
                        ;MOV P3,#00H
                        MOV A,R0
                        MOV B,#10
                        DIV AB
                        MOV DPTR,#MALED
                        MOVC A,@A+DPTR
                        MOV P2,A ;hang chuc
                        CALL DELAY
                        SETB P3.1
                        ;CALL DELAY
                        CLR P3.1
                        MOV A,B ;hang don vi
                        MOVC A,@A+DPTR
                        MOV P2,A
                        SETB P3.0
                        ;CALL DELAY
                        CLR P3.0
                        ;CALL DELAY
                        MOV A,R1
                        MOV B,#10
                        DIV AB
                        MOV DPTR,#MALED
                        MOVC A,@A+DPTR
                        MOV P2,A ;hang nghin
                        ;CALL DELAY
                        SETB P3.3
                        ;CALL DELAY
                        CLR P3.3
                        MOV A,B
                        MOVC A,@A+DPTR
                        MOV P2,A
                        SETB P3.2 ;hang tram
                        ;CALL DELAY
                        CLR P3.2
                        CALL DELAY
                        RET
                        MALED: DB 11000000B,11111001B,10100100B,10110000B,10011001B, 10010010B,10000010B,11111000B,10000000B,10010000B
                        DELAY: chương trình con tạo trễ
                        MOV R3,#100
                        LAP1:
                        MOV R2,#12
                        LAPA:
                        NOP lênh nay là không làm gì cả nhưng tiêu tốn 1 chu kỳ máy là tốn 1us
                        NOP
                        NOP
                        NOP
                        DJNZ R2,LAPA
                        DJNZ R3,LAP1
                        RET kết thúc chương trình con
                        end kết thúc toàn bộ
                        minh cung bo lau lam roi moi coi lai thoi nhung minh nho trong sach VDK cua thay HO TRUNG MY gan phia sau sach co ghi rat cu the tung cau lenh va gia thich nua hay tren mang cung co truoc kia ban minh co cho nhung mau roi

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X