How to Control stepper motor using Microprocessor 8086 by assembly language program? As we all know that stepper motor driver plays an important role in automatic control system.
We can create a stepper motor controller using 8086 microprocessor and 8255 Programmable Peripheral Interface IC. Here is the assembly language program for 8086 microprocessor. This stepper motor assembly language program is quite simple and easy. Here we had described the functions of each code for better understanding.
Basically this assembly program is a beginner guide to those who like to study 8086 programming.
Notations used For representing different types of numbers
We are using some notations here.
B: – used to indicate Binary Number
H: – used to represent Hexa Decimal Number
CW used to represent Control Word register
You must know!
- Stepper motor is interfaced to 8086 with the help of 8255 IC (Programmable Peripheral Interface).
- 8255 has two modes of operation BSR (Bit Set Reset) mode & IO (Input Output) mode.
- The mode is determined by the Control Word (CW) register; (here the CW address is 26).
- Initialize the CW with (0000 0000)B=(00)H for BSR mode & (1000 0000)B=(80)H for IO mode
- Stepper motor is IO device so CW should be (80)H There are 4 poles in a typical stepper motor A1, A2, B1, B2
- Energize the poles for anticlockwise rotation we have to apply the following to the poles
8086 Assembly Language Programming Code for Beginners
The below program shows the interfacing of Stepper motor
1000 MOV AL,80 /*Move 80(hex) to AL*/
1002 OUT 26,AL /*Move 80(Hex) to PPI, 26 is the CW of PPI*/
1004 MOV AL,0A /*Energizing the poles*/
1006 OUT 20,AL
1008 CALL 2000 /*Give some delay to rotate Motor*/
1010 MOV AL,06
1012 OUT 20,AL
1014 CALL 2000
1016 MOV AL,05
1018 OUT 20,AL
1020 CALL 2000
1022 MOV AL,09
1024 OUT 20,AL
1026 CALL 2000
1028 JMP 1004 /*Repeat the steps*/
In the memory location 2000, we should give Delay program. You can choose any memory location other than 2000 as you like.
The delay Program is shown below
2000 MOV BX,1000 /*Move a value to BX*/
2002 DEC BX /*Decrementing the value*/s
2004 MP BX,0000 /*Check whether the value reach 0000*/
2006 JNZ 2002 /*If not 0000, Decrement again*/
2008 RET /*Return to the Motor program*/
Programming 8086 is not an easy thing. Here we tried to give you the code and explanation of how to program a stepper motor on an 8086 Microprocessor.