We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
The following is the code to turn motors in the forward direction (for a robot). The problem is that the motors dont pause for the delay1() which is a 1 sec delay. Instead it goes one turning without pause. it never breaks the loop. Could you people please help as it is urgent.
/*----------------------------------------------------------------------------- Definitions for P1 (8 bits), P1.0 to P1.7. -----------------------------------------------------------------------------*/ sfr P1 = 0x90; /* SFR for P1 */ sbit P1_0 = P1^0; /* SFR for P1.0 */ sbit P1_1 = P1^1; /* SFR for P1.1 */ sbit P1_2 = P1^2; /* SFR for P1.2 */ sbit P1_3 = P1^3; /* SFR for P1.3 */ sbit P1_4 = P1^4; /* SFR for P1.4 */ sbit P1_5 = P1^5; /* SFR for P1.5 */ sbit P1_6 = P1^6; /* SFR for P1.6 */ sbit P1_7 = P1^7; /* SFR for P1.7 */ /*------------ Declaration of the various functions ------------------*/ void forward(); /* Function to move forward one cell. */ void delay(); /* Function Delay 1 - For Motor Speed */ void delay1(); /* Function Delay 2 - For Pause */ void delay(); /*----Declaration of variables---------------*/ unsigned int i; /*----------------------------------------------------------------------------- MAIN C function -----------------------------------------------------------------------------*/ void main (void) { while (1) { forward(); delay1(); delay1(); } } void forward() // Setting Bits individually to move forward { for(i=50 ; i>0 ; i--) { P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 1; P1_4 = 1; P1_5 = 0; P1_6 = 0; P1_7 = 0; delay(); P1_0 = 0; P1_1 = 0; P1_2 = 1; P1_3 = 0; P1_4 = 0; P1_5 = 1; P1_6 = 0; P1_7 = 0; delay(); P1_0 = 0; P1_1 = 1; P1_2 = 0; P1_3 = 0; P1_4 = 0; P1_5 = 0; P1_6 = 1; P1_7 = 0; delay(); P1_0 = 1; P1_1 = 0; P1_2 = 0; P1_3 = 0; P1_4 = 0; P1_5 = 0; P1_6 = 0; P1_7 = 1; delay(); } return ; } void delay() /* Delay function 1 - For Motor Rotation */ { #pragma asm del: mov r0,#028h two: mov r2,#04bh one: mov r1,#01h again: djnz r1,again djnz r2,one djnz r0,two #pragma endasm return; } void delay1() /* Delay function 2 - For Pause */ { #pragma asm del1:mov r0,#0e1h tw:mov r2,#0eah on:mov r1,#08h ag:djnz r1,ag djnz r2,on djnz r0,tw #pragma endasm return; }