|
原程式 我引用版上某位大大的程式
#include "reg51.h"
void delay(unsigned int );
void delay2(unsigned int );
void m0(unsigned int );
void m1(unsigned int );
void m2(unsigned int );
void m3(unsigned int );
void m4(unsigned int );
void m5(unsigned int );
void m6(unsigned int );
void m7(unsigned int );
void mm(unsigned int q,w,e,r,t,y,u,i,l);
main()
{
TMOD=0x11;
P0=0x00;
P2=0x00;
//以下程式都不需變更 想編輯動作 只要改mm()括號中的內容及增加mm()來編輯更多動作
//mm()裡的內容為 1.動作維持時間
//2.第一顆馬達角度資料 3.第二顆馬達角度資料 4.第三顆馬達角度資料 5.第四顆馬達角度資料 6.第五顆馬達角度資料
//7.第六顆馬達角度資料 8.第七顆馬達角度資料 9.第八顆馬達角度資料 9.第九顆馬達角度資料 10.第十顆馬達角度資料
//馬達角度資料為800-2200之間 分別為 左轉60度-右轉60度 共120度活動空間
//本程式範例為 左轉60度-右轉60度 依序循環
while(1)
{
//右轉 (我想要在這案 按鈕1 就右轉)
mm(40,800,800,800,800,800,800,800,800);
mm(40,900,900,900,900,900,900,900,900);
mm(40,1000,1000,1000,1000,1000,1000,1000,1000);
mm(40,1400,1400,1400,1400,1400,1400,1400,1400);
//左轉 (在這案 按鈕2就左轉)
mm(40,1700,1700,1700,1700,1700,1700,1700,1700);
mm(40,2000,2000,2000,2000,2000,2000,2000,2000);
mm(40,2200,2200,2200,2200,2200,2200,2200,2200);
}
}
//以下程式為副函式都不需變更
void delay(unsigned int dly)
{
TL1=65536-dly;
TH1=(65536-dly)>>8;
TR1=1;
while(TF1==0);
TR1=0;
TF1=0;
}
void delay2(unsigned int dy)
{
TL0=65536-dy;
TH0=(65536-dy)>>8;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
}
void m0(unsigned int hi)
{
P2=0x01;
delay(hi);
P2=0x00;
delay2(2500-hi);
}
void m1(unsigned int hi)
{
P2=0x02;
delay(hi);
P2=0x00;
delay2(2500-hi);
}
void m2(unsigned int hi)
{
P2=0x04;
delay(hi);
P2=0x00;
delay2(2500-hi);
}
void m3(unsigned int hi)
{
P2=0x08;
delay(hi);
P2=0x00;
delay2(2500-hi);
}
void m4(unsigned int hi)
{
P2=0x10;
delay(hi);
P2=0x00;
delay2(2500-hi);
}
void m5(unsigned int hi)
{
P2=0x20;
delay(hi);
P2=0x00;
delay2(2500-hi);
}
void m6(unsigned int hi)
{
P2=0x40;
delay(hi);
P2=0x00;
delay2(2500-hi);
}
void m7(unsigned int hi)
{
P2=0x80;
delay(hi);
P2=0x00;
delay2(2500-hi);
}
void mm(unsigned int q,w,e,r,t,y,u,i,l)
{
unsigned char o;
for(o=q;o>0;o--)
{
m0(w);
m1(e);
m2(r);
m3(t);
m4(y);
m5(u);
m6(i);
m7(l);
}
}
我改怎改程式呢?? 拜託各位大大了^^ |
|