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

📄 main.c

📁 车库的接受和发送代码
💻 C
字号:
#include <reg767.h>
#include "mydefine.h"

#define UP_RELAY    P1_7
#define DOWN_RELAY 	P1_6
#define LIGHT_RELAY INT1
#define BUZZER      X1
#define UP_LIMIT    _CMP2
#define DOWN_LIMIT  _CIN2B

extern unsigned char Command;
extern unsigned int  Time;
extern unsigned char Current_ad;
extern unsigned char Light_Ray_ad;


unsigned char Work_Status=DOOR_STOP;
//***********************************************************************
//				 delay
//***********************************************************************
void delay(void)
{
   unsigned int i;
   for(i=0;i<10000;i++);

}
//**********************************************************************
//			   feed watchdog
//**********************************************************************
void  Feed_Wwatchdog(void)
{
  WDRST = 0x1e;
  WDRST = 0xe1;
}
//**********************************************************************
//			   init
//**********************************************************************
void init(void)
{
	
    SCON =0x50;								/*设置串口发送模式1*/

    PCON =0x00;							
	TMOD =0x21;

	TH1  =0xf3;                             /*波特率为1250BIT/S*/
	TL1	 =0xf3;                       

	TL0  =0xb0;
	TH0  =0x3c;

    TR1  =1;                                /*打开定时器1*/
	TR0  =1;

	IEN0 = 0x92;
 
    PT0AD=0x18;        									//设置AD转换接口为输入方式

    P0M1=0x8e;	 //1111 1110
    P0M2=0x01;   //0000 0001

    P1M1  = 0x20;//0010 0000 
    P1M2  = 0xdc;//1101 1100 

    P2M1  = 0x00;//0000 0000
    P2M2  = 0x03;//0000 0011



    ENADC=1;
 	delay();
    WDCON = 0x16;
}
//**********************************************************************
//			   Do_With_Command
//**********************************************************************
void Do_With_Command(void)
{
//_______________________Door_Contral________________________
    switch(Work_Status)
	{
	case  DOOR_STOP:
			    if(Command&&UP)	  
				{
					if(UP_LIMIT!=0)Work_Status=DOOR_UP;
					Command=0;
				};
			    if(Command&&DOWN)
				{
					if(DOWN_LIMIT!=0)Work_Status=DOOR_DOWN;
					Command=0;
				};
				break;
	case  DOOR_UP:

			    if(Current_ad>CURRENT_LIMIT)Work_Status=DOOR_STOP;
				if(UP_LIMIT==0)
				{
				    Work_Status=DOOR_STOP;
					if(Light_Ray_ad>LIGHT_LIMIT)
					{
					   Time=0; //开灯
					};
				};
 			    if(Command&&DOWN)
				{
					Work_Status=DOOR_STOP;
					Command=0;
				};
 			    if(Command&&UP)	  
				{
					Command=0;
				};
				break;
	case  DOOR_DOWN:

			    if(Current_ad>CURRENT_LIMIT)Work_Status=DOOR_STOP;
				if(DOWN_LIMIT==0)
				{
				    Work_Status=DOOR_STOP;
					if(Light_Ray_ad>LIGHT_LIMIT)
					{
					   Time=0; //开灯
					};
				};
			    if(Command&&UP)
				{
					Work_Status=DOOR_STOP;
					Command=0;
				};
 			    if(Command&&DOWN)
				{
					Command=0;
				};
				break;
	default: Work_Status=DOOR_STOP;
	};
//_______________________Door Command_out_____________________________
    switch(Work_Status)
	{
	case  DOOR_STOP:
				UP_RELAY  =1;
				DOWN_RELAY=1;
				break;
	case  DOOR_UP:
				UP_RELAY  =0;
				DOWN_RELAY=1;
				break;
	case  DOOR_DOWN:
				UP_RELAY  =1;
				DOWN_RELAY=0;
				break;
	};
//_______________________Light_Contral________________________

  if((Command&&LIGHT_ON))
  {
	  Time=0;
	  Command=0;

  };
  if(Command&&LIGHT_OFF)
  {
	  Time=LIGHT_DELAY;
	  Command=0;
  };
//_______________________Light_Contral out________________________

  if(Time<LIGHT_DELAY)
      LIGHT_RELAY=0;
  else
      LIGHT_RELAY=1;
}
//***************************************************************************
//		                main
//***************************************************************************
main()
{
  init();
  for(;;)
  {
  		Feed_Wwatchdog();
		Do_With_Command();

  };


}

⌨️ 快捷键说明

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