|
本帖最后由 f117_2r 于 2014-5-24 09:57 编辑
下面是代码虽画出了圆但运行的轨迹多了,不知道问题出在那儿,找了三天了。求助
//===================================================
//define
//===================================================
int _x, _y;
//===================================================
//define io
//===================================================
#define kx1 PINC.1
#define kx2 PINC.2
#define ky1 PINC.3
#define ky2 PINC.4
#define are PINC.5
#define key PINC.0
#define x_plus PORTD.0 //x plus
#define x_dir1 PORTD.1 //x dir1
#define x_dir2 PORTD.2 //x dir2
#define y_plus PORTD.3 //y plus
#define y_dir1 PORTD.4 //y dir1
#define y_dir2 PORTD.5 //y dir2
#define z_pree PORTD.6 //z_pree
//===================================================
//ioint
//===================================================
void ioint(void)
{
PORTB=0x00; DDRB=0x00;
PORTC=0x3F; DDRC=0x00;
PORTD=0x00; DDRD=0x7F;
}
//===================================================
//send x_plus
//===================================================
void x_send(int x)
{
if(x>0)
{
x_dir1=0; x_dir2=1;
while(x)
{
x--;
x_plus=1; delay_us(100); x_plus=0; delay_us(100);
}
}
else
{
x_dir1=1; x_dir2=0;
while(x)
{
x++;
x_plus=1; delay_us(100); x_plus=0; delay_us(100);
}
}
}
//===================================================
//send y_plus
//===================================================
void y_send(int y)
{
if(y>0)
{
y_dir1=0; y_dir2=1;
while(y)
{
y--;
y_plus=1; delay_us(100); y_plus=0; delay_us(100);
}
}
else
{
y_dir1=1; y_dir2=0;
while(y)
{
y++;
y_plus=1; delay_us(100); y_plus=0; delay_us(100);
}
}
}
//===================================================
void CirclePlot (int x, int y)
{
int x_1, y_1;
if(x!=_x) {x_1=_x-x; _x=x; x_send(x_1); }
if(y!=_y) {y_1=_y-y; _y=y; y_send(y_1); }
}
//===================================================
//CirclePlot
//===================================================
// 画圆数学方程(X-Ox)^2+(Y-Oy)^2=Rx^2 */
void Circle(int r)
{
int x, y , d;
//------------------------------1
x=0;
y=r;
d =3-2*r;
CirclePlot(x,y);
while(x<y)
{
if(d<0)
{
d =d+4*x+6;
}
else
{
d =d+4*(x-y)+10;
y--;
}
x++;
CirclePlot(x,y);
}
//------------------------------2
x=0;
y=r;
d =3-2*r;
CirclePlot(y,x);
while(x<y)
{
if(d<0)
{
d =d+4*x+6;
}
else
{
d =d+4*(x-y)+10;
y--;
}
x++;
CirclePlot(y,x);
}
//------------------------------3
x=0;
y=r;
d =3-2*r;
CirclePlot(y,-x);
while(x<y)
{
if(d<0)
{
d =d+4*x+6;
}
else
{
d =d+4*(x-y)+10;
y--;
}
x++;
CirclePlot(y,-x);
}
//------------------------------4
x=0;
y=r;
d =3-2*r;
CirclePlot(x,-y);
while(x<y)
{
if(d<0)
{
d =d+4*x+6;
}
else
{
d =d+4*(x-y)+10;
y--;
}
x++;
CirclePlot(x,-y);
}
//------------------------------5
x=0;
y=r;
d =3-2*r;
CirclePlot(-x,-y);
while(x<y)
{
if(d<0)
{
d =d+4*x+6;
}
else
{
d =d+4*(x-y)+10;
y--;
}
x++;
CirclePlot(-x,-y);
}
//------------------------------6
x=0;
y=r;
d =3-2*r;
CirclePlot(-y,-x);
while(x<y)
{
if(d<0)
{
d =d+4*x+6;
}
else
{
d =d+4*(x-y)+10;
y--;
}
x++;
CirclePlot(-y,-x);
}
//------------------------------7
x=0;
y=r;
d =3-2*r;
CirclePlot(-y,x);
while(x<y)
{
if(d<0)
{
d =d+4*x+6;
}
else
{
d =d+4*(x-y)+10;
y--;
}
x++;
CirclePlot(-y,x);
}
//------------------------------
x=0;
y=r;
d =3-2*r;
CirclePlot(-x,y);
while(x<y)
{
if(d<0)
{
d =d+4*x+6;
}
else
{
d =d+4*(x-y)+10;
y--;
}
x++;
CirclePlot(-x,y);
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|