unsigned char xdata ADCdataH[10], ADCdataL[10]; unsigned int ADP03,ADP04,ADP07,ADP17; unsigned int tempH,tempL,tempHLD,tempHLI; /****************************************************************************** DS功能: P17=2.5V电压 开机检测一次P07电压,不循环。当P07<P17时,P13为高电平,当P07>P17时,P13为低电平。 检测P03电压,并保存不变的固定电压值假设为a。 下面为循环到关机为止。 检测P04电压, 当P04>P03时,P06和P13输出高电平。 当P04<P03时,(P06和P13输出低电平,也可以不管,因为上面默认=0) P0.6/P1.3/P0.0/P1.6输出高电平 P0.3/P0.4/P0.7/P17 ADC检测功能 ******************************************************************************/ void main (void) { unsigned char i; P06_Quasi_Mode; P13_Quasi_Mode; P14_Quasi_Mode; P06=1; P14=0; P13=0; //Timer1_Delay10ms(100); Timer1_Delay10ms(100);//延时2s /*----电源欠压采样----P07------*/ P06=0; ADP17 =0x07FF; for(i=0;i<10;i++) { Enable_ADC_AIN2; // P07 set_ADCS; while(ADCF == 0);//等待采样完毕 ADCdataH[i] = ADCRH; ADCdataL[i] = ADCRL; } tempH =(ADCdataH[6]+ADCdataH[7]+ADCdataH[8]+ADCdataH[9]+ADCdataH[5])/5; tempL =(ADCdataL[5]+ADCdataL[6]+ADCdataL[7]+ADCdataL[8]+ADCdataL[9])/5; ADP07 =((unsigned int)tempH<<4) + tempL; if(ADP07<=(ADP17+5)) { P13=1; } else if(ADP07>ADP17) { P13=0; } Timer1_Delay10ms(10); clr_ADCF; //这里关闭ADC达到省电 /*----电压采样----P03------*/ for(i=0;i<10;i++) { Enable_ADC_AIN6; // P03 set_ADCS; while(ADCF == 0);//等待采样完毕 ADCdataH[i] = ADCRH; ADCdataL[i] = ADCRL; } tempH =(ADCdataH[6]+ADCdataH[7]+ADCdataH[8]+ADCdataH[9]+ADCdataH[5])/5; tempL =(ADCdataL[5]+ADCdataL[6]+ADCdataL[7]+ADCdataL[8]+ADCdataL[9])/5; ADP03 =((unsigned int)tempH<<4) + tempL; clr_ADCF; //这里关闭ADC达到省电看下入这位置对吗 while(1) { /*----电压采样----P04------*/ for(i=0;i<10;i++) { Enable_ADC_AIN5; // P04 set_ADCS; while(ADCF == 0);//等待采样完毕 ADCdataH[i] = ADCRH; ADCdataL[i] = ADCRL; } tempH =(ADCdataH[6]+ADCdataH[7]+ADCdataH[8]+ADCdataH[9]+ADCdataH[5])/5; tempL =(ADCdataL[5]+ADCdataL[6]+ADCdataL[7]+ADCdataL[8]+ADCdataL[9])/5; ADP04 =((unsigned int)tempH<<4) + tempL; // ADP03=256; // ADP04=265; if(ADP04>(ADP03+20)) //100=0.1V { P06=1; P14=1; Timer1_Delay10ms(10); P14=0; P06=0; } else if(ADP04<=ADP03) { P14=0; P06=0; //想在这位置加个如果在这行代码运行有1分钟,说明设备没有工作,进入掉电省电模式 } Timer1_Delay10ms(100); nop; //当(ADP04>ADP03)电压唤醒休眠接着向下运行代码 } }
举报
您需要 登录 才可以下载或查看,没有账号?注册
jimsboy 发表于 2020-7-4 09:15 软件也就是2个mA的事.你这个应该哪里设计上引入额外耗电了
tyw 发表于 2020-7-3 21:26
盾视工作室 发表于 2020-7-5 16:41 那就是说这个软件上最多就是2MA吗?AD一直在运行是不是耗电不只2MA?
jimsboy 发表于 2020-7-10 11:42 一般的软件运行也就是2mA左右.AD打开一般额外消耗不到1mA
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
时间类勋章
等级类勋章
发帖类勋章
人才类勋章
7
50
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号