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

標題: 當中斷切換時,從當前燈切換循環點亮熄滅。我沒懂什么意思,這個意思是指關機后啟... [打印本頁]

作者: nooobaoe    時間: 2025-4-5 16:05
標題: 當中斷切換時,從當前燈切換循環點亮熄滅。我沒懂什么意思,這個意思是指關機后啟...
老實了,我把程序改了一下讓計數器做最簡單的計數工作。
#include <REGX51.H>
void Delay(int ms);           
void Timer0_Init(void);           
void UpdateLED(void);

char LED = 0;
bit direction = 0;           
bit auto_mode = 0;  
unsigned int counter = 0; // 將計數器移出中斷

void main()
{
    P2 = 0xFF;
    Timer0_Init();  

    while(1)
    {
        if(P3_0 == 0)
        {
            Delay(5);
            if(P3_0 == 0)
            {
                while(P3_0 == 0);
                Delay(5);  
                if(direction != 0)  // 如果當前方向不同,只改變方向
                {
                    direction = 0;
                }  
                auto_mode = 1;     
            }
        }

        if(P3_1 == 0)
        {
            Delay(5);
            if(P3_1 == 0)
            {
                while(P3_1 == 0);
                Delay(5);
                if(direction != 1)  // 如果當前方向不同,只改變方向
                {
                    direction = 1;
                }  
                auto_mode = 1;   
            }
        }

        // 主循環中處理LED更新
        if(counter >= 10)
        {
            counter = 0;
            if(auto_mode)
            {
                UpdateLED();
            }
        }
    }
}

void Timer0_ISR(void) interrupt 1
{
    TH0 = 0xB0;  
    TL0 = 0x18;

    // 只做最簡單的計數工作
    counter++;
}

void UpdateLED(void)
{
    if(direction == 0)  // 向右循環
    {
        LED++;
        if(LED >= 8)
        {
            LED = 0;
        }
    }
    else  // 向左循環
    {
        if(LED == 0)
        {
            LED = 7;  // 從0減到7,實現循環
        }
        else
        {
            LED--;
        }
    }
    P2 = ~(0x01 << LED);  // 更新LED顯示
}

void Timer0_Init(void)
{
    TMOD &= 0xF0;  
    TMOD |= 0x01;
    TH0 = 0xB0;   
    TL0 = 0x18;
    ET0 = 1;  //允許定時器0中斷     
    EA = 1;   //開啟總中斷     
    TR0 = 1;      
}

void Delay(int ms)
{
    int i,j;
    while(ms--)
    {
        for(i=1;i<=ms;i++)
            for(j=1;j<=300;j++);
    }
}

現在他加了一條要求。當中斷切換時,從當前燈切換循環點亮熄滅。我沒懂什么意思,這個意思是指關機后啟動燈還是在那個位置還是什么意思?


作者: hantu    時間: 2025-4-5 17:58
意思可能是,比如從左到右為D1到D8總共8個燈,當前若是在亮D5燈的時候,如果按鍵變成從左到右時是從 D5 D6 這樣亮下去而不是從頭D1開始亮;如果按鍵變成從右到左時從 D5 D4 這樣亮下去而不是從D8開始亮起。具體是不是這樣,你得問出題人,臉皮厚一點,問清楚為止。
作者: GlenXu    時間: 2025-4-17 09:36
其實小學語文基礎很重要,我就不好,導致應用題總是要比別人多費點時間,
雖然我的智商不低,但效率和能力明顯是打折扣的。
作者: WL0123    時間: 2025-4-17 14:27
就是老師舉右手,你從1數到10循環,老師舉左手,你從10數到1循環。如果老師換手,你就得在當前的數向上或向下數數,不許從頭數。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: av免费网址| 亚洲精品一 | 久久久久国产 | 91久久精品一区二区二区 | 久久久久一区二区 | 91在线免费观看 | 日本三级网| 紧缚调教一区二区三区视频 | 欧美精品成人 | 91精品国产色综合久久 | 国产成人免费在线 | 男人天堂网址 | 欧美福利专区 | 国产在线精品一区二区三区 | 黄色av网站免费看 | 日韩欧美视频网站 | 四虎成人av | 日韩欧美在线观看 | 成人免费在线观看视频 | 午夜视频在线 | 国产高清在线视频 | 九九伦理电影 | 亚av在线 | 国产精品一区在线观看 | 欧美四虎 | 午夜影院在线观看免费 | 一区二区三区四区五区在线视频 | 在线播放一区二区三区 | www.99re| 国产精品免费一区二区三区四区 | 欧美一区视频在线 | 亚洲精品一区二区三区丝袜 | 午夜欧美一区二区三区在线播放 | www亚洲成人 | 国产97人人超碰caoprom | 91av在线免费播放 | 日韩中文字幕 | 色综合99 | 丝袜毛片 | 久久av一区二区三区 | 东京av男人的天堂 |