Thông báo

Collapse
No announcement yet.

[ HELP ] Giúp giùm đoạn code asm !!!

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

  • [ HELP ] Giúp giùm đoạn code asm !!!

    AI giỏi giải thích giùm mình đoạn code asm này với.
    C_A BIT P0.5
    D_A BIT P0.6
    EN_A BIT P0.7
    FW BIT P3.5
    STOP BIT P3.4
    REV BIT P3.3
    START BIT P3.2
    DATA1 EQU P1
    DEM EQU R1
    CHIEUQUAY EQU R5
    PWM EQU 30H
    TRANGTHAI EQU R6
    ORG 0000H
    LJMP SETUP
    ORG 000BH
    LJMP NGATT0
    ORG 001BH
    LJMP NGATT1
    ORG 0030H
    SETUP:
    SETB EA
    SETB ET0
    SETB ET1
    MOV DATA1,#255
    SETB START
    MOV TMOD,#11H
    MOV TH0,#HIGH(-1000)
    MOV TL0,#LOW(-1000)
    MOV TH1,#HIGH(-5000)
    MOV TL1,#LOW(-5000)
    SETB TR0
    SETB TR1
    MOV PWM,#1
    MOV DEM,#0
    MAIN:
    JB FW,KTREV
    JNB FW,$
    MOV TRANGTHAI,#1
    JMP MAIN
    KTREV:
    JB REV,KTSTOP
    JNB REV,$
    MOV TRANGTHAI,#2
    JMP MAIN
    KTSTOP:
    JB STOP,MAIN
    JNB STOP,$
    LCALL DUNGCHAY
    MOV TRANGTHAI,#3
    JMP MAIN
    NGATT1:
    CLR TR1
    MOV TH1,#HIGH(-5000)
    MOV TL1,#LOW(-5000)
    SETB TR1
    LCALL READ_AD
    RETI
    NGATT0:
    CLR TR0
    MOV TH0,#HIGH(-1000)
    MOV TL0,#LOW(-1000)
    SETB TR0
    PUSH ACC
    MOV A,PWM
    CJNE A,#0,DIEUXUNG
    JMP THOAT_T0
    DIEUXUNG:
    CJNE TRANGTHAI,#1,NGUOC
    INC DEM
    MOV A,DEM
    CJNE A,PWM,KTTIEP
    LCALL DUNGCHAY
    KTTIEP:
    CJNE DEM,#100,THOAT_T0
    LCALL CHAYTHUAN
    MOV DEM,#0
    LJMP THOAT_T0
    NGUOC:
    CJNE TRANGTHAI,#2,THOAT_T0
    INC DEM
    MOV A,DEM
    CJNE A,PWM,KTTIEP1
    LCALL DUNGCHAY
    KTTIEP1:
    CJNE DEM,#100,THOAT_T0
    MOV DEM,#0
    LCALL CHAYNGUOC
    THOAT_T0:
    POP ACC
    RETI
    READ_AD:
    CLR START
    LCALL DELAY100US
    SETB START
    MOV PWM,DATA1
    RET
    CHAYTHUAN:
    SETB EN_A
    CLR C_A
    SETB D_A
    RET
    CHAYNGUOC:
    SETB EN_A
    SETB C_A
    CLR D_A
    RET
    DUNGCHAY:
    SETB EN_A
    CLR C_A
    CLR D_A
    RET
    DELAY100US:
    MOV R7,#60
    DJNZ R7,$
    RET
    END

  • #2
    Nguyên văn bởi benoit Xem bài viết
    AI giỏi giải thích giùm mình đoạn code asm này với.
    C_A BIT P0.5
    D_A BIT P0.6
    EN_A BIT P0.7
    FW BIT P3.5
    STOP BIT P3.4
    REV BIT P3.3
    START BIT P3.2
    DATA1 EQU P1
    DEM EQU R1
    CHIEUQUAY EQU R5
    PWM EQU 30H
    TRANGTHAI EQU R6
    ORG 0000H
    LJMP SETUP
    ORG 000BH
    LJMP NGATT0
    ORG 001BH
    LJMP NGATT1
    ORG 0030H
    SETUP:
    SETB EA
    SETB ET0
    SETB ET1
    MOV DATA1,#255
    SETB START
    MOV TMOD,#11H
    MOV TH0,#HIGH(-1000)
    MOV TL0,#LOW(-1000)
    MOV TH1,#HIGH(-5000)
    MOV TL1,#LOW(-5000)
    SETB TR0
    SETB TR1
    MOV PWM,#1
    MOV DEM,#0
    MAIN:
    JB FW,KTREV
    JNB FW,$
    MOV TRANGTHAI,#1
    JMP MAIN
    KTREV:
    JB REV,KTSTOP
    JNB REV,$
    MOV TRANGTHAI,#2
    JMP MAIN
    KTSTOP:
    JB STOP,MAIN
    JNB STOP,$
    LCALL DUNGCHAY
    MOV TRANGTHAI,#3
    JMP MAIN
    NGATT1:
    CLR TR1
    MOV TH1,#HIGH(-5000)
    MOV TL1,#LOW(-5000)
    SETB TR1
    LCALL READ_AD
    RETI
    NGATT0:
    CLR TR0
    MOV TH0,#HIGH(-1000)
    MOV TL0,#LOW(-1000)
    SETB TR0
    PUSH ACC
    MOV A,PWM
    CJNE A,#0,DIEUXUNG
    JMP THOAT_T0
    DIEUXUNG:
    CJNE TRANGTHAI,#1,NGUOC
    INC DEM
    MOV A,DEM
    CJNE A,PWM,KTTIEP
    LCALL DUNGCHAY
    KTTIEP:
    CJNE DEM,#100,THOAT_T0
    LCALL CHAYTHUAN
    MOV DEM,#0
    LJMP THOAT_T0
    NGUOC:
    CJNE TRANGTHAI,#2,THOAT_T0
    INC DEM
    MOV A,DEM
    CJNE A,PWM,KTTIEP1
    LCALL DUNGCHAY
    KTTIEP1:
    CJNE DEM,#100,THOAT_T0
    MOV DEM,#0
    LCALL CHAYNGUOC
    THOAT_T0:
    POP ACC
    RETI
    READ_AD:
    CLR START
    LCALL DELAY100US
    SETB START
    MOV PWM,DATA1
    RET
    CHAYTHUAN:
    SETB EN_A
    CLR C_A
    SETB D_A
    RET
    CHAYNGUOC:
    SETB EN_A
    SETB C_A
    CLR D_A
    RET
    DUNGCHAY:
    SETB EN_A
    CLR C_A
    CLR D_A
    RET
    DELAY100US:
    MOV R7,#60
    DJNZ R7,$
    RET
    END
    Bạn cần giải thích chỗ nào vậy?
    Công ty TNHH Tự Động Hóa Đạt Lân
    32/36, Ông Ích Khiêm, F14, Q11
    ĐT: 08.3974 7308 - 0937.197.001
    email:
    Webite:

    Comment


    • #3
      Chủ nhân của đoạn code đây rùi. Mình ko hỉu nhiệm vụ của chương trình chính và các ngắt ? Bạn có thể giải thích thêm dc ko? Cụ thể là đoạn này :
      MAIN:
      JB FW,KTREV
      JNB FW,$
      MOV TRANGTHAI,#1
      JMP MAIN
      KTREV:
      JB REV,KTSTOP
      JNB REV,$
      MOV TRANGTHAI,#2
      JMP MAIN
      KTSTOP:
      JB STOP,MAIN
      JNB STOP,$
      LCALL DUNGCHAY
      MOV TRANGTHAI,#3
      JMP MAIN
      NGATT1:
      CLR TR1
      MOV TH1,#HIGH(-5000)
      MOV TL1,#LOW(-5000)
      SETB TR1
      LCALL READ_AD
      RETI
      NGATT0:
      CLR TR0
      MOV TH0,#HIGH(-1000)
      MOV TL0,#LOW(-1000)
      SETB TR0
      PUSH ACC
      MOV A,PWM
      CJNE A,#0,DIEUXUNG
      JMP THOAT_T0
      DIEUXUNG:
      CJNE TRANGTHAI,#1,NGUOC
      INC DEM
      MOV A,DEM
      CJNE A,PWM,KTTIEP
      LCALL DUNGCHAY
      KTTIEP:
      CJNE DEM,#100,THOAT_T0
      LCALL CHAYTHUAN
      MOV DEM,#0
      LJMP THOAT_T0
      NGUOC:
      CJNE TRANGTHAI,#2,THOAT_T0
      INC DEM
      MOV A,DEM
      CJNE A,PWM,KTTIEP1
      LCALL DUNGCHAY
      KTTIEP1:
      CJNE DEM,#100,THOAT_T0
      MOV DEM,#0
      LCALL CHAYNGUOC
      THOAT_T0:
      POP ACC
      RETI
      READ_AD:
      CLR START
      LCALL DELAY100US
      SETB START
      MOV PWM,DATA1
      RET

      Comment


      • #4
        C_A BIT P0.5
        D_A BIT P0.6
        EN_A BIT P0.7
        FW BIT P3.5
        STOP BIT P3.4
        REV BIT P3.3
        START BIT P3.2

        Mình dùng RHsim biên dịch thì nó ko nhận lệnh này, chỉ dùn đc = lệnh EQU

        Comment


        • #5
          Nguyên văn bởi kissyou Xem bài viết
          C_A BIT P0.5
          D_A BIT P0.6
          EN_A BIT P0.7
          FW BIT P3.5
          STOP BIT P3.4
          REV BIT P3.3
          START BIT P3.2

          Mình dùng RHsim biên dịch thì nó ko nhận lệnh này, chỉ dùn đc = lệnh EQU
          Cái đó chỉ là khai báo port thôi chứ có lệnh gì đâu nhỉ?

          Comment


          • #6
            Nguyên văn bởi benoit Xem bài viết
            AI giỏi giải thích giùm mình đoạn code asm này với.
            ;KHAI BAO CAC BIEN NGO I/O
            C_A BIT P0.5
            D_A BIT P0.6
            EN_A BIT P0.7
            FW BIT P3.5
            STOP BIT P3.4
            REV BIT P3.3
            START BIT P3.2
            DATA1 EQU P1
            ;KHAI BAO CAC BIEN O NHO
            DEM EQU R1
            CHIEUQUAY EQU R5
            PWM EQU 30H
            TRANGTHAI EQU R6
            ORG 0000H
            LJMP SETUP
            ORG 000BH
            LJMP NGATT0
            ORG 001BH
            LJMP NGATT1
            ORG 0030H
            SETUP:
            ;KHOI TAO NGAT, BIEN
            SETB EA
            SETB ET0
            SETB ET1
            MOV DATA1,#255
            SETB START
            MOV TMOD,#11H
            MOV TH0,#HIGH(-1000)
            MOV TL0,#LOW(-1000)
            MOV TH1,#HIGH(-5000)
            MOV TL1,#LOW(-5000)
            SETB TR0
            SETB TR1
            MOV PWM,#1
            MOV DEM,#0
            ;CHUONG TRINH CHINH CO NHIEM VU QUET TRANG THAI CAC PHIM NHAN
            ;VA NAP NOI DUNG THICH HOP CHO BIEN TRANG THAI

            MAIN:
            JB FW,KTREV
            JNB FW,$
            MOV TRANGTHAI,#1
            JMP MAIN
            KTREV:
            JB REV,KTSTOP
            JNB REV,$
            MOV TRANGTHAI,#2
            JMP MAIN
            KTSTOP:
            JB STOP,MAIN
            JNB STOP,$
            LCALL DUNGCHAY
            MOV TRANGTHAI,#3
            JMP MAIN
            ;CHUONG TRINH NGAT TIMER1 CO NHIEM VU TAO CHU KY DOC GIA TRI ADC
            NGATT1:
            CLR TR1
            MOV TH1,#HIGH(-5000)
            MOV TL1,#LOW(-5000)
            SETB TR1
            LCALL READ_AD
            RETI
            ;CHUONG TRINH NGAT TIMER0 CO NHIEM VU DIEU RONG XUNG CAP CHO MOTOR
            ;THEO GIA TRI ADC DOC DUOC

            NGATT0:
            CLR TR0
            MOV TH0,#HIGH(-1000)
            MOV TL0,#LOW(-1000)
            SETB TR0
            PUSH ACC
            MOV A,PWM
            CJNE A,#0,DIEUXUNG
            JMP THOAT_T0
            DIEUXUNG:
            CJNE TRANGTHAI,#1,NGUOC
            INC DEM
            MOV A,DEM
            CJNE A,PWM,KTTIEP
            LCALL DUNGCHAY
            KTTIEP:
            CJNE DEM,#100,THOAT_T0
            LCALL CHAYTHUAN
            MOV DEM,#0
            LJMP THOAT_T0
            NGUOC:
            CJNE TRANGTHAI,#2,THOAT_T0
            INC DEM
            MOV A,DEM
            CJNE A,PWM,KTTIEP1
            LCALL DUNGCHAY
            KTTIEP1:
            CJNE DEM,#100,THOAT_T0
            MOV DEM,#0
            LCALL CHAYNGUOC
            THOAT_T0:
            POP ACC
            RETI
            READ_AD:
            CLR START
            LCALL DELAY100US
            SETB START
            MOV PWM,DATA1
            RET
            CHAYTHUAN:
            SETB EN_A
            CLR C_A
            SETB D_A
            RET
            CHAYNGUOC:
            SETB EN_A
            SETB C_A
            CLR D_A
            RET
            DUNGCHAY:
            SETB EN_A
            CLR C_A
            CLR D_A
            RET
            DELAY100US:
            MOV R7,#60
            DJNZ R7,$
            RET
            END
            Giải thích như vậy được chưa bạn?
            Công ty TNHH Tự Động Hóa Đạt Lân
            32/36, Ông Ích Khiêm, F14, Q11
            ĐT: 08.3974 7308 - 0937.197.001
            email:
            Webite:

            Comment


            • #7
              Cám ơn bạn nha. Mình hiểu rồi nhưng mình ko dùng adc, mình dùng 2 nút nhấn nhanh và chậm để cấp pwm cho motor thì đơn giàn hơn đúng ko.

              Comment


              • #8
                Bạn ơi, mình ko hiểu vài chỗ :
                JB FW, KTREV
                JNB FW, $ ; Cái này ko nhấn thì nó cứ nhảy tại chỗ hoài ah? hay là bit trangthai sẽ lên 1
                MOV TRANGTHAI,#1
                ...................................
                ...................................
                Mình ko hiểu biến DEM để làm gì và tại sao phải so sánh biến DEM và PWM. Tại sao biến DEM phải bằng 100 thì mới chạy thuận dc :
                DIEUXUNG:
                CJNE TRANGTHAI,#1,NGUOC
                INC DEM
                MOV A,DEM
                CJNE A,PWM,KTTIEP
                LCALL DUNGCHAY
                KTTIEP:
                CJNE DEM,#100,THOAT_T0
                LCALL CHAYTHUAN
                MOV DEM,#0
                LJMP THOAT_T0

                Comment


                • #9
                  Hic hic ai giúp giùm đoạn này với : ko hiểu giải thuật ra làm sao nữa
                  DIEUXUNG:
                  CJNE TRANGTHAI,#1,NGUOC
                  INC DEM
                  MOV A,DEM
                  CJNE A,PWM,KTTIEP
                  LCALL DUNGCHAY
                  KTTIEP:
                  CJNE DEM,#100,THOAT_T0
                  LCALL CHAYTHUAN
                  MOV DEM,#0
                  LJMP THOAT_T0
                  NGUOC:
                  CJNE TRANGTHAI,#2,THOAT_T0
                  INC DEM
                  MOV A,DEM
                  CJNE A,PWM,KTTIEP1
                  LCALL DUNGCHAY
                  KTTIEP1:
                  CJNE DEM,#100,THOAT_T0
                  MOV DEM,#0
                  LCALL CHAYNGUOC

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X