微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机的自动断电C语言程序,绝妙!

单片机的自动断电C语言程序,绝妙!

时间:10-02 整理:3721RD 点击:
在别人博客上看到的一篇文章,相当不错,转来分享
-------------------------------------------------------------------
用一个PNP(或NPN)三极管起到开关的作用.控制单片机的电源.E极接5VCC,C极通过限流电阻接单片机的VCC,另外,加一个开关S,一端接单片机的VCC,一端加外加5VCCC.B极接单片要的P1.0口,程序的思路是:按下开关S,使单片机运行程序从P1.0输出低电平,使三极管导通,单片机供电,然后放开开关S.这时,单片机内部的定时器启动,进行定时,定时2个小时后,中断使P1.0口输出高电平,三极管截止,单片机断电.程序如下:
/*用定时器定时2小时后控制单片机断电,
作者:w418781840,日期,2008.5.26*/
//========声明区====================
#include <reg51.h>
#define count 50000 //定时50MS
#define TH_M1 (65536-count)/256
#define TL_M1 (65536-count)%256
unsigned long count_T0; //中断计数
sbit p1_0=P1^0; //声明P1.0口
//====主函数==============
main()
{ EA=1; //开总中断
ET0=1; //定时器中断
TMOD=0x01; //工作方式1
TH0=TH_M1; //赋值
TL0=TL_M1; //启动
TR0=1; //输出低电平,给单片机供电
p1_0=0; //等待
while(1);
}
//======定时器中断函数=======
void timer(void)interrupt 1
{ TH0=TH_M1; //重新赋值
TL0=TL_M1;
if(++count_T0==144000) //144000*50MS=2小时
TR0=0; //关闭定时器
p1_0=1; //2小时到,输出高电平,断电.
}
/////////////////////////////////////////

谢谢分享

不错的程序

不错,有时间实验一下

好东西!

不错,有机会拿来用下!

谢谢分享

haode heng
sd

我试了一下,为什么不行?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top