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

📄 door.c

📁 单片机实用技术与开发
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#define uchar unsigned char
sbit gate=P2^0; 			/*0-门开状态;1-门关状态*/
bit direct; 				/*设置电机正反转标志,0-正转;1-反转*/
sbit moto1=P1^2;
sbit moto2=P1^3;			/*10-正转;01-反转*/

uchar astring[];
uchar i;
uchar record;

/*主程序,定义中断源和串口工作方式。*/
void main (void)
{	
	EA=1;  				/*开INT0的中断源和决定中断方式
	EX0=1;
	IT0=1;
	TMOD=0x20;			/*在11.0592MHz晶振下,设置串行口9600数据传输率,方式3*/
	TL1=0xfd;TH1=0xfd; 
	SCON=0xd8;PCON=0x00; 		/*串口接收字符RI置位,允许串口接收*/
	TR1=1;
	for (;;)
	{	
		gate=1; 		/*依据活动门的状态决定开关按下时活动门的动作*/
		if (gate) direct=0;
		else direct=1;		
	}		
}

/*外中断0的服务程序,判断电机转动方向*/
void int0svr (void) interrupt 0 using 1
{	
if (direct)
	{	
		moto1=0;
		moto2=1;
	}
	else 
	{	
		moto1=1;
		moto2=0;
	}	
}

serial () interrupt 4 using 1	
{	
	RI=0; 			/*软件清楚中断标志位*/

	if (SBUF==0x24)
	{
	record=1;
	i=0;
	astring[i]=0; 		/*记录数据字符数量的变量*/
	}

	if (record==1)  	/*开始处理数据信息*/
	{	
	astring [i]=SBUF;
	i++;

	/*判断是否收到字符"*",如果收到则结束记录,开始处理。*/
		if (SBUF=='*')	
		{
		astring [i]='\0';   	/*给出结束数据字符串的结束符*/
		record=0;
		if (astring=="#1,CW")
			{	
			moto1=0;
			moto2=1;
			}
		}
	}
}

⌨️ 快捷键说明

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