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

📄 step heixian_buhao.c

📁 基于51单片机或者ARM2131的电子小车的设计
💻 C
字号:
//有变速//中断扩展
#include "reg51.h"
#define uchar unsigned char 
#define uint unsigned  int

sbit STK_CP1=P1^3;
sbit STK_DIR1=P1^2;

sbit STK_CP2=P1^1;
sbit STK_DIR2=P1^0;

sbit p14=P1^4;
sbit p15=P1^5;

sbit p32=P3^2;
sbit p33=P3^3;

bit  	youzhuan=0,zuozhuan=0;
uchar 	n;			//转度
#define N 250		//5/4
uchar  	heixian=0;	// 黑线数
bit     biansu=0;
uint  	T00,T11;	//定时变量
	
void time0() interrupt 1	//电机1
{	if(youzhuan==1)
		{	TR0=0; 
			TH0=(63536-T00)>>8; 	TL0=(63536-T00)%256;  //x-2ms
			TR0=1;
			n++;
			if(n==N)	
				{	n=0;
					youzhuan=0;				
				}
		}
	else
		{	TR0=0; 
			TH0=(65536-T00)>>8; 	TL0=(65536-T00)%256;  //xms
			TR0=1;
		}					
	STK_CP1=~STK_CP1;
}

void time1() interrupt 3	//电机2
{	if(zuozhuan==1)
		{	TR1=0; 
			TH1=(63536-T11)>>8; 	TL1=(63536-T11)%256;  //-2ms
			TR1=1;
			n++;
			if(n==N)
				{	n=0;
					zuozhuan=0;				
				}
		}
	
	else
		{	TR1=0; 
			TH1=(65536-T11)>>8; 	TL1=(65536-T11)%256;  //xms
			TR1=1;
		}					
	STK_CP2=~STK_CP2;
}

void int0() interrupt 0		//变速
{	heixian++;
}

void int1() interrupt 2	
{	if( (p14==0) && (p15!=0) )		//不能同时为低
		{	youzhuan=1;	
			zuozhuan=0;
			n=0;	
		}
	else if( (p14!=0) && (p15==0) )		//不能同时为低
		{	youzhuan=0;
			n=0;
			zuozhuan=1;
		}
	else if( (p14==0) && (p15==0) )	
	 	{	
			youzhuan=0;	
			zuozhuan=0;
			n=0;
		 }
}

main()
{	EA=0;
	TMOD=0x11;
	T00=4000;
	TH0=(65536-T00)>>8; 	TL0=(65536-T00)%256;  //4ms	//中速
	TR0=1; 		ET0=1;

	T11=4000;
	TH1=(65536-T11)>>8; 	TL1=(65536-T11)%256;  //4ms //中速
	TR1=1; 		ET1=1;
	
	IT0=1;		EX0=1;		PX0=1;
	IT1=1;		EX1=1;		PX1=1;
	EA=1;
	STK_DIR1=0;
	STK_DIR2=1;
		while(1)
		{	TR0=1; TR1=1;
			if(biansu==1)
				{	switch(heixian)
						{	case 1:	T00=5000;
									T11=5000;	break;	//慢速//5ms
							case 2:	T00=3000;
									T11=3000;	break;	//加速//3ms
							case 3:	T00=4000;
									T11=4000;	break;	//爬坡//4ms
							case 4:	//zanting=1;
									//TR1=0;	
									//zuozhuan=0;	youzhuan=0;	n=0;
												break;	//坡上暂停2S
							case 5:	T00=5000;
									T11=5000;	break;	//到顶减速//5ms
							case 6:	//TR0=0; TR1=0; 
												break;	//停
							default:			break;
					   	}
						biansu=0;
				}
	 	}		
}

⌨️ 快捷键说明

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