欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機控制LED請問延時除了累減嵌套循環,還有什么好方法沒? [打印本頁]

作者: singrain    時間: 2019-8-11 20:23
標題: 單片機控制LED請問延時除了累減嵌套循環,還有什么好方法沒?
我想做個點亮led燈1秒,暗10秒,循環10次程序停止,網上找了一些程序拼湊而成,我是新手還沒入門呢,x的10次循環不知道怎么退出,延時循環一直用累減循環,會不會浪費cpu(mcu)資源、減少壽命,浪費電池電量。還有網上查的1s=1000000us,實測是255000us。
下面的程序,x的10次循環怎么退出啊,想運行10次就讓單片機休息,停止工作,怕一直工作下去累壞了,后面加了return 0程序出錯,while循環還不會寫。

#include<reg52.h>

sbit LED0=P1^0;
void Delay_1s();
void Delay_10s();
unsigned int i,j,k;

void delay_1s()
{
   for(i=95;i>0;i--)
   for(j=26;j>0;j--)
   for(k=46;k>0;k--);
}

void delay_10s()
{
   unsigned int i,j,k;
   for(i=73;i>0;i--)
   for(j=249;j>0;j--)
   for(k=63;k>0;k--);
}

void main (void)
{
    int x;
    for (x=1; x<=10; x++)
  {
  LED0=0;
  Delay_1s();
  LED0=1;
  Delay_10s();
  }

}


作者: 51hei團團    時間: 2019-8-12 02:01
定時器有空閑的話可以用定時器 不過程序麻煩點
作者: wulin    時間: 2019-8-12 05:56
想按精確時間循環10次程序停止需要使用定時器。
MCU是累不死的,讓MCU處于休眠狀態節約電池電量是可行的。
此類簡單程序在論壇很好找。
作者: yzwzfyz    時間: 2019-8-12 12:04
你所能理解的方式都是最笨最糟糕的方法。
沙發、板櫈的說法是正解。
作者: 很多的小地方    時間: 2019-8-12 17:39
用定時器,比如一秒產生一次定時器中斷,在中斷中讓LED燈亮,再定義兩個全局變量,LED_cnt,count_cnt。LED_cnt是為了讓燈亮一秒暗10秒,cnt用來循環10次退出。
例子:
void TIM3_UPD_OVF_IRQHandler (void)//定時器3中斷服務函數
{
        static LED_cnt = 0,count_cnt = 0;
        if(!LED_cnt)
        {
                LED = 1;//亮燈
                count_cnt ++;//計數一次
        }
        else LED = 0;//關燈
        LED_cnt ++;
        if(LED_cnt == 10) LED_cnt = 0;
        if(0,count_cnt == 10) TIM3_SR1 = 0x00;//關定時器
}




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1