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

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

QQ登錄

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

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

單片機(jī)延時(shí)程序怎么寫?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:72649 發(fā)表于 2022-11-15 01:13 來(lái)自觸屏版 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
main()

while(1)

if(KEY=0)
P10=0;
延時(shí)兩秒;
LED1=0;
延時(shí)一秒;
LED2=0;
if(KEY=0沒(méi)有變化)
則延時(shí)15分鐘;
LED3=!0;
LED1=1;LED2=1;

if(KEY=1)
LED1=1;
LED2=1;
LED4=0;


要求實(shí)現(xiàn)功能如下:1、如果開(kāi)關(guān)沒(méi)有接通,LED1燈亮,延時(shí)兩秒后,LED2燈亮;如果15分鐘后,開(kāi)關(guān)還是沒(méi)有接通,則LED3閃爍。LED1、LED2就熄滅。
2、只要開(kāi)關(guān)接通,LED1、LED2就熄滅。LED4燈亮。
以上代碼能不能實(shí)現(xiàn)這個(gè)功能。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2022-11-15 09:04 | 只看該作者
閃:你做不到:
1、LED3=!0,即=1,僅關(guān)而矣!!
2、閃是亮一斷時(shí)間,暗一段時(shí)間,如此不斷交替。你亮了多久,又暗了多久,交替了嗎?
教你定時(shí)的方法:
1、起動(dòng)一個(gè)定時(shí)器,并使用之10ms中斷一次。
2、設(shè)置一個(gè)標(biāo)記B_1S,它=1就表示時(shí)間到了,=0就表示時(shí)間未到。不用時(shí)清0,表示時(shí)間未到。
3、設(shè)置一個(gè)計(jì)時(shí)變量R_1S,開(kāi)始設(shè)置成100,準(zhǔn)備計(jì)時(shí)1S。
4、每次中斷,查看R_1S:
=0,表示:計(jì)時(shí)未開(kāi)始,不需要計(jì)時(shí)。跳過(guò)。
<>0,表示計(jì)時(shí)進(jìn)行中,就將R_1S-1。減到0時(shí),就將B_1S置1,表示1S到了。未減到0時(shí),1S未到,跳過(guò)。
5、主程序中:當(dāng)需要計(jì)時(shí)時(shí)(開(kāi)啟計(jì)時(shí)),就讓R_1S=100,1S計(jì)時(shí)就開(kāi)始。
6、判斷B_1S,就知道1S是不是到了,B_1S=1時(shí),就做你要做的事,做完后記得將B_1S清0,防止重再?gòu)?fù)做。
如果還需要2S、15M,如法炮制:B_2S、R_2S、B_15M、R_15M。簡(jiǎn)單吧。
主程序中,延時(shí)一秒:IF 一秒,變成 IF B_1S=1,就成了。

閃動(dòng):就做一個(gè)0.5S的計(jì)時(shí)器,B_05S,R_05S。
同樣:當(dāng)B_05=1時(shí),就讓 LED3 = !LED3,再讓B_05=0,R_05=50,0.5S就再次計(jì)時(shí)開(kāi)始了。這樣LED3 就閃動(dòng)了。

寫程序,要先構(gòu)思如何達(dá)成目的,而后再開(kāi)始寫代碼。
思路沒(méi)有,不正確,自己都解釋不通,程序如何寫得呢?
回復(fù)

使用道具 舉報(bào)

板凳
ID:161164 發(fā)表于 2022-11-15 10:51 | 只看該作者

回復(fù)

使用道具 舉報(bào)

地板
ID:72649 發(fā)表于 2022-11-15 17:29 來(lái)自觸屏版 | 只看該作者
yzwzfyz 發(fā)表于 2022-11-15 09:04
閃:你做不到:
1、LED3=!0,即=1,僅關(guān)而矣!!
2、閃是亮一斷時(shí)間,暗一段時(shí)間,如此不斷交替。你亮了 ...

謝謝指點(diǎn)
回復(fù)

使用道具 舉報(bào)

5#
ID:72649 發(fā)表于 2022-11-15 17:31 來(lái)自觸屏版 | 只看該作者
lkc8210 發(fā)表于 2022-11-15 10:51

謝謝指點(diǎn),延時(shí)是否可以用定時(shí)器做
回復(fù)

使用道具 舉報(bào)

6#
ID:101869 發(fā)表于 2022-11-15 18:59 | 只看該作者
幫人幫到底 目前這個(gè)原因閑得蛋疼 給你寫好了,我也是菜雞,見(jiàn)笑了,我用STC給你寫的  用的定時(shí)器實(shí)現(xiàn)你的功能


