找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1063|回复: 36
收起左侧

求个手电 断电时长判断的单片机代码可以吗?

  [复制链接]
ID:161164 发表于 2024-8-12 10:30 | 显示全部楼层
如果要测关机时间就要加电容电阻来检测掉电时间
上电时引脚输入模式,检测电容电平,
检测完后引脚转为输出模式对电容充电
电容并联一个电阻来让电容在关电时放电
回复

使用道具 举报

ID:161164 发表于 2024-8-13 11:30 | 显示全部楼层
vb2002 发表于 2024-8-13 10:01
能否提供一份代码?
我做的另一个手电是 要开机3秒才能判定是否eeprom保存
  1. sbit CAP = P3^2;
  2. u8 mode = 0;
  3. void main()
  4. {
  5.         mode = IapRead(EEPromAddr);
  6.         if(CAP)
  7.         {
  8.                 mode++;
  9.                 if(mode>=4)mode=0;
  10.                 IapProgram(EEPromAddr,mode);
  11.         }
  12.         P3M0 = 0x04; P3M1 = 0x00; //P32推挽输出对电容充电

  13.         switch (mode)
  14.         {
  15.                 case 0:
  16.                         break;
  17.                 case 1:
  18.                         break;
  19.                 case 2:
  20.                         break;
  21.                 case 3:
  22.                         break;
  23.                 default:
  24.                         break;
  25.         }
  26.     while (1)
  27.     {
  28.         }
  29. }
复制代码
回复

使用道具 举报

ID:161164 发表于 2024-8-20 14:22 | 显示全部楼层
vb2002 发表于 2024-8-20 10:42
手电开关有两种.
你说的那种是电子开关的.可以长期不断电.不设计eeprom也可以保存档位
我说的这个是机 ...

试了我的代码了吗?
回复

使用道具 举报

ID:161164 发表于 2024-8-20 17:13 | 显示全部楼层
vb2002 发表于 2024-8-20 16:42
试了,试出来就是普通的eeprom读写switch里面的循环.
没有加电容实现不了那个半按..

为啥不加电容?
回复

使用道具 举报

ID:161164 发表于 2024-8-21 11:11 | 显示全部楼层
vb2002 发表于 2024-8-20 18:47
这个是我的代码, 现在可以变相换挡和保存的 ..电路图是这个,电容直接替换那个0.1uf吗?

我的代码是检测P32脚电容的电平来判断掉电时间的
回复

使用道具 举报

ID:161164 发表于 2024-8-22 09:20 | 显示全部楼层
vb2002 发表于 2024-8-21 22:01
按您的代码现在一直是亮度5,可以点亮
但是不能换挡. 能帮看看吗?  是我没有上真机实验吗? 我用的开发板 ...

我那个只是示范,你还要加上之前的EEPRom循环读写的代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表