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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

只要開關閉合,LED燈亮,開關斷開,LED燈熄滅,程序怎樣實現?

[復制鏈接]
跳轉到指定樓層
樓主
ID:72649 發表于 2021-9-17 21:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
只要開關閉合,LED燈亮,開關斷開,LED1燈熄滅,延時10秒,LED2燈點亮,程序怎樣實現?要求延時用定時器寫。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 2#
ID:831673 發表于 2021-9-22 22:48 | 只看該作者
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. uchar aa; sbit led1=P0^0; sbit led2=P0^1;
  4. sbit key=P0^2;
  5. void init();
  6. void display(); void main()//主程序
  7. {
  8. init();
  9. display();
  10. }
  11. void display()
  12. {
  13. if(key==0)
  14. {
  15. led1=1;//打開開關就點亮
  16. }
  17. else
  18. {
  19. led1=0;//關閉開關關燈
  20. while(aa==200)//每50ms aa+1,加200次就是10s
  21. {
  22. led2=1;//十秒后led2燈亮起
  23. }
  24. }
  25. }
  26. void init()//初始化函數
  27. {
  28. EA=1;
  29. TMOD=0X01;
  30. ET0=1;
  31. TR0=1;
  32. }
  33. void time0() interrupt 1//定時器0
  34. {
  35. TH0=(65596-50000)/256;
  36. TL0=(65596-50000)%256;
  37. aa++;
  38. }

復制代碼
這是我根據你的要求,用定時器0寫的,有注釋可以參考,我也在學習單片機沒多久,可能代碼寫的有些錯誤,可以參考一下。
其中key是開關,這里表示按鈕,低電平有效,init是定時器的初始化函數。

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:964308 發表于 2021-9-18 07:49 來自手機 | 只看該作者
#include "reg51.h"  sbit led1=P0^0; sbit led2=P0^1; sbit key=P0^2;  int delay( unsigned int x)    //ms級延時函數 {     unsigned int i,j;     for(i=0;i<x;i++)         for(j=0;j<110;j++); }  void main() { unsigned int a=0;     while(1)     {         if(key)         {             if(a)             {             led1=0;             delay(10000);             led2=1;             a=0;             }         }         else         {         led1=1;         a=1;         }     } }
回復

使用道具 舉報

地板
ID:964308 發表于 2021-9-18 07:52 | 只看該作者
為什么需要定時器,都延時10s了還定時器
#include "reg51.h"

sbit led1=P0^0;
sbit led2=P0^1;
sbit key=P0^2;

int delay( unsigned int x)    //ms級延時函數
{
    unsigned int i,j;
    for(i=0;i<x;i++)
        for(j=0;j<110;j++);
}

void main()
{
unsigned int a=0;
    while(1)
    {
        if(key)
        {
        delay(50);
            if(a)
            {
            led1=0;
            delay(10000);
            led2=1;
            a=0;
            }
        }
        else
        {
        delay(50);
        led1=1;
        a=1;
        }
    }
}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:584195 發表于 2021-9-18 08:05 | 只看該作者
先去學定時器,再學中斷!期待你的作品成功交!
回復

使用道具 舉報

6#
ID:716656 發表于 2021-9-18 08:54 | 只看該作者
找一個led燈閃爍的程序,在基礎上sbit增加一個燈,通過你的邏輯修改程序,延時時間不對的話可以在stc_isp上找
回復

使用道具 舉報

7#
ID:72649 發表于 2021-9-18 09:10 | 只看該作者
dzc3458 發表于 2021-9-18 07:52
為什么需要定時器,都延時10s了還定時器
#include "reg51.h"

關鍵還有長時間延時需要調用
回復

使用道具 舉報

8#
ID:72649 發表于 2021-9-18 09:21 | 只看該作者
dzc3458 發表于 2021-9-18 07:52
為什么需要定時器,都延時10s了還定時器
#include "reg51.h"
unsigned long SysTick;

void Timer0Init(void)                //1毫秒@18.432MHz
{
        AUXR |= 0x80;                //定時器時鐘1T模式
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0x00;                //設置定時初值
        TH0 = 0xB8;                //設置定時初值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
}

timer0() interrupt 1
{
        SysTick++;      
}

void Delay(unsigned long var)
{
    unsigned long i;
      
        i = SysTick;

        while(SysTick-i < var)
        {
       ;
        }   
}
回復

使用道具 舉報

9#
ID:161164 發表于 2021-9-18 10:44 | 只看該作者
hjx5548 發表于 2021-9-18 09:21
unsigned long SysTick;

void Timer0Init(void)                //1毫秒@18.432MHz

結合你的定時器就完成了

  1. void main()
  2. {
  3.     Timer1Init();//定時器初始化
  4.     key1_O = key1;
  5.     while (1)
  6.     {
  7.                                         if(!Delayms_XX)
  8.                                         {Delayms_XX=10;//在1ms定時中斷中減1
  9.                                                 led1 = key1;
  10.                                                 if(!key1_O && key1)//上升沿觸發
  11.                                                 {
  12.                                                         Delay_10s = 1;
  13.                                                         Count_10s = 0;
  14.                                                 }key1_O = key1;
  15.                                                 if(Delay_10s)
  16.                                                 {
  17.                                                         if(Count_10s++>1000)//10ms X 1000 = 10s
  18.                                                         {
  19.                                                                 Delay_10s = 0;
  20.                                                                 led2 = 0;
  21.                                                         }
  22.                                                 }
  23.                                         }                       
  24.     }
  25. }
復制代碼

回復

使用道具 舉報

10#
ID:72649 發表于 2021-9-19 21:50 | 只看該作者
lkc8210 發表于 2021-9-18 10:44
結合你的定時器就完成了

能不能完整寫出了?
回復

使用道具 舉報

11#
ID:161164 發表于 2021-9-19 22:06 | 只看該作者
hjx5548 發表于 2021-9-19 21:50
能不能完整寫出了?

當然可以~
靠你了老弟~!
回復

使用道具 舉報

12#
ID:967508 發表于 2021-9-22 15:27 | 只看該作者
這個程序其實很簡單,實現的方法有很多,可以先定義io口加一個if語句就可以了
回復

使用道具 舉報

13#
ID:824490 發表于 2021-9-22 21:15 | 只看該作者
沒有時間延時的話就3行代碼:

sbit SW  = P0^0;
sbit LED = P1^0;

LED = SW;
或者 LED=~SW;
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品网 | 免费观看日韩av | 日韩亚洲欧美综合 | 亚洲一区二区不卡在线观看 | 精品免费看 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | chinese中国真实乱对白 | 成人激情视频免费观看 | av一二三区 | 网色| 亚洲精品久久久久久一区二区 | 久久精品91久久久久久再现 | 久久久久久久97 | 蜜桃精品在线 | 亚洲一区国产精品 | 欧美日韩精品中文字幕 | 一区二区三区四区不卡视频 | 狠狠入ady亚洲精品经典电影 | 国产高潮av | 久久精品久久精品久久精品 | 91欧美精品成人综合在线观看 | 成人在线一区二区 | 欧美精品在欧美一区二区 | 精品免费 | 九热在线 | 亚洲精品在线免费 | 亚洲精品久久久蜜桃网站 | 国产精品久久久久久久久久 | 国产精品成人一区二区三区 | 欧美黄色免费网站 | 国产精品久久视频 | 一区二区三区在线电影 | 亚洲一区二区视频 | 亚洲网站在线观看 | 亚洲综合视频 | 中文字幕在线一区二区三区 | 久www| 成人国产在线视频 | 一区二区三区免费 | 日韩精品久久久久久 | 中文字幕一区在线观看视频 |