📄 main.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 + -