|
|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 枫飞秋语 于 2021-8-22 00:47 编辑
以前1元撸了一个充电的喷雾补水仪闲置,现在想利用改成喷香器,开关连续按两次为启动,按一次关闭,想改为10分钟启动一次10秒后关闭,不需要很精准,自己乱写了个延时代码,突然想到电池耐不耐用,一查,单片机工作电流20ma左右,这样没多久电就耗光了,恰巧发现单片机有个极限省电模式,掉电模式,,自己试验了下,进入掉电后,无法唤醒了。。求高手指点这是普通延时代码
- #include <REG51.H>
- #include <intrins.h>
- sbit LED1=P3^3;
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- _nop_();
- _nop_();
- i = 22;
- j = 3;
- k = 227;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void DelayMs(unsigned int n)
- {
- do
- {
- Delay500ms();
- }while(n--);
- }
- void main()
- {
- LED1=1;
- while(1)
- {
- DelayMs(2);
- LED1=0;
- DelayMs(1);
- LED1=1;
- DelayMs(1);
- LED1=0;
- DelayMs(1);
- LED1=1;
- DelayMs(2);
- LED1=0;
- DelayMs(1);
- LED1=1;
- }
- }
复制代码 这是尝试修改的掉电延时代码,睡了之后,醒不过来了。。。。- #include "reg51.h"
- #include "intrins.h"
- sfr WKTCL=0xAA;
- sfr WKTCH=0xAB;
- sbit LED1=P3^3;
- void Delay1ms() //@11.0592MHz
- {
- unsigned char i, j;
- _nop_();
- _nop_();
- _nop_();
- i = 11;
- j = 190;
- do
- {
- while (--j);
- } while (--i);
- }
- void Delayms(unsigned int n)
- {
- do
- {
- Delay1ms();
- }while(n--);
- }
- void main()
- {
- unsigned char i;
- WKTCL = 49; //488us*(49+1) = 24.4ms
- WKTCH = 0x80;
- LED1=1;
- while(1)
- {
- i=2;
- while(i--)
- {
- PCON = 0x02;
- _nop_();
- _nop_();
- }
- LED1=0;
- Delayms(100);
- LED1=1;
- Delayms(100);
- LED1=0;
- Delayms(100);
- LED1=1;
- Delayms(500);
- LED1=0;
- Delayms(100);
- LED1=1;
- }
- }
复制代码
|
|