欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 簡單尋跡程序 [打印本頁]

作者: 如花綻放    時間: 2018-8-7 11:27
標題: 簡單尋跡程序
#include<reg52.h>
#include<stdio.h>
#include<Step_Moter.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit open=P0^0;//軟開關
sbit ENA=P1^0;
sbit IN1=P1^1;
sbit IN2=P1^2;
sbit IN3=P1^3;
sbit IN4=P1^4;
sbit ENB=P1^5;
sbit ENC=P3^0;
sbit IN5=P3^1;
sbit IN6=P3^2;
sbit IN7=P3^3;
sbit IN8=P3^4;
sbit END=P3^5;
sbit left=P0^1;//左紅外檢測模塊
sbit centre=P0^2;//中間傳感器
sbit right=P0^3;//右紅外檢測模塊

uchar t;                       
uchar PWM1,PWM2,PWM3,PWM4;
uchar k=0;
/*延時函數*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=114;y>0;y--);      
}
/*中斷服務特殊功能寄存器配置*/
void init()
{
TMOD|=0x01;/*定時器0定時*/
TH0=(65535-100)/256;
TL0=(65535-100)%256; //定時0.1ms
ET0=1;
EA=1;
TR0=1;
}                                                     
void main()
{
if(open==0)
{
// Robot_Walk();//循跡過程中的齊步走動作
  init();
  ENA=1;
  ENB=1;
  ENC=1;
  END=1;

  IN1=0;
  IN2=1;
  IN3=0;
  IN4=1;

  IN5=1;
  IN6=0;
  IN7=1;
  IN8=0;
  
  PWM1=25;  
  PWM2=25;
  PWM3=25;  
  PWM4=25;
  
  delay(500);
   
  while(1)
  {
   if(left==0 && centre==0 && right==0)k=1;
   if(left==0 && centre==0 && right==1)k=2;//偏右,左移
   if(left==0 && centre==1 && right==0)k=3;
   if(left==0 && centre==1 && right==1)k=4;//偏右,左移
   if(left==1 && centre==0 && right==0)k=5;//偏左,右移
   if(left==1 && centre==0 && right==1)k=6;//直行
   if(left==1 && centre==1 && right==0)k=7;//偏左,右移
   if(left==1 && centre==1 && right==1)k=8;//停止
   
   switch(k)
   {
    case 2:
     PWM1=PWM2=80;
     PWM3=PWM4=10;
     break;
    case 4:
     PWM1=PWM2=80;
     PWM3=PWM4=10;
     break;
    case 5:
     PWM1=PWM2=10;
     PWM3=PWM4=80;
     break;
    case 7:
     PWM1=PWM2=10;
     PWM3=PWM4=80;
     break;
    case 6:
     PWM1=PWM2=PWM3=PWM4=50;
     break;
    case 8:
     PWM1=PWM2=PWM3=PWM4=0;
     break;
    default:
     PWM1=PWM2=PWM3=PWM4=30;
     break;
   }
  }
}
else
{
  ENA=ENB=ENC=END=0;
}
}
/*中斷服務程序*/
void Timer() interrupt 1
{
    TR0=0;//賦初值時,關閉定時器
    TH0=(65536-100)/256;//賦初值定時
    TL0=(65536-100)%256;//0.1ms
    TR0=1;//打開定時器
    t++;
if(t>=100)
  t=0;
    if(t<=PWM1)
     ENA=1;
else
  ENA=0;
if(t<=PWM2)
  ENB=1;
else
  ENB=0;
if(t<=PWM3)
  ENC=1;
else
  ENC=0;
if(t<=PWM4)
  END=1;
else
  END=0;
}

作者: 吳昊浪    時間: 2018-12-23 11:04
可以的,謝謝




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1