#include "STC15F104E.H"  //單片機(jī)頭文件
#define u16 unsigned int //宏定義無(wú)符號(hào)整型數(shù)據(jù)
#define u8 unsigned char //宏定義無(wú)符號(hào)字符型數(shù)據(jù)

sbit key_sr = P3 ^ 4;
sbit LED_1 = P3 ^ 5;
sbit LED_2 = P3 ^ 0;
sbit LED_3 = P3 ^ 1;
sbit LED_4 = P3 ^ 2;
u8 key_flag = 0;
void SYSTEM_INIT()
{
    P3M1 = 0x00;
    P3M0 = 0x27; // P3(雙雙推雙雙推推推)
    LED_1 = 1;
    LED_2 = 1;
    LED_3 = 1;
    LED_4 = 1;
}
void key_scan()
{
    static u8 cnt = 0;
    if (key_sr)
    {
        cnt = 0;
        key_flag = 0;
    }
    else if (!key_flag)
    {
        cnt++;
        if (cnt > 200)
        {
            key_flag = 1;
        }
    }
}
void LED_serve()
{
    static u8 ms50_cnt = 0;
    static u8 min_cnt = 0;  //分鐘計(jì)數(shù)
    static u8 min2_cnt = 0; // 2分鐘計(jì)時(shí)
    static u8 blink_flag = 0;
    static u8 blink_cnt = 0;
    if (!blink_flag)
    {
        if (!key_flag) //開(kāi)關(guān)斷開(kāi)
        {
            LED_1 = 0;
            LED_4 = 1;
        }
        if (!LED_1 && LED_2) //兩秒后點(diǎn)亮LED2
        {
            if (++min2_cnt >= 40) //兩秒計(jì)時(shí)到
            {
                min2_cnt = 0;
                LED_2 = 0;
            }
        }
        if (!LED_2)
        {

            if (++ms50_cnt >= 200) // 10秒
            {
                ms50_cnt = 0;
                min_cnt++;
            }
            if (min_cnt >= 90) // 900秒=15分
            {

                blink_flag = 1; //閃燈標(biāo)志
            }
        }
    }
    if (key_flag) //開(kāi)關(guān)接通
    {
        ms50_cnt = 0;
        min_cnt = 0;
        blink_flag = 0;
        LED_1 = 1;
        LED_2 = 1;
        LED_4 = 0;
    }
    if (blink_flag) //閃燈500毫秒一次
    {
        LED_1 = 1;
        LED_2 = 1;
        blink_cnt++;
        if (blink_cnt <= 10)
        {
            LED_3 = 0;
        }
        else
            LED_3 = 1;
        if (blink_cnt >= 20)
        {
            blink_cnt = 0;
        }
    }
    else
    {
        blink_cnt = 0;
        LED_3 = 1;
    }
}
void Timer0Init(void) // 50毫秒@11.0592MHz
{
    AUXR &= 0x7F; //定時(shí)器時(shí)鐘12T模式
    TMOD &= 0xF0; //設(shè)置定時(shí)器模式
    TL0 = 0x00;   //設(shè)置定時(shí)初始值
    TH0 = 0x4C;   //設(shè)置定時(shí)初始值
    TF0 = 0;      //清除TF0標(biāo)志
    TR0 = 1;      //定時(shí)器0開(kāi)始計(jì)時(shí)
    EA = 1;
    ET0 = 1;
}

/***************主程序****************/
void main()
{
    SYSTEM_INIT();
    Timer0Init();

    while (1)
    {
        key_scan();
    }
}

void timer0() interrupt 1
{
    LED_serve();
}
回復(fù)

使用道具 舉報(bào)

7#
無(wú)效樓層,該帖已經(jīng)被刪除
8#
ID:72649 發(fā)表于 2022-11-16 07:52 | 只看該作者
非凡科技 發(fā)表于 2022-11-15 18:59
幫人幫到底 目前這個(gè)原因閑得蛋疼 給你寫好了,我也是菜雞,見(jiàn)笑了,我用STC給你寫的  用的定時(shí)器實(shí)現(xiàn)你的功能 ...

先謝謝了,功能沒(méi)有實(shí)現(xiàn),接通電源,指示燈一個(gè)都不亮,開(kāi)關(guān)動(dòng)作不起作用。
回復(fù)

使用道具 舉報(bào)

9#
ID:101869 發(fā)表于 2022-11-16 08:33 來(lái)自觸屏版 | 只看該作者
hjx5548 發(fā)表于 2022-11-16 07:52
先謝謝了,功能沒(méi)有實(shí)現(xiàn),接通電源,指示燈一個(gè)都不亮,開(kāi)關(guān)動(dòng)作不起作用。

檢查硬件  這個(gè)我用開(kāi)發(fā)板實(shí)驗(yàn)很正常
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表