D
Das
Guest
hi fiecare,
Sunt proiectare a unui stepper motor controller folosind 8051 microcontroler, ckt meu nu este de lucru (stepper motor nu este în execuţie), i-am utilizând 6 sârmă unipolar stepper motor.Nu stiu de unde este problema.
Aceasta este adresa mea de cod:
NUME STEPPER_MOTOR
; UTILIZAREA 0; Inregistreaza-Bank 0
; Executia incepe de la 0 la adresa de putere-up.
; JMP START
; Primul set Stack Pointer
Start: JMP OVER
; Continua verifica dacă este apăsată tasta
SONDAJ: MOV A, P3
CJNE A, # 0FFH, CHECK_P3
JMP SONDAJ
; Găsiţi-cheie, care este apăsat şi apelaţi roti
CHECK_P3: RRC A
JNC roti
INC R1
JMP CHECK_P3
; Folosita pentru a roti Stepper Motor
Roti: CJNE R1, # 4h, NXT_LOGIC
CALL în sensul acelor de ceasornic
JMP OVER
NXT_LOGIC: CJNE R1, # 5H, NXT_LOGIC_2
CALL ANTI_CLOCK
JMP OVER
NXT_LOGIC_2: CJNE R1, # 6h, NXT_LOGIC_3
CALL NEW_LOGIC
JMP OVER
NXT_LOGIC_3:; CJNE R1, # 7H, NXT_LOGIC_4
CALL NEW_LOGIC_ONE
JMP OVER
; NXT_LOGIC_4: CJNE R1, # 8h, NXT; MOTOR_SEL: CJNE R1, # 6h, de-a
lungul; CALL SELECT_MOTOR
; JMP OVER
; Rotiţi în sensul acelor de ceasornic Stepper Motor direcţie
; În sensul acelor de ceasornic: MOV R1, # 32H
În sensul acelor de ceasornic: MOV R1, # 0FFH
GO_CLOCK: MOV P2, # 0CH
CALL întârziere
MOV P2, # 06H
CALL întârziere
MOV P2, # 03H
CALL întârziere
MOV P2, # 09H
CALL întârziere
DJNZ R1, GO_CLOCK
RET
ANTI_CLOCK: MOV R1, # 32H
; ANTI_CLOCK: MOV R1, # 0FFH
GO_ACLOCK: MOV P2, # 05H
CALL întârziere
MOV P2, # 0AH
CALL întârziere
; MOV P2, # 04H
; CALL întârziere
; MOV P2, # 02H
; CALL întârziere
DJNZ R1, GO_ACLOCK
RETNEW_LOGIC: MOV R1, # 0FFH
GO_NLOGIC: MOV P2, # 08H
CALL întârziere
MOV P2, # 04H
CALL întârziere
MOV P2, # 02H
CALL întârziere
MOV P2, # 01H
CALL întârziere
DJNZ R1, GO_NLOGIC
RET
NEW_LOGIC_ONE: MOV R1, # 0FFH
GO_NLOGIC_ONE: MOV P2, # 08H
CALL întârziere
MOV P2, # 0CH
CALL întârziere
MOV P2, # 04H
CALL întârziere
MOV P2, # 06H
CALL întârziere
MOV P2, # 02H
CALL întârziere
MOV P2, # 03H
CALL întârziere
MOV P2, # 01H
CALL întârziere
MOV P2, # 09H
CALL întârziere
DJNZ R1, GO_NLOGIC_ONE
RET
; SELECT_MOTOR: JB P3.6, AZIMUTH_MOTOR
; MOV R0, # 80H
; MOV @ R0, # 01H
; JMP OVER
; AZIMUTH_MOTOR: MOV R2, P2
; JMP OVER
; Iniţializa porturi şi întoarce înapoi la modul de votare
Mai mult: MOV R1, # 00H
MOV P2, # 00H
MOV P3, # 0FFH
; MOV R0, 01H
JMP SONDAJ
; Se va introduce o întârziere de 30ms
Întârziere: MOV R5, # 1EH
; Întârziere: MOV R5, # 0FFH
Buclă: MOV R4, # 0FAH
LEVEL2: NOP; cca nop ia 2.0 microsecundă
NOP
; NOP
; NOP
; NOP
DJNZ R4, LEVEL2
DJNZ R5, Repetare
RET
END
ajută-mă, Vă mulţumim în avans
Das
Ne pare rău, dar ai nevoie de autentificare pentru a vizualiza acest ataşament
Sunt proiectare a unui stepper motor controller folosind 8051 microcontroler, ckt meu nu este de lucru (stepper motor nu este în execuţie), i-am utilizând 6 sârmă unipolar stepper motor.Nu stiu de unde este problema.
Aceasta este adresa mea de cod:
NUME STEPPER_MOTOR
; UTILIZAREA 0; Inregistreaza-Bank 0
; Executia incepe de la 0 la adresa de putere-up.
; JMP START
; Primul set Stack Pointer
Start: JMP OVER
; Continua verifica dacă este apăsată tasta
SONDAJ: MOV A, P3
CJNE A, # 0FFH, CHECK_P3
JMP SONDAJ
; Găsiţi-cheie, care este apăsat şi apelaţi roti
CHECK_P3: RRC A
JNC roti
INC R1
JMP CHECK_P3
; Folosita pentru a roti Stepper Motor
Roti: CJNE R1, # 4h, NXT_LOGIC
CALL în sensul acelor de ceasornic
JMP OVER
NXT_LOGIC: CJNE R1, # 5H, NXT_LOGIC_2
CALL ANTI_CLOCK
JMP OVER
NXT_LOGIC_2: CJNE R1, # 6h, NXT_LOGIC_3
CALL NEW_LOGIC
JMP OVER
NXT_LOGIC_3:; CJNE R1, # 7H, NXT_LOGIC_4
CALL NEW_LOGIC_ONE
JMP OVER
; NXT_LOGIC_4: CJNE R1, # 8h, NXT; MOTOR_SEL: CJNE R1, # 6h, de-a
lungul; CALL SELECT_MOTOR
; JMP OVER
; Rotiţi în sensul acelor de ceasornic Stepper Motor direcţie
; În sensul acelor de ceasornic: MOV R1, # 32H
În sensul acelor de ceasornic: MOV R1, # 0FFH
GO_CLOCK: MOV P2, # 0CH
CALL întârziere
MOV P2, # 06H
CALL întârziere
MOV P2, # 03H
CALL întârziere
MOV P2, # 09H
CALL întârziere
DJNZ R1, GO_CLOCK
RET
ANTI_CLOCK: MOV R1, # 32H
; ANTI_CLOCK: MOV R1, # 0FFH
GO_ACLOCK: MOV P2, # 05H
CALL întârziere
MOV P2, # 0AH
CALL întârziere
; MOV P2, # 04H
; CALL întârziere
; MOV P2, # 02H
; CALL întârziere
DJNZ R1, GO_ACLOCK
RETNEW_LOGIC: MOV R1, # 0FFH
GO_NLOGIC: MOV P2, # 08H
CALL întârziere
MOV P2, # 04H
CALL întârziere
MOV P2, # 02H
CALL întârziere
MOV P2, # 01H
CALL întârziere
DJNZ R1, GO_NLOGIC
RET
NEW_LOGIC_ONE: MOV R1, # 0FFH
GO_NLOGIC_ONE: MOV P2, # 08H
CALL întârziere
MOV P2, # 0CH
CALL întârziere
MOV P2, # 04H
CALL întârziere
MOV P2, # 06H
CALL întârziere
MOV P2, # 02H
CALL întârziere
MOV P2, # 03H
CALL întârziere
MOV P2, # 01H
CALL întârziere
MOV P2, # 09H
CALL întârziere
DJNZ R1, GO_NLOGIC_ONE
RET
; SELECT_MOTOR: JB P3.6, AZIMUTH_MOTOR
; MOV R0, # 80H
; MOV @ R0, # 01H
; JMP OVER
; AZIMUTH_MOTOR: MOV R2, P2
; JMP OVER
; Iniţializa porturi şi întoarce înapoi la modul de votare
Mai mult: MOV R1, # 00H
MOV P2, # 00H
MOV P3, # 0FFH
; MOV R0, 01H
JMP SONDAJ
; Se va introduce o întârziere de 30ms
Întârziere: MOV R5, # 1EH
; Întârziere: MOV R5, # 0FFH
Buclă: MOV R4, # 0FAH
LEVEL2: NOP; cca nop ia 2.0 microsecundă
NOP
; NOP
; NOP
; NOP
DJNZ R4, LEVEL2
DJNZ R5, Repetare
RET
END
ajută-mă, Vă mulţumim în avans
Das
Ne pare rău, dar ai nevoie de autentificare pentru a vizualiza acest ataşament