Thông báo

Collapse
No announcement yet.

Dùng 89c51 Điều khiển Động Cơ DC

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

  • Dùng 89c51 Điều khiển Động Cơ DC

    chào các bác
    các bác cho e hỏi là code này bị lỗi gì mà khi lưu đc dưới dạng file.c rùi nhưng không chuyển sang file.HEX đc ah??
    e mới tập lập trình nên các bác thông cảm cho em

    ;PHAN KHAI BAO CAC BIT NGO VAO
    PWM BIT P1.6 ;BIT DIEU KHIEN THIET BI
    UP BIT P3.4 ;TANG GIA TRI PWM
    DOWN BIT P3.5 ;GIAM GIA TRI PWM
    ;PHAN KHAI BAO BIEN LED
    PWM_VALUE EQU 31H
    ;KHAI BAO CAC VECTOR NGAT
    ORG 0000H
    LJMP SETUP ;KHOI DONG CHUONG TRINH KHI CAP NGUON
    ORG 000BH
    LJMP T0_ISR ;NGAT TIMER 0 DIEU RONG XUNG
    ORG 0030H
    SETUP:
    SETB EA ;CHO PHEP NGAT TOAN CUC
    SETB ET0 ;CHO PHEP NGAT TIMER 0
    CLR PWM ;TAT THIET BI
    MOV TMOD,#11H
    MOV TH0,#HIGH(-200) ;\ ;TA 12MHZ => 200us x 100% = 20000us = 20ms
    MOV TL0,#LOW(-200) ;/ CHU KY DIEU XUNG
    MOV PWM_VALUE,#0 ;MAC DINH GIA TRI PWM = 0
    MOV R7,#0 ;BIEN XAC DINH SO LAN NGAT TIMER
    SETB TR0 ;CHO PHEP TIMER HOAT DONG
    MAIN:
    JB UP,CHECK_DOWN ;NEU PHIM UP = '1' THI KIEM TRA PHIM DOWN
    LCALL DELAY200MS ;NEU PHIM UP = '0' THI CHO CHONG XUNG NAY
    INC PWM_VALUE ;TANG GIA TRI PWM
    MOV A,PWM_VALUE
    CJNE A,#101,EXIT_UP ;CHUA TOI NGUONG TREN THI THOAT THU TUC NHAN PHIM
    MOV PWM_VALUE,#100 ;DO DAY XUNG DAT 100%
    EXIT_UP:
    JMP MAIN
    CHECK_DOWN:
    JB DOWN,MAIN
    LCALL DELAY200MS
    DEC PWM_VALUE
    MOV A,PWM_VALUE
    CJNE A,#-1,EXIT_DOWN ;CHUA TOI NGUONG DUOI THI THOAT THU TUC NHAN PHIM
    MOV PWM_VALUE,#0 ;DO DAY XUNG BANG 0
    EXIT_DOWN:
    JMP MAIN
    T0_ISR: ;NGAT TIMER DUNG DE DIEU RONG XUNG
    PUSH ACC
    MOV 7FH,C
    CLR TR0
    MOV TH0,#HIGH(-200)
    MOV TL0,#LOW(-200)
    SETB TR0
    MOV A,PWM_VALUE
    CJNE A,#0,EN_PWM ;DO DAY XUNG <> 0 THI CHO DIEU XUNG
    JMP EXIT_ISR ;DO DAY XUNG = 0 THI THOAT KHOI THU TUC NGAT
    EN_PWM:
    INC R7 ;TANG BIEN DEM NGAT
    MOV A,R7
    CJNE A,PWM_VALUE,OFF_PULSE ;DU THOI GIAN DAY XUNG THI TAT THIET BI
    CLR PWM ;TAT THIET BI
    OFF_PULSE:
    CJNE A,#100,EXIT_ISR ;CHUA HET CHU KY DIEU XUNG THI THOAT NGAT
    SETB PWM ;TOI ROI THI MO THIET BI
    MOV R7,#0 ;RESET LAI BIEN DEM
    EXIT_ISR:
    MOV C,7FH
    POP ACC
    RETI
    DELAY50MS:
    MOV TH1,#HIGH(-50000) ; CHUONG TRINH CON TRE 50MS GIAY
    MOV TL1,#LOW(-50000) ; SU DUNG THACH ANH 12MHZ
    SETB TR1
    JNB TF1,$
    CLR TR1
    CLR TF1
    RET
    DELAY200MS:
    LCALL DELAY50MS
    LCALL DELAY50MS
    LCALL DELAY50MS
    LCALL DELAY50MS
    RET
    END




    bài này nữa ah
    org 0
    jmp start
    start:
    call docbanphim
    call dieukhiendongco
    jmp start ;---------------------
    docbanphim:
    jb P0.1,dbpNEXT1
    mov R0,#0;STOP
    jmp dbpOK
    dbpNEXT1:
    jb T1.4,dbpNEXT2
    mov R0,#1;THUAN
    jmp dbpOK
    dbpNEXT2:
    jb P1.7,dbpOK
    mov R0,#2;NGUOC
    jmp dbpOK
    dbpOK:
    ret;~~~~~~~~~~~~~~~~~~~~
    dieukhiendongco:
    CJNB R0,#0,dkdcNEXT1
    CLR P2.0
    CLR P2.2
    imp dkdcOK
    dkdcNEXT1:
    CJNE R0,#1,dkdcNEXT2
    SETB P2.0
    CLR P2.2
    jmp dkdcOK
    dkdcNEXT2:
    CJNE R0,#2,dkdcOK
    CLR P2.0
    SETB P2.2
    dkdcOK:
    ret;~~~~~~~~~~~~~~~~~~~
    end


    thanks các bác ah
    ***Poor_Life***

  • #2
    đây là hợp ngữ .ASM chứ có phải .C đâu

    Comment


    • #3
      nhưng mà khi e lưu dưới dạng file.asm thì k cho thể "Add files to group source" đc...hay a chuyển 1 code đó sang file HEX giúp e đc k ah???
      ***Poor_Life***

      Comment


      • #4
        Chắc cậu lập trình bằng Keil C. Add được chứ. Lúc add thì trong cửa sổ browse nhớ chọn lại kiểu file lad được. File ASM mà lạ lưu thành .C thì chắc mấy chương trình biên dịch hiện tại nó bó tay luôn

        Comment


        • #5
          ok
          thanks bác nhiều ah..
          ***Poor_Life***

          Comment


          • #6
            bạn tải mcs 51 ide về mà dịch

            Comment


            • #7
              pó tay.com

              Comment


              • #8
                bây giờ thì khá hơn rùi,,,,
                ***Poor_Life***

                Comment


                • #9
                  bac nao giai thich gium minh chuong trinh nay được không.mình đọc mà không hiểu lắm

                  [QUOTE=ngochuyenk44;623682]chào các bác
                  các bác cho e hỏi là code này bị lỗi gì mà khi lưu đc dưới dạng file.c rùi nhưng không chuyển sang file.HEX đc ah??
                  e mới tập lập trình nên các bác thông cảm cho em

                  ;PHAN KHAI BAO CAC BIT NGO VAO
                  PWM BIT P1.6 ;BIT DIEU KHIEN THIET BI
                  UP BIT P3.4 ;TANG GIA TRI PWM
                  DOWN BIT P3.5 ;GIAM GIA TRI PWM
                  ;PHAN KHAI BAO BIEN LED
                  PWM_VALUE EQU 31H
                  ;KHAI BAO CAC VECTOR NGAT
                  ORG 0000H
                  LJMP SETUP ;KHOI DONG CHUONG TRINH KHI CAP NGUON
                  ORG 000BH
                  LJMP T0_ISR ;NGAT TIMER 0 DIEU RONG XUNG
                  ORG 0030H
                  SETUP:
                  SETB EA ;CHO PHEP NGAT TOAN CUC
                  SETB ET0 ;CHO PHEP NGAT TIMER 0
                  CLR PWM ;TAT THIET BI
                  MOV TMOD,#11H
                  MOV TH0,#HIGH(-200) ;\ ;TA 12MHZ => 200us x 100% = 20000us = 20ms
                  MOV TL0,#LOW(-200) ;/ CHU KY DIEU XUNG
                  MOV PWM_VALUE,#0 ;MAC DINH GIA TRI PWM = 0
                  MOV R7,#0 ;BIEN XAC DINH SO LAN NGAT TIMER
                  SETB TR0 ;CHO PHEP TIMER HOAT DONG
                  MAIN:
                  JB UP,CHECK_DOWN ;NEU PHIM UP = '1' THI KIEM TRA PHIM DOWN
                  LCALL DELAY200MS ;NEU PHIM UP = '0' THI CHO CHONG XUNG NAY
                  INC PWM_VALUE ;TANG GIA TRI PWM
                  MOV A,PWM_VALUE
                  CJNE A,#101,EXIT_UP ;CHUA TOI NGUONG TREN THI THOAT THU TUC NHAN PHIM
                  MOV PWM_VALUE,#100 ;DO DAY XUNG DAT 100%
                  EXIT_UP:
                  JMP MAIN
                  CHECK_DOWN:
                  JB DOWN,MAIN
                  LCALL DELAY200MS
                  DEC PWM_VALUE
                  MOV A,PWM_VALUE
                  CJNE A,#-1,EXIT_DOWN ;CHUA TOI NGUONG DUOI THI THOAT THU TUC NHAN PHIM
                  MOV PWM_VALUE,#0 ;DO DAY XUNG BANG 0
                  EXIT_DOWN:
                  JMP MAIN
                  T0_ISR: ;NGAT TIMER DUNG DE DIEU RONG XUNG
                  PUSH ACC
                  MOV 7FH,C
                  CLR TR0
                  MOV TH0,#HIGH(-200)
                  MOV TL0,#LOW(-200)
                  SETB TR0
                  MOV A,PWM_VALUE
                  CJNE A,#0,EN_PWM ;DO DAY XUNG <> 0 THI CHO DIEU XUNG
                  JMP EXIT_ISR ;DO DAY XUNG = 0 THI THOAT KHOI THU TUC NGAT
                  EN_PWM:
                  INC R7 ;TANG BIEN DEM NGAT
                  MOV A,R7
                  CJNE A,PWM_VALUE,OFF_PULSE ;DU THOI GIAN DAY XUNG THI TAT THIET BI
                  CLR PWM ;TAT THIET BI
                  OFF_PULSE:
                  CJNE A,#100,EXIT_ISR ;CHUA HET CHU KY DIEU XUNG THI THOAT NGAT
                  SETB PWM ;TOI ROI THI MO THIET BI
                  MOV R7,#0 ;RESET LAI BIEN DEM
                  EXIT_ISR:
                  MOV C,7FH
                  POP ACC
                  RETI
                  DELAY50MS:
                  MOV TH1,#HIGH(-50000) ; CHUONG TRINH CON TRE 50MS GIAY
                  MOV TL1,#LOW(-50000) ; SU DUNG THACH ANH 12MHZ
                  SETB TR1
                  JNB TF1,$
                  CLR TR1
                  CLR TF1
                  RET
                  DELAY200MS:
                  LCALL DELAY50MS
                  LCALL DELAY50MS
                  LCALL DELAY50MS
                  LCALL DELAY50MS
                  RET
                  END

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X