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

📄 main.c

📁 从零开始学51单片机源代码
💻 C
字号:
#include "fun.h"   
				  
void  Timer0_interrupt() interrupt 1
{ 
	//以下通过剩余步数来判断电机处于运行过程中的哪个阶段 
	if (step > (1000 - 64) ) //加速阶段 
	{
	  //切换到高一级转速
	  TH0 = speedtable[1000-step] >>8;
	  TL0 = speedtable[1000-step]; 
	} 	
	else if (step < (1000 - 64) && step > 64) //匀速阶段 
	{
	//保持最高转速 
	  TH0 = speedtable[63] >>8;
	  TL0 = speedtable[63];	  
	}
	else if (step < 64 && step >0) //减速阶段
	{
	 //切换到低一级转速 
	  TH0 = speedtable[step] >>8;
	  TL0 = speedtable[step]; 
	}
	else
	{
	 //其它情况停机 
	 //关定时器,关PWM,恢复运行锁,步数清零 
	 TH0 = speedtable[0] >>8;
	 TL0 = speedtable[0];
	 TR0=0;
	 CR=0;
	 run_flag=0;
	 step=0;
	 en = 0;
	}

	step--;//步数减1
}

main()
{
	ms_delay(20);	

	init_port();
	init_timer0();	
	init_pca();

	EA = 1;//开总中断  
	
	s1=1;
	s2=1;
	run_flag = 0;
	en = 0;
	dir=1;
	step = 0; 

	while(1)
	{
	 	if (run_flag == 0) //只有在电机停止的时候才接受操作 
		{
			if (s1 == 0)//正转按钮 
			{
				ms_delay(10);
				if (s1 ==0)	   //启动电机正转 
				{
				 	dir = 1;
					en=1;
					step = 1000;//设置5圈1000步 
					run_flag=1;//设置电机运转锁 
					CR = 1;	//	启动PWM
					//设定T0溢出频率 
					TH0 = speedtable[0] >>8;
					TL0 = speedtable[0];
					TR0=1;//启动定时器0 
				}
			}

			if (s2 == 0)//反转按钮 
			{
				ms_delay(10);
				if (s2 ==0)	  //启动电机反转 
				{
				 	dir = 0;
					en = 1;
					step = 1000;//设置5圈1000步 
					run_flag=1;//设置电机运转锁 
					CR = 1;	//	启动PWM
					//设定T0溢出频率 
					TH0 = speedtable[0] >>8;
					TL0 = speedtable[0];
					TR0=1;//启动定时器0 
				}
			}
		}
	}
}

⌨️ 快捷键说明

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