Electoday 4.0

ต้องการให้มอเตอร์หมุน เป็น Dute Cycle 100% 75% 50% ต้องใช้ Delay เท่าไหร่ครับ

#include <reg52.h>

sbit SW_L=P3^0;
sbit SW_STOP=P3^1;
sbit SW_R=P3^2;


sbit SW_SLOW=P3^3;
sbit SW_MEDIUM=P3^4;
sbit SW_FAST=P3^5;


void RIGHT();
void LEFT();

void delay(int z)
{
int x;
for(x=0;x<z;x++);

}

void main()
{
        P1=0;

      if(SW_R==0)
         { 
             RIGHT();
         }
      if(SW_L==0)
         {
            LEFT();
         }
}

void RIGHT()
{
   int l = 1000;
   int m = 9000;

   while(SW_STOP==1)
      {
      if(SW_SLOW==0)
         {
            l=2000;
            m=3000;
         }
      if(SW_MEDIUM==0)
         {
            l= 4500;
            m= 500;
         }
      if(SW_FAST==0)
         {
            l= 1000;
            m= 50000; 
         }

      P1=0xFD;
      delay(l);
      P1=0xFF;
      delay(m);
   }
}

void LEFT()
{
   int l = 1000;
   int m = 0000;

   while(SW_STOP==1)
      {
      if(SW_SLOW==0)
         {
            l=2000;
            m=3000;
         }
      if(SW_MEDIUM==0)
         {
            l= 4500;
            m= 500;
         }
      if(SW_FAST==0)
         {
            l= 1000;
            m= 50000; 
         }

      P1=0xFE;
      delay(l);
      P1=0xFF;
      delay(m);
   }
}




Offline JENG

  • *****
  • 803
  • รู้ทุกเรื่องเว้นเรื่องจริง
    • View Profile
1/Frequency จะได้ค่า Period ครับ ค่อยเอามาหาค่า duty กับ delay
สามารถติดตาม electoday ได้อีกสองทางครับ ยินดีต้อนรับทุกท่านครับ

กลุ่มใน Facebook
www.facebook.com/groups/coopmicro

กลุ่มใน Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