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

📄 main.c

📁 监控行业车辆检测器源代码
💻 C
字号:

#include "STC12C5410AD.h"
#include "app.h"
#include <string.h>
#include <stdio.h>
#include <INTRINS.H>
#include <MATH.H>


extern void SystemInit(void);

extern void delay_n_ms( unsigned int n_milisecond) ;


extern unsigned char UartBuffer[20];
extern unsigned char uartflag;	 // 接收完成一帧标志以及接收了多少字节;


extern void UartPrintOut(unsigned char  *pData,unsigned char size);
extern void UartPrintOutByte(unsigned char byte);

extern bit FLAG;


extern  unsigned int  MainCount;
extern unsigned char getkey();
extern  unsigned int  SaveFos ;

// 注意在应用程序中不要使用printf函数,因为它运行时间长,并且会关闭中断;
// 记得吧9012换成MMBT4403 开关三极管
 unsigned char KEY=0;
main()

{   
    delay_n_ms(1000); 
	

    SystemInit();	//系统初始化

	EA = 1 ;  

	RED_LED = 0;
	GREEN_LED = 1;
  
	WDT_CONTR = 0x3c;      //使能看门狗	 ,1.25S

 	while(!FLAG);
	FLAG =0;

	SaveFos = MainCount ;
	MainCount =0;

	RED_LED = 1;

	TR0 = 1;
	EX0 = 1;	   //启动外部中断

	while(1)
	{
	    WDT_CONTR = 0x3c;      //使能看门狗	 ,1.25S
//		
       
		if(FLAG)
		 {
			FLAG =0;


		    UartPrintOutByte(0XAA);
			// 开定时器0
	
	        UartPrintOutByte(SaveFos>>8);
		    UartPrintOutByte(SaveFos&0x00ff);

			UartPrintOutByte(MainCount>>8);
			UartPrintOutByte(MainCount&0x00ff);

			KEY = getkey();
//		    UartPrintOutByte(KEY);

			// 说明没有连接上地感线圈
			if( (MainCount>100)&&(MainCount<400) )
			{
				RED_LED = ~	RED_LED;
				delay_n_ms(1500);
			}
		switch(KEY)
			{
			  case 0x09:
			       if(abs(MainCount-SaveFos)>5)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				   			     				      
			        }
					else
					{
					   RED_LED = 1;
					   GREEN_LED = 0;
					   OPEN = 1;
					}
				   delay_n_ms(100);
			       break;
			  case 0x08:
			       if(abs(MainCount-SaveFos)>10)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					   RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  case 0x07:
			       if(abs(MainCount-SaveFos)>20)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					   RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  case 0x06:
			       if(abs(MainCount-SaveFos)>40)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					   RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  case 0x05:
			       if(abs(MainCount-SaveFos)>80)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					   RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  case 0x04:
			       if(abs(MainCount-SaveFos)>120)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					   RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  case 0x03:
			       if(abs(MainCount-SaveFos)>180)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					   RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  case 0x02:
			       if(abs(MainCount-SaveFos)>250)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					   RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  case 0x01:
			       if(abs(MainCount-SaveFos)>320)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					  RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  case 0x00:
			       if(abs(MainCount-SaveFos)>450)
		          	{
				      RED_LED = 0;
					  GREEN_LED = 1;
					  OPEN = 0;
				      
			        }
					else
					{
					   RED_LED = 1;
					  GREEN_LED = 0;
					  OPEN = 1;
					}
					delay_n_ms(100);
			       break;
			  default:break;	
			}
		    TH0 = 0xdb;
	        TL0 = 0xe0;
            TR0 = 1;
			EX0 = 1;	   //启动外部中断
			ET0 = 1;
		
		 }
	
	};

}

⌨️ 快捷键说明

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