| ??? 01/18/10 21:28 Read: times |
#172569 - Here is the code... Responding to: ???'s previous message |
Hello Everyone,
Here is the code I wrote using Mr. Ferlemann's suggestions. Am I making a mistake anywhere? Also, I couldn't understand a word of the code posted by Mr. Murray R. Van Luyn ( unfortunately my knowledge of embedded C is quite poor). Can someone please explain the algorithm of the code or the concept used in his code? Thanks a lot, in advance.
#include<reg51.h>
#include<stdio.h>
sbit MTRS=P2^0;
sbit MTRE=P2^1;
sbit MTRW=P2^2;
sbit MTRH=P2^3;
static unsigned char ms_tenth;
static unsigned char target1;
static unsigned char target2;
static unsigned char target3;
static unsigned char target4;
void servo(char,char,char,char);
void msdel(unsigned int);
void Timer0_ISR (void) interrupt 1
{
MTRS=(ms_tenth < target1);
MTRE=(ms_tenth < target2);
MTRW=(ms_tenth < target3);
MTRH=(ms_tenth < target4);
if (++ms_tenth == 200)
ms_tenth = 0;
TF0 = 0;
}
void servo(char w,char x,char y,char z)
{
TR0=1;
target1=w;
target2=x;
target3=y;
target4=z;
msdel(8000);
}
void msdel(unsigned int major)
{unsigned int i,j;
for(i=1;i<major;i++)
for(j=1;j<10;j++);
}
void main(void)
{TMOD=0x02;
IE=0x82;
TH0=0xA3;
MTRS=0;
MTRE=0;
MTRW=0;
MTRH=0;
ms_tenth = 0;
target1=0;
target2=0;
target3=0;
target4=0;
{servo(21,10,14,23);
servo(20,12,14,23);
servo(20,14,14,23);
servo(20,17,14,23);
servo(20,17,17,23);
servo(20,14,14,16);
servo(20,10,12,16);
servo(21,10,14,16);
}
for(;;);
}
|



