|
#include "reg52.h"
#include "duoji.h"
#include "delay.h"
/*
這個(gè)程序如果有問(wèn)題,很有可能是單舵機(jī)程序編程雙舵機(jī)程序的時(shí)候編號(hào)哪里沒(méi)改,
就是原來(lái)單舵機(jī)程序復(fù)制一個(gè),然后參數(shù)加上1,2形成雙舵機(jī)程序,
還有可能就是一個(gè)中斷變成兩個(gè)中斷開(kāi)關(guān)參數(shù)有問(wèn)題,因?yàn)槲也惶浀昧?br />
*/
sbit IN1=P1^2;
sbit IN2=P1^3;
sbit IN3=P1^4;
sbit IN4=P1^5;
void main()
{
TMOD |= 0x11; //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響 TOMD = TOMD | 0X11
TH0=0x00; //給定初值,這里使用定時(shí)器最大值從0開(kāi)始計(jì)數(shù)一直到65535溢出
TL0=0x00;
TH1=0x00; //給定初值,這里使用定時(shí)器最大值從0開(kāi)始計(jì)數(shù)一直到65535溢出
TL1=0x00;
EA=1; //總中斷打開(kāi)
ET0=1; //定時(shí)器0中斷打開(kāi)
TR0=1; //定時(shí)器0開(kāi)關(guān)打開(kāi)
ET1=1; //定時(shí)器0中斷打開(kāi)
TR1=1;
while(1)
{
IN1=1; IN2=0; //左氣泵吸緊
IN3=1; IN4=0; //右氣泵吸緊
duoji1(1000);
duoji2(1000); //假設(shè)兩舵機(jī)的極限位置均分別在1000和2000
DelayMs(3000);
IN1=0; IN2=0; //左氣泵放松
IN3=1; IN4=0; //右氣泵吸緊
DelayMs(3000); //等待放松
duoji1(2000);
duoji2(2000); //兩舵機(jī)反轉(zhuǎn)
IN1=1; IN2=0; //左氣泵吸緊
DelayMs(3000);
IN1=1; IN2=0; //左氣泵吸緊
IN3=0; IN4=0; //右氣泵放松
DelayMs(3000); //等待放松
duoji1(1000);
duoji2(1000); //兩舵機(jī)反轉(zhuǎn)
IN3=1; IN4=0; //右氣泵吸緊
}
}
|
|