找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1381|回復: 0
打印 上一主題 下一主題
收起左側(cè)

循跡程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:290417 發(fā)表于 2018-3-11 15:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
//////////////////////////////////定義/////////////////////////////////////////////

#define uchar unsigned char  無符號字符型
#define uint unsigned int  
uchar t,zz,yz;   //周期 、左占空比、右占空比
sbit int1=P1^0;   //左
sbit int2=P1^1;
sbit int3=P1^2;   //右
sbit int4=P1^3;

sbit zuoled1=P1^4;
sbit youled1=P1^5;
sbit zuoled2=P1^6;
sbit youled2=P1^7;
/////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////功能函數(shù)///////////////////////////////////////

void run()   //直走
{
  int1=1;
  int2=0;
  int3=1;
  int4=0;
}
void stop()   //停
{
  int1=0;
  int2=0;
  int3=0;
  int4=0;
}
void left()   //左轉(zhuǎn)
{
  int1=0;
  int2=0;
  int3=1;
  int4=0;
}
void right()   //右轉(zhuǎn)
{
  int1=1;
  int2=0;
  int3=0;
  int4=0;
}
////////////////////////////////////////延時函數(shù)///////////////////////////////////////////////

void delay(uchar xms)  //參數(shù) xms
{
uchar a,b;
for(a=xms;a>0;a--)
  for(b=110;b>0;b--);
}
//////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////初始化中斷////////////////////////////////////////////////////

void time0()
{
TMOD=0x01;   //定時器0 ,方式1 (16位)
TH0=(65536-100)/256;  //賦初值
TL0=(65536-100)%256;
EA=1;    //中斷總開關(guān)
ET0=1;    //定時器0 開關(guān)
TR0=1;     //定時器0 運行控制位
}
////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////主函數(shù)///////////////////////////////////////////////////////////

void main()
{
time0();   //調(diào)用中斷
delay(10);   //延時
while(1)
{
  if((zuoled1==1)&&(youled1==1)&&(zuoled2==1)&&(youled2==1))
  {
   zz=20;
   yz=20;
   run();
  }
  
  if(zuoled1==0)
  {
   stop();
   delay(1);
   zz=10;
   yz=0;
   right();
   delay(100);
  }
  
  if(youled1==0)
  {
   stop();
   delay(1);
   zz=0;
   yz=10;
   left();
   delay(100);
  }
  
  if(zuoled2==0)
  {
   
   stop();
   delay(1);
   zz=15;
   yz=0;
   right();
   delay(100);
  
  }
  
  if(youled2==0)
  {
   stop();
   delay(1);
   zz=0;
   yz=15;
   left();
   delay(100);
  
  }
  
  if((zuoled1==0)&&(zuoled2==0))
  {
   stop();
   delay(20);
   zz=20;
   yz=0;
   right();
   delay(300);
  
  }

  if((youled1==0)&&(youled2==0))
  {
  
   stop();
   delay(20);
   zz=0;
   yz=20;
   left();
   delay(300);
  
  
  }
  
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
/

///////////////////////////////////////中斷服務(wù)函數(shù)////////////////////////////////////////////////////////

void time_0() interrupt 1
{
t++;    pwm 波周期

if(t<=zz){int1=1;}  左占空比
else int1=0;

if(t<=yz) {int3=1;}  右占空比
else int3=0;

if(t>=50) {t=0;}

TH0=(65536-100)/256;    對256取模  放高8位
TL0=(65536-100)%256;  對256取余  放低8位
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表