魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制(2)
时间:2017-07-22 22:02来源:数码之家 作者:在线2545889167 点击:
次
下载的时候这样勾选,时钟选最低的,能多低选多低,对精度没有要求 代码。。。注释够详细了吧 复制代码 #include STC15F2K60S2.H stc15w201s #include intrins.h sbit power_ctrl=P5^4; sbit hold_ctrl=P5^5; sbit
下载的时候这样勾选,时钟选最低的,能多低选多低,对精度没有要求
![魔改UT33D万用表--锂电供电+自动休眠+摇晃唤醒+背光控制](/uploads/allimg/170722/2204112246-41.jpg?42)
代码。。。注释够详细了吧
复制代码
-
#include <STC15F2K60S2.H>
-
stc15w201s
-
-
#include "intrins.h"
-
sbit power_ctrl=P5^4;
-
sbit hold_ctrl=P5^5;
-
sbit key1=P3^3;//震动开关
-
sbit key2=P3^2;//按键(点动背光键)短按hold,长按开启背光
-
sbit led_ctrl=P3^1;//背光
-
//一个时间基数约为125ms//
-
#define power_on_time 2400 //5min
-
#define system_on_time 14400 //30min
-
#define light_on_time 40 //5s
-
unsigned long int power_on=power_on_time;//开机时间
-
unsigned long int system_on=system_on_time;//系统待机时间
-
unsigned int light_key_hold_time=0;//灯按键的保持时间
-
unsigned long int light_time=0;//亮灯时间
-
-
void Delay_ms(unsigned int time) //@6.000MHz
-
{
-
unsigned char i, j;
-
while(time--)
-
{
-
i = 6;
-
j = 211;
-
do
-
{
-
while (--j);
-
} while (--i);
-
}
-
}
-
-
-
void main()
-
{
-
CLK_DIV=CLK_DIV|0x07;//128分频
-
led_ctrl=0;
-
P3M1|=0x02;
-
P3M0&=0xfd;//高阻
-
hold_ctrl=0;
-
-
Delay_ms(10);
-
-
//WKTCL = 49; //488us*(49+1) = 24.4ms
-
//WKTCH = 0x80; //开掉电定时器
-
-
-
INT_CLKO |= 0x40;//开中断4
-
EA = 1;
-
EX1 = 1;//开中断1,震动开关
-
IT1 = 1;//仅下降沿
-
-
EX0 = 1;//开中断0,点动开关
-
IT0 = 1;//仅下降沿
-
-
while(1)
-
{
-
if(light_key_hold_time)
-
{
-
WKTCL = 0x09; //488us*(9+1) = 4.8ms
-
WKTCH = 0x80; //开掉电定时器 每隔4.8ms检测一次按键。检测之间掉电休眠
-
light_key_hold_time++;
-
if(light_key_hold_time==65535)light_key_hold_time=101;
(责任编辑:admin)
|
织梦二维码生成器
------分隔线----------------------------