như tiêu đề ạ, nút 1 quay thuận, nút 2 quay ngịch rồi ạ. em muốn làm thêm quay nhanh và quay chậm được ở cả 2 chiều thuận ngịch từ mạch đã có dưới đây ( chạy không tải ạ ) , các anh giúp em với.
Còn đây là code em tìm được trên diễn đàn ạ:
;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
Còn đây là code em tìm được trên diễn đàn ạ:
;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