找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1329|回復: 2
打印 上一主題 下一主題
收起左側

單片機循環(huán)點亮LED燈程序運行卡住?

[復制鏈接]
跳轉到指定樓層
樓主
ID:97678 發(fā)表于 2023-3-15 18:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
程序如下:為什么不能循環(huán)點亮LED燈?
#include"key.h"

void key_Proc(); //按鍵處理
void led_Proc();  //燈處理
void Timer0Init(); //中斷初始化
void led_Proc0();   //燈處理
   
void main()
{
      P2 = 0;
      P1 = 0;
    Timer0Init();  //中斷初始化

    while(1)
    {
        key_Proc();   //按鍵處理
        led_Proc();  //燈處理
        led_Proc0();   //燈處理
    }
}

void key_Proc()    //按鍵處理
{
    if(flag1ms)  //1ms時間標志
    {
        flag1ms = 0;
        if(KEY)
        {
            if((keyTim>10)&&(keyTim<500))  //按鍵時間大于10ms小于50ms,是短按鍵
            {
                keyshort = 1;   //短按鍵標志
            }
            keyTim = 0;        //按鍵時間清零
        }
        else
        {
            if(keyTim<10000)    //按鍵時間小于10S
            keyTim++;           //按鍵時間加
            if(keyTim==2000)    //按鍵時間為1S
            {
                keylong = 1;    //長按鍵標志
            }
        }      
    }
}

void led_Proc()   //燈處理
{
    if((LEDON==0)&&(keylong==1))  //關燈狀態(tài)同時長按鍵按下就開燈
    {   
        keylong = 0;  //長按鍵松開
        LEDON = 1;    //關燈時就開燈
        LEDR = 1;     //RGB燈亮白光
        LEDG = 1;
        LEDB = 1;
    }        
    if((LEDON==1)&&(keylong==1)) //開燈狀態(tài)同時長按鍵按下就關燈
    {   
        keylong = 0;  //長按鍵松開
        LEDON = 0;    //開燈時就關燈
        LEDR = 0;     //RGB燈滅
        LEDG = 0;
        LEDB = 0;
    }
}

void led_Proc0()   //燈處理
{
    if(LEDON==1)  //開燈狀態(tài)同時短按鍵按下,亮燈模式切換
    {   

        switch(i)
        {
            case 0:LED3 = 1;LED4 = 0;LED5 = 0; if(num1==t1)num1=0; i=1;break; //紅
            case 1:LED3 = 1;LED4 = 1;LED5 = 0; if(num1==t2)num1=0; i=2;break; //黃
            case 2:LED3 = 0;LED4 = 1;LED5 = 0; if(num1==t3)num1=0; i=3;break; //綠
            case 3:LED3 = 0;LED4 = 1;LED5 = 1; if(num1==t1)num1=0; i=4;break; //青
            case 4:LED3 = 0;LED4 = 0;LED5 = 1; if(num1==t2)num1=0; i=5;break; //藍
            case 5:LED3 = 1;LED4 = 0;LED5 = 1; if(num1==t3)num1=0; i=6;break; //紫
            case 6:LED3 = 1;LED4 = 1;LED5 = 1; if(num1==t1)num1=0; i=0;break; //白                  
        }
    }
}

void Timer0Init()   //中斷初始化
{
    AUXR &= 0x80;   //定時器時鐘12T(12分頻)模式
    EA = 1;       //開中斷
    TMOD &= 0XF0; //中斷0模式1
    TMOD |= 0X01;
    TH0 = 0XFC;   //初值1ms
    TL0 = 0X66;
    ET0 = 1;     //允許T0中斷
    TR0 = 1;    //定時器0開始計時
}

void interruptTimer0() interrupt 1
{
   TH0 = 0XFC;
   TL0 = 0X66;
   flag1ms = 1; //1ms標志
   sysTim++;  //系統(tǒng)時間
   
   if(sysTim==1000)
            {
            sysTim=0;
            j++;
            }
   if(j==num1)
            {
            j=0;
            }                                    
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:844772 發(fā)表于 2023-3-16 06:40 來自觸屏版 | 只看該作者
flag1ms = 1; //1ms標志 放到下邊的判斷里唄
回復

使用道具 舉報

板凳
ID:161164 發(fā)表于 2023-3-16 09:00 | 只看該作者

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表