⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 小车走黑白线程序
💻 C
字号:
/*********************Copyright (c)************************************************************************
**--------------文件信息------------------------------------------------------
**文   件   名: 黑白线
**创   建   人: 黄海明
**最后修改日期: 2008年10月10日

**--------------历史版本信息--------------------------------------------------
** 创建人: 黄海明
** 版  本: 1.0
** 日 期: 2008年10月10日
** 描 述: 原始版本 
***********************************************************************************************************/


#include<reg52.h>
#include<math.h>

#define uchar unsigned char
#define uint  unsigned int

 sbit signal0  = P0^2;
 sbit signal1  = P0^5;
 sbit a0 = P0^0;
 sbit a1 = P0^1;
 sbit b0 = P0^3;
 sbit b1 = P0^4;
 sbit buzzer=P2^2;

 uchar state0 = 0;
 uchar n0 =0 ;
 uchar TH0Data1 = 0, TH0Data2 = 0;
 uchar TL0Data1 = 0, TL0Data2 = 0;	 //, enable0 = 0
 uint  pulseWidth0 = 0;

 uchar state1 = 0;
 uchar n1 =0 ;
 uchar TH1Data1 = 0, TH1Data2 = 0;
 uchar TL1Data1 = 0, TL1Data2 = 0;	//	, enable1 = 0
 uint  pulseWidth1 = 0;

//uchar key=0;

  bit flag0=0;
  bit flag1=0;


//---------------------延时------------------------
void delay1ms(uint time)  //11.0592M晶振 1ms
{
  uint i;
  uchar j;
 for (i=0;i<time;i++)
 { 
   j=147;
   while(j--);
 } 	
}

////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////
 void Calculate0()
{
   TH0Data1 = (65536 - pulseWidth0) / 256;
   TL0Data1 = (65536 - pulseWidth0) % 256;
   TH0Data2 = (47119 + pulseWidth0) / 256;
   TL0Data2 = (47119 + pulseWidth0) % 256;
   TH0 = TH0Data1;
   TL0 = TL0Data1;
}

/////////////////////////////////////////////////////////////
 void Calculate1()
{
   TH1Data1 = (65536 - pulseWidth1) / 256;
   TL1Data1 = (65536 - pulseWidth1) % 256;
   TH1Data2 = (47119 + pulseWidth1) / 256;
   TL1Data2 = (47119 + pulseWidth1) % 256;
   TH1 = TH1Data1;
   TL1 = TL1Data1;
}

//////////////////////////////////////////////////
   void T0init()
{  
   signal0 = 0;
   TMOD |= 0x01;		//16位模式
   ET0 = 1;
   pulseWidth0 = 10000;	 //脉宽初值xx us
   Calculate0();
   EA =1;  
   state0 = 1;
 }
 //////////////////////////////////////////////////
   void T1init()
{  
   signal1 = 0;
   TMOD |= 0x10;	  //16位模式
   ET1 = 1;
   pulseWidth1 = 10000;	 //脉宽初值xx us
   Calculate1();
   EA =1;  
   state1 = 1;
 }
/////////////////////////////////////////////////////
void int0() interrupt 0 using 0
{
 flag0=1;

}

/////////////////////////////////////////////////////
void int1() interrupt 2 using 2
{
 
 flag1=1;

}

////////////////////////////////////////
  void Timer0() interrupt 1 using 1
 
{  
  signal0 = ~signal0 ; 
  if( state0 == 0)
  {
   
   TH0 = TH0Data1;
   TL0 = TL0Data1;
 
   state0 =1;
   n0++;
   }
   else if(state0 == 1)
   {
     TH0 = TH0Data2;
	 TL0 = TL0Data2;
	 state0 = 0;
	}
   
}
 ////////////////////////////////////////
  void Timer1() interrupt 3 using 3
 
{
  signal1 = ~signal1 ; 
  if( state1 == 0)
  {
   
   TH1 = TH1Data1;
   TL1 = TL1Data1;
 
   state1 =1;
   n1++;
   }
   else if(state1 == 1)
   {
     TH1 = TH1Data2;
	 TL1 = TL1Data2;
	 state1 = 0;
	}
   
}
  
/////////////////////////////////////////////////
void zuo(uint time)
{
 a0=a1;	
// buzzer=0;  
 delay1ms(time);
 a0=0;
 a1=1;
 flag0=0;
 buzzer=1;
}  

///////////////////////////////////////////////
void you(uint time)
{
 b0=b1;
// buzzer=0;
 delay1ms(time);
 b0=1;
 b1=0;
 flag1=0;
 buzzer=1;
}  
	  	  
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
void main(void)
{	
    uchar i=0; 

   T0init();
   TR0 = 1;	   //定时计数器控制位,1工作,0停止工作
   signal0 = 1;

   T1init();
   TR1 = 1;
   signal1 = 1;

   EX0=1;
   EX1=1;
   IT0=0;
   IT1=0;

   a0=0;
   a1=1;
   b0=1;
   b1=0;
   buzzer=1;

   pulseWidth0 =10000;
   Calculate0();
   pulseWidth1 =10000;
   Calculate1();

   while(1)
   {
	 if(flag0==1)
	 {
	  EX0=0;
	  zuo(800);
	  EX0=1;
	 }
    
	 if(flag1==1)
	 {
	  EX1=0;
	  you(800);
	  EX1=1;
	 }
   }



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -