|
如視頻顯示的效果。在大神lkc8210老師的代碼上改的,基本可以實(shí)現(xiàn)想要的功能,但與視頻中的效果還是有差別,各位大神幫我指點(diǎn)一下!
https://www.bilibili.com/video/BV1gLgPe1EVs/ (視頻效果)
void sleep() // 放在while大循環(huán)中
{
if(XmCnt==1) //XmCnt定時(shí)500mS檢測一下是否休眠
{
XM_90S_1 = press; //Press 為ADC獲取到的壓力數(shù)據(jù)給到當(dāng)前壓力XM_90S_1
if(XM_90S_1 < (XM_90S_2+5) && XM_90S_1 > (XM_90S_2-5)) //當(dāng)前壓力與上次壓力比較
{
xmflag = 0;
parm1 = press; //parm1把當(dāng)前壓力值送示 }
else //壓力不穩(wěn)定時(shí)當(dāng)前壓力賦值給上次壓力變量
{
XM_90S_2 = XM_90S_1;
xmflag=1;
}
if(stable==1)
{
System_CPU_OFF(); //關(guān)機(jī)
}
}
}
void Timer0Init() //定時(shí)10ms
{
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TMOD |= 0x01; //設(shè)置定時(shí)器模式
TL0 = 0x00; //設(shè)置定時(shí)初始值
TH0 = 0xe0; //設(shè)置定時(shí)初始值
TF0 = 0; //清除TF0標(biāo)志
ET0=1; //定時(shí)器0開關(guān)
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
}
void timer0_ISR() interrupt 1 //定時(shí)器中斷0,中斷號:1
{
TR0=0; //定時(shí)器0計(jì)時(shí)關(guān)閉
if(xmflag)
{
gjcnt++;
if(gjcnt>=6000)
{
gjcnt=0;
stable = 1;
}
}
else
{
gjcnt=0;
stable = 0;
}
TL0 = 0x00; //設(shè)置定時(shí)初始值
TH0 = 0xe0; //設(shè)置定時(shí)初始值
TR0=1; //定時(shí)器0計(jì)時(shí)打開
}
|
|