📄 newdetector_v10.c
字号:
//**********************************************************
//** 主程序 **
//** 单片机: STC12C5410AD 主频: 24MHz **
//** Jumping <2008.04.20> **
//**********************************************************
//#include <REGx051.H> // AT89C4051头文件
#include "../inc/STC12C5410AD.H" // AT89C4051头文件
#include "def.h" // 类型定义文件
#include "config.h" // 参数配置头文件
#include "uart.h" // uart通讯程序头文件
#include "time0.h" // 定时器0中断程序
#include "IIC.h" // IIC驱动程序头文件
//#include "pwm.h" // pwm头文件
// *** 全局变量定义 ***
INT data curt_brit; // 当前亮度
uchar data idval;//for test
// *** 函数声明 ***
void delay_10ms (uchar count);
/*******************************************************************************
* 名 称: InitSys
* 功 能: 系统初始化
* 入口参数: 无
* 出口参数: 无
*******************************************************************************/
void InitSys(void)
{
EA=0;
P1=0XFF;
P3=0XFF;
DRE=0; //RS485 处于收状态
Set_clk_div(IDLE_CLK_DIV_BY_1); //设置时钟分频
SET_T0_DIV_BY_12; //设置T0的速度0=12T
SET_T1_DIV_BY_12; //设置T1的速度0=12T
SET_UART_M0DIV_BY_12; //设置uart模式0的速度。0,12t速度。1是2t速度。
DISABLE_ADC_INT; //ADC接口中断取消
DISABLE_SPI_INT ; //SPI接口中断取消
//p1.1-SCL P1.2-SDA P3.3 TO OC OUT
set_p1_mode(0x06,0x06); //设置P1端口输出模式 00-标准I/o | 01-推挽 | 00-输入 | 00-开漏
set_p3_mode(0x08,0x08); //设置P3端口输出模式 00-标准I/o | 01-推挽 | 00-输入 | 00-开漏
// WDT_DISABLE; //看门狗取消
WDT_CONTR=0x3d; //看门狗打开2.23s
DISABLE_LVD_INT; //低电压中断取消
curt_brit=50; //初始化照度值50Lux
uart_init(); // 初始化串口
timer0_init(); // 定时器0初始化
InitTsl256x(); // 初始化Tsl2561
EA=1;
}
/*******************************************************************************
* 名 称: main
* 功 能: 主程序
* 入口参数: 无
* 出口参数: 无
*******************************************************************************/
void main (void)
{
LED = 0; // 开LED
WDT_CONTR=0x3d; //看门狗打开2.23s
delay_10ms(50); // 延时500mS
WDT_CONTR=0x3d; //看门狗打开2.23s
InitSys(); //系统初始化
WDT_CONTR=0x3d; //看门狗打开2.23s
// LED = 0;
//while(3!=TSL2561_read_byte(REG_CTR)) //write 03 to 00Reg and read the 00Reg val Must be 03!Then is OK!!
//i=CalculateLux(1,2,9999,516,0);
EA = 1; // 开中断
REN = 1; // 允许UART接收
link_cont=0;
while (1) // 主循环
{
if(link_cont>500) //RS485连接超时(10Ms*500)灯具输出全亮!
{
if(ccctmp>=100)//(10Ms*200)
{
ccctmp=0;
LED=0;
delay_10ms(10);
LED=1;
delay_10ms(100);
LED=0;
delay_10ms(10);
LED=1;
}
if(ccctmp>50)
{
WDT_CONTR=0x3d; //看门狗打开2.23s
}
}else
{
if(ccctmp>300) //RS485连接超时(10Ms*500)灯具输出全亮!
{
ccctmp=0;
curt_brit=GetLux();
}
if(ccctmp>50)
{
WDT_CONTR=0x3d; //看门狗打开2.23s
}
}
}
}
/*******************************************************************************
* 名 称: delay_10ms
* 功 能: 延时10毫秒子程序, a(2b+3)*12/11.0592
* 入口参数: count: 要延时的10mS数
* 出口参数: 无
*******************************************************************************/
void delay_10ms (uchar count)
{
uchar a, b;
for ( ; count!=0; count--)
{
for (a=22; a!=0; a--)
{
for (b=207; b!=0; b--) ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -