久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1751|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

為什么LED閃爍程序在單片機(jī)主循環(huán)里面不按設(shè)定次數(shù)閃爍

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
/*----------------------------------------------------------
  單片機(jī)采用stc8h1k28 32PIN 按鍵接P37,閃爍LED接P03
  功能:按下按鍵,LED閃爍4次,然后熄滅。           
------------------------------------------------------------*/
#include "stc8h.h"
//#include "Led.h"

sbit Led1=P0^3;
sbit Led2=P0^2;
sbit Key=P2^3;
sbit Key1=P3^7;

unsigned char B_400ms;
unsigned char Key_lock=0;
unsigned char Key_cnt=0;
unsigned char Key_Num=0;

void Timer0Init(void)                //1毫秒@11.0592MHz
{
        AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TL0 = 0xCD;                //設(shè)置定時(shí)初始值
        TH0 = 0xD4;                //設(shè)置定時(shí)初始值
//        TF0 = 0;                //清除TF0標(biāo)志
        ET0=1;
        TR0 = 1;                //定時(shí)器0開(kāi)始計(jì)時(shí)
        EA=1;
}

void delay_ms(unsigned int t)
{        
        while(t--)
        {
          ;
        }
}

void led_flash(unsigned char i)   //LED閃爍間隔400/2 ms
{
//   unsigned char m;
//         for(m=0;m<=i;m++)
         while(i--)
         {
           if(B_400ms==1)
                 {
                   B_400ms=0;
                         Led1=~Led1;
                 }
         }
}

void KeyScan(void)    //按鍵掃描
{
    if(Key1 == 1)
    {      
            Key_cnt=0;
            Key_lock = 0;                  //設(shè)置按鍵狀態(tài),防止重復(fù)觸發(fā)
    }
                 else if(Key_lock==0)
                                {
                                        Key_cnt++;  
                                             if(Key_cnt>=20)
                                                         {
                                                             Key_cnt=0;
                                                                   Key_lock=1;
                                                                   Key_Num=1;                                                                 
                                                         }
                                }
}

void Key_service()    //按鍵服務(wù)函數(shù)
{
   if(Key_Num==1)
         {
            Key_Num=0;      //添加這行LED常亮,去掉LED閃爍不停
                  led_flash(4);     
         }
}

void main()
{
  P_SW2|=0x80;
        P0M1=0;
        P0M0=0;
        P2M1=0;
        P2M0=0;
        P3M1=0;
        P3M0=0;
        P3PU=0x80;         //P37內(nèi)部電阻上拉

        Timer0Init();      
        delay_ms(1000);

        while(1)
        {
                Key_service();
                Led2=0;
        }
}

void TIM0_ISR() interrupt 1
{
  static unsigned int cnt;
        KeyScan();
        cnt++;
        if(cnt>=400)
        {
          cnt=0;
                B_400ms=1;               
        }
        TL0 = 0xCD;                //設(shè)置定時(shí)初始值
        TH0 = 0xD4;                //設(shè)置定時(shí)初始值
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:56665 發(fā)表于 2023-7-7 11:11 | 只看該作者
在主程序循環(huán)里要對(duì)這個(gè)閃爍還要設(shè)定一個(gè)停止條件
回復(fù)

使用道具 舉報(bào)

板凳
ID:712097 發(fā)表于 2023-7-7 11:24 | 只看該作者
看起來(lái)程序沒(méi)問(wèn)題呀,不過(guò)感覺(jué)程序可以簡(jiǎn)化,直接在定時(shí)器中斷里面翻轉(zhuǎn)IO就可以了。
回復(fù)

使用道具 舉報(bào)

地板
ID:1065749 發(fā)表于 2023-7-7 13:57 | 只看該作者
chxelc 發(fā)表于 2023-7-7 11:24
看起來(lái)程序沒(méi)問(wèn)題呀,不過(guò)感覺(jué)程序可以簡(jiǎn)化,直接在定時(shí)器中斷里面翻轉(zhuǎn)IO就可以了。

我想燈在按鍵按下后只閃爍4次,但是這個(gè)程序閃爍次數(shù)不可調(diào),一直在閃爍,可能程序?qū)懛ㄟ是有問(wèn)題。
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2023-7-7 15:38 | 只看該作者
閃爍4次,是 led_flash(8);
led_flash()函數(shù)改為





