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

QQ登錄

只需一步,快速開始

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

請(qǐng)教師傅們一個(gè)時(shí)間推遲的51單片機(jī)程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:617813 發(fā)表于 2023-1-17 02:39 來(lái)自手機(jī) | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
500黑幣
就是按鈕點(diǎn)動(dòng)后要延時(shí)2秒后再執(zhí)行這個(gè)點(diǎn)動(dòng)的時(shí)間,萬(wàn)分感激大家的幫忙

最佳答案

查看完整內(nèi)容

你這應(yīng)該修改一下,照你這么寫,樓主得一直按著按鍵,直到2秒后事件執(zhí)行。上面的延時(shí)短點(diǎn),用于消抖,在執(zhí)行事件前面加個(gè)延時(shí)2000毫秒才是樓主想要的 直接在你這上改了 #include #include sbit button = P1^0; // Define button as sbit type, connected to P1.0 void delay_ms(unsigned int time) { unsigned int i, j; for (i = 0; i < time; i++) for (j = 0; j < 110; j++); } void mai ...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:158391 發(fā)表于 2023-1-17 02:39 | 只看該作者
lztopic 發(fā)表于 2023-2-5 13:39
注意:需要包含"intrins.h"頭文件以使用_nop_()函數(shù)進(jìn)行延時(shí)。

你這應(yīng)該修改一下,照你這么寫,樓主得一直按著按鍵,直到2秒后事件執(zhí)行。上面的延時(shí)短點(diǎn),用于消抖,在執(zhí)行事件前面加個(gè)延時(shí)2000毫秒才是樓主想要的
直接在你這上改了
#include <reg52.h>
#include <intrins.h>

sbit button = P1^0;  // Define button as sbit type, connected to P1.0

void delay_ms(unsigned int time)
{
    unsigned int i, j;
    for (i = 0; i < time; i++)
        for (j = 0; j < 110; j++);
}

void main()
{
    while (1)
    {
        if (button == 0)
        {
            delay_ms(10);  // 消抖
            if (button == 0)
            {
                   delay_ms(2000);  // 等2秒再執(zhí)行下一步
                // Perform the set program
                // ...
            }
        }
    }
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:996773 發(fā)表于 2023-1-17 15:27 | 只看該作者
我讀了幾遍都沒(méi)看懂樓主的目的,點(diǎn)動(dòng)之后延時(shí)2秒再執(zhí)行這個(gè)點(diǎn)動(dòng)?的時(shí)間?如果連自己語(yǔ)言都沒(méi)法整理完善讓別人能讀懂,編程很難
回復(fù)

使用道具 舉報(bào)

地板
ID:752974 發(fā)表于 2023-1-17 15:29 | 只看該作者
沒(méi)看懂,什么是“執(zhí)行這個(gè)點(diǎn)動(dòng)的時(shí)間”?如果是點(diǎn)動(dòng)事件發(fā)生,再延時(shí)2秒執(zhí)行這個(gè)事件,那延時(shí)2秒就可以了,很簡(jiǎn)單的。定時(shí)器延時(shí)不夠,再附加軟件計(jì)數(shù)。
回復(fù)

使用道具 舉報(bào)

5#
ID:155507 發(fā)表于 2023-1-17 17:03 | 只看該作者
什么是“執(zhí)行這個(gè)點(diǎn)動(dòng)的時(shí)間”?

是連問(wèn)題都問(wèn)不明白,還是我的理解能力下降了?
提出問(wèn)題也是一門學(xué)問(wèn),如何能清晰的表述,是解決問(wèn)題的關(guān)鍵
回復(fù)

使用道具 舉報(bào)

6#
ID:332444 發(fā)表于 2023-1-18 07:25 | 只看該作者
很簡(jiǎn)單的,在需要延時(shí)的地方插入延時(shí)判斷代碼一直循環(huán)比較到2秒后退出循環(huán)即可.
回復(fù)

使用道具 舉報(bào)

7#
ID:517466 發(fā)表于 2023-1-18 21:51 | 只看該作者
就是按鈕點(diǎn)動(dòng)后要延時(shí)2秒后再執(zhí)行這個(gè)點(diǎn)動(dòng)的時(shí)間----就是按鈕點(diǎn)動(dòng)后要延時(shí)2秒后再執(zhí)行這個(gè)點(diǎn)動(dòng)的事件?
看你代碼對(duì)按鍵的訪問(wèn)是中斷的,還是輪詢的。加標(biāo)志以及延時(shí)處理。
回復(fù)

使用道具 舉報(bào)

8#
ID:965189 發(fā)表于 2023-1-19 11:50 | 只看該作者
估計(jì)樓主是想,點(diǎn)按鍵后,經(jīng)過(guò)2秒鐘的延時(shí)后再執(zhí)行設(shè)定的程序。
回復(fù)

使用道具 舉報(bào)

9#
ID:1043388 發(fā)表于 2023-1-20 09:49 來(lái)自手機(jī) | 只看該作者
加兩秒延時(shí)
回復(fù)

使用道具 舉報(bào)

10#
ID:130230 發(fā)表于 2023-1-20 13:57 | 只看該作者
開一個(gè)硬件定時(shí)器,定時(shí)2S在中斷中置位一個(gè)flag,然后在main里面循環(huán)查詢flag是否置位就行
回復(fù)

使用道具 舉報(bào)

11#
ID:584814 發(fā)表于 2023-1-25 08:58 | 只看該作者
看得出樓主只是想活躍一下過(guò)年氣氛,因?yàn)檫@個(gè)問(wèn)題本身不值500
回復(fù)

