找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機通過不同的按鍵來控制LED小燈的開啟時間的程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:932849 發(fā)表于 2021-6-23 15:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
剛學單片機,在百度上的復制過來的:
求單片機通過不同的按鍵來控制LED小燈的開啟時間的程序,謝謝例如,p0.0~p0.7 八個按鍵,依次來控制p1.0口低電平的開啟時間,如:
p0.0口按一下,p1.0口變?yōu)榈碗娖,持續(xù)100毫秒后恢復高電平;
p0.1口按一下,p1.0口變?yōu)榈碗娖,持續(xù)200毫秒后恢復高電平;
依次類推!
程序約簡單越好!謝謝


#include<reg51.h>
#define uchar unsigned char
uchar time,stand;
sbit led=P1^0;
bit flag=0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
flag=~flag;
if(flag)
    {
    time++;
    if(time>=stand){led=1;TR0=0;}
    }
}
main()
{
uchar sw;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
while(1)
    {
    while(1)
        {
        sw=P0;
        if(sw!=0xff)break;
        }
        time=2;
        sw=~sw;
    while(1)
        {
        sw=sw>>1;
        if(sw!=0)time+=2;
        else break;
        }
        TR0=1;
        led=0;
    }
}



我照上面做的結果LED燈是常亮。哪位大佬幫我看看程序哪里有問題。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2021-6-23 16:03 | 只看該作者
構思不好!建議:
1、做個定時器,以形成參考時間鐘。例 如每5ms中斷一次。
2、做個計時器TC,同時給它做一個起動標記TK。
3、每次中斷:
    當TK=1時,就將TC-1,如果TC=0,就將p1.0置1,并將TK清0(即停止計數(shù)不再-1了)。
    當TK=0時,就什么也不做。
    初始設置:TK=0。
4、當p0.0口按一下,就讓TK=1,同時讓TC=100毫秒(20),再將p1.0口變?yōu)榈碗娖健?br />      當p0.1口按一下,就讓TK=1,同時讓TC=200毫秒(40),再將p1.0口變?yōu)榈碗娖健?br /> 你看這樣行不行。
寫程序,要先構思方案,畫出流程圖,最后再寫代碼!

回復

使用道具 舉報

板凳
ID:943276 發(fā)表于 2021-6-23 16:05 | 只看該作者
yzwzfyz 發(fā)表于 2021-6-23 16:03
構思不好!建議:
1、做個定時器,以形成參考時間鐘。例 如每5ms中斷一次。
2、做個計時器TC,同時給它做 ...

不錯大神作品
回復

使用道具 舉報

地板
ID:932849 發(fā)表于 2021-6-23 23:43 | 只看該作者
yzwzfyz 發(fā)表于 2021-6-23 16:03
構思不好!建議:
1、做個定時器,以形成參考時間鐘。例 如每5ms中斷一次。
2、做個計時器TC,同時給它做 ...

謝謝,剛學,對您的建議我還做不來,看來得繼續(xù)學習。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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