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

📄 can

📁 can通信源码
💻
字号:
/*?#include<reg51.h>
 #define uchar unsigned char
 #define uint unsigned  int
	uchar k,a,PWMON=5,CYCLE;
					

  sbit in1=P1^1;
  sbit in2=P1^0;
  sbit W=P1^2;//L298使能端
void delay(unsigned int cnt)
{
 while(--cnt);
}

void init()
{  TMOD =0x01;
TH0=(65536-100)/256; 
TL0=(65536-100)%256;
IE= 0x82;  
TR0=1;
IT0=1;
EX0=1;
CYCLE = 10;
 }

  void jiasu()//加速
 {	 if(PWMON!=CYCLE)
	{ 
	PWMON++;
	delay(1);
	}
 
 }


 



   void jiansu()//减速
 {	
 if(PWMON!=0)
  {PWMON--;
  delay(1);
  }
 }


void zhengzhuan()
{
in1=0;
 in2=1;
}


void fanzhuan()
{
in1=1;
 in2=0;
}

void tizhi()
{in1=1;
 in2=1;
 
}


	 void key()
  {	
  P2=0xff;
  k=P2;
  if(k!=0xff)
  {	delay(1000);
	if((k&0xff)!=0xff)
	{ a=k&0xff;
	 switch(a)
	 {case 0xfe:
	 zhengzhuan();break;//正转
	 case 0xfd:
	 fanzhuan();break;//反转
	 case 0xfb:
	 jiasu();break;//停止
	 case 0xf7:
	 jiasu();break;//加速
	 case 0xef:
	 tizhi();break;//减速
	 }
	 }
   } 
   }



void main()
{init();
while(1)
  key()	;

}






void tim(void) interrupt 1 using 1
{
 unsigned char count; 
TH0=(65536-100)/256; 
TL0=(65536-100)%256;

if(count==PWMON)
    {
    W = 0; 
    }
  count++;
if(count== CYCLE)
    {
    count=0;
	if(PWMON!=0) 
	   W=1;

    }

} */

  #include<reg52.h>

 #define V_TH0  0XFF                  
#define V_TL0  0XF6                  
#define V_TMOD 0X01
 sbit in1=P1^1;
  sbit in2=P1^0;
   sbit a=P1^2;
	 sbit b=P1^4;

	  sbit c=P1^5;
               

void init_sys(void);            /*系统初始化函数*/ 
void Delay5Ms(void); 

unsigned char ZKB1,ZKB2; 

void main (void) 
{ 
init_sys();

 in1=0;
 in2=1;
  ZKB1=40;            /*占空比初始值设定*/ 
  ZKB2=60;            /*占空比初始值设定*/ 
  while(1) 
  { 
       if (!b) //如果按了+键,增加占空比 
      { 
       Delay5Ms(); 
       if (!b) 
         { 
         ZKB1++; 
         ZKB2=100-ZKB1; 
         } 
      } 

       if (!c) //如果按了-键,减少占空比 
      { 
       Delay5Ms(); 
       if (!c) 
         { 
         ZKB1--; 
         ZKB2=100-ZKB1; 
         } 
      } 
/*对占空比值限定范围*/ 
if (ZKB1>99) ZKB1=1; 
if (ZKB1<1) ZKB1=99; 
 
  }
  

   
} 


/****************************************************** 
*函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/ 
void init_sys(void)            /*系统初始化函数*/ 
{ 
  /*定时器初始化*/ 
  TMOD=V_TMOD; 
  TH0=V_TH0; 
  TL0=V_TL0; 
  TR0=1; 
  ET0=1; 
  EA=1; 
} 


//延时 
void Delay5Ms(void) 
{ 
unsigned int TempCyc = 1000; 
while(TempCyc--); 
} 

/*中断函数*/ 
void timer0(void) interrupt 1 
{ 
static unsigned char click=0;                  /*中断次数计数器变量*/ 
TH0=V_TH0;                                    /*恢复定时器初始值*/ 
TL0=V_TL0; 
++click; 
if (click>=100) click=0; 

if (click<=ZKB1)      /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/ 
a=0; 
else 
a=1; 

if (click<=ZKB2)                        
  a=0; 
else 
a=1; 

}


 

⌨️ 快捷键说明

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