使用道具 舉報(bào)

12#
ID:645225 發(fā)表于 2023-2-5 13:36 | 只看該作者
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. sbit button = P1^0;  // Define button as sbit type, connected to P1.0

  4. void delay_ms(unsigned int time)
  5. {
  6.     unsigned int i, j;
  7.     for (i = 0; i < time; i++)
  8.         for (j = 0; j < 110; j++);
  9. }

  10. void main()
  11. {
  12.     while (1)
  13.     {
  14.         if (button == 0)
  15.         {
  16.             delay_ms(2000);  // Wait for 2 seconds
  17.             if (button == 0)
  18.             {
  19.                 // Perform the set program
  20.                 // ...
  21.             }
  22.         }
  23.     }
  24. }
復(fù)制代碼


注意:需要包含"intrins.h"頭文件以使用_nop_()函數(shù)進(jìn)行延時(shí)。

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

13#
ID:645225 發(fā)表于 2023-2-5 13:39 | 只看該作者
  1. #include <reg52.h>
  2. #include <intrins.h>

  3. sbit button = P1^0;  // Define button as sbit type, connected to P1.0

  4. void delay_ms(unsigned int time)
  5. {
  6.     unsigned int i, j;
  7.     for (i = 0; i < time; i++)
  8.         for (j = 0; j < 110; j++);
  9. }

  10. void main()
  11. {
  12.     while (1)
  13.     {
  14.         if (button == 0)
  15.         {
  16.             delay_ms(2000);  // Wait for 2 seconds
  17.             if (button == 0)
  18.             {
  19.                 // Perform the set program
  20.                 // ...
  21.             }
  22.         }
  23.     }
  24. }
復(fù)制代碼

注意:需要包含"intrins.h"頭文件以使用_nop_()函數(shù)進(jìn)行延時(shí)。
回復(fù)

使用道具 舉報(bào)

14#
ID:158391 發(fā)表于 2023-2-5 14:15 | 只看該作者
快,把500黑幣給我和12樓一人一半
回復(fù)

使用道具 舉報(bào)

15#
ID:514901 發(fā)表于 2023-2-7 17:31 | 只看該作者
delay_ms(2000);
回復(fù)

使用道具 舉報(bào)

16#
ID:617813 發(fā)表于 2023-2-28 11:40 | 只看該作者
ldc2000 發(fā)表于 2023-1-17 02:39
你這應(yīng)該修改一下,照你這么寫,樓主得一直按著按鍵,直到2秒后事件執(zhí)行。上面的延時(shí)短點(diǎn),用于消抖,在 ...

你好,這個(gè)代碼要是BUTTON不是0,那后面就不能執(zhí)行下去,我的意思是點(diǎn)動(dòng)按鈕后,按鍵已經(jīng)釋放了后延時(shí)2秒后再執(zhí)行這個(gè)點(diǎn)動(dòng)時(shí)間,比如點(diǎn)動(dòng)時(shí)間0.1秒,那就是釋放了后延時(shí)2秒再輸出0,.1秒,0.3秒釋放后延時(shí)2秒后輸出0.3秒
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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