回復(fù)

使用道具 舉報(bào)

6#
ID:213173 發(fā)表于 2023-7-7 16:01 | 只看該作者
18689719961 發(fā)表于 2023-7-7 13:57
我想燈在按鍵按下后只閃爍4次,但是這個(gè)程序閃爍次數(shù)不可調(diào),一直在閃爍,可能程序?qū)懛ㄟ是有問(wèn)題。
  1. /*----------------------------------------------------------
  2.   單片機(jī)采用stc8h1k28 32PIN 按鍵接P37,閃爍LED接P03
  3.   功能:按下按鍵,LED閃爍4次,然后熄滅。           
  4. ------------------------------------------------------------*/
  5. #include "stc8h.h"

  6. sbit Led1=P0^3;
  7. sbit Key1=P3^7;

  8. unsigned char temp;
  9. bit flag;
  10. bit key_sign;

  11. void Timer0Init(void)                //1毫秒@11.0592MHz
  12. {
  13.         AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
  14.         TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
  15.         TL0 = 0xCD;                //設(shè)置定時(shí)初始值
  16.         TH0 = 0xD4;                //設(shè)置定時(shí)初始值
  17.         TF0 = 0;                //清除TF0標(biāo)志
  18.         TR0 = 1;                //定時(shí)器0開(kāi)始計(jì)時(shí)
  19.         ET0=1;
  20.         EA=1;
  21. }

  22. void KeyScan(void)    //按鍵掃描
  23. {
  24.         if(!Key1 && !key_sign)
  25.         {      
  26.                 key_sign=1;
  27.                 Led1=0;//低電平亮
  28.                 temp=7;
  29.         }
  30. }

  31. void main()
  32. {
  33.         P0M1=0;
  34.         P0M0=0;
  35.         P2M1=0;
  36.         P2M0=0;
  37.         P3M1=0;
  38.         P3M0=0;       
  39.         Timer0Init();
  40.         while(1)
  41.         {
  42.                 KeyScan();
  43.         }
  44. }

  45. void TIM0_ISR() interrupt 1
  46. {
  47.         static unsigned int cnt;
  48.         if(key_sign && temp>0)
  49.         {
  50.                 if(++cnt>=400)
  51.                 {
  52.                         cnt=0;
  53.                         Led1=~Led1;
  54.                         if(--temp==0)
  55.                                 key_sign=0;

  56.                 }
  57.         }
  58. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

7#
ID:56665 發(fā)表于 2023-7-7 16:05 | 只看該作者
lkc8210 發(fā)表于 2023-7-7 15:38
閃爍4次,是 led_flash(8);
led_flash()函數(shù)改為

按你說(shuō)的修改真的可以了,while(i--)和while(i)  i--,區(qū)別有這么大。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频91| 亚洲三级在线观看 | 日韩电影中文字幕在线观看 | 天天色天天射天天干 | 狠狠操狠狠干 | 精品欧美一区二区三区久久久 | 久久精品91 | 日韩一区二区三区四区五区六区 | 久久久久国产精品一区二区 | 欧美精品网| www.免费看片.com | 久久久久久免费毛片精品 | 欧美精品一区二区蜜桃 | 国产欧美日韩综合精品一区二区 | 国产黄色网址在线观看 | 国产精品免费在线 | 久久久久国产精品午夜一区 | 亚洲免费高清 | 国产精品成人一区二区三区 | 日韩欧美网| 成人一区二区三区 | 在线国产一区二区 | 99re视频在线观看 | 在线免费看毛片 | 日本三级全黄三级a | 国产美女精品 | 免费激情网站 | 在线国产小视频 | 一区二区三区亚洲 | 欧美另类视频在线 | 欧美一区二区三区在线观看 | 日韩精品福利 | 综合激情av | 日本粉嫩一区二区三区视频 | 在线视频第一页 | 中文字幕av色 | 久久综合成人精品亚洲另类欧美 | 最新国产精品精品视频 | av中文字幕在线播放 | 一区二区三区不卡视频 | 欧美视频 亚洲视频 |