全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1641
推到 Plurk!
推到 Facebook!

請問8051 P1-0按下一下 讓P3-0 ON 再按一下OFF

答題得分者是:src
tom0906
一般會員


發表:3
回覆:3
積分:1
註冊:2007-11-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-22 19:04:25 IP:218.160.xxx.xxx 訂閱
請問8051 P1-0按下一下 讓P3-0 ON 再按一下OFF

請問各位前輩 如何讓k1按一下 led=1 再按一下k1 led=o
以下是我的程 式 我只會寫第一次按下k1 led=1 問題是再按第二次k1 讓led=0 程式要如何寫 請開示一下 感恩

#include
sbit k1=P1^0;
sbit led=P3^0;

delay(int d)
{
int i, j;
for(i=0; ifor(j=0; j<200; j ) ;
}

main()
{
while(1)
{
if(k1==0) { led=1;delay(10) }
}

{
------
周悟德
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-22 20:05:29 IP:118.169.xxx.xxx 訂閱
main()
{
bool keyDown = false;
led = 0;
while(1){
if(!k1 &&
!keyDown){
keyDown = true;
led ^= 1;
delay(10);
}else{
keyDown = false;
}
}
編輯記錄
taishyang 重新編輯於 2008-10-22 20:07:33, 註解 無‧
tom0906
一般會員


發表:3
回覆:3
積分:1
註冊:2007-11-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-10-22 23:27:37 IP:218.160.xxx.xxx 訂閱
請問keyDown 要定義那一支 I/O port 呀 新手上路 請見諒
===================引 用 taishyang 文 章===================
main()
{
bool keyDown = false;
led = 0;
while(1){
if(!k1 &&
!keyDown){
keyDown = true;
led ^= 1;
delay(10);
}else{
keyDown = false;
}
}
------
周悟德

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-23 09:13:12 IP:60.249.xxx.xxx 未訂閱
只要是可以作為輸入使用的, 那一根 pin 都可以.

P.S : 建議去找相關入門書籍先看看.

===================引 用 tom0906 文 章===================
請問keyDown 要定義那一支 I/O port 呀 新手上路 請見諒
===================引 用 taishyang 文 章===================
main()
{
bool keyDown = false;
led = 0;
while(1){
if(!k1 &&
!keyDown){
keyDown = true;
led ^= 1;
delay(10);
}else{
keyDown = false;
}
}
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-10-23 09:54:56 IP:118.169.xxx.xxx 訂閱
它只是一個放在RAM裡面的變數而已

===================引 用 tom0906 文 章===================
請問keyDown 要定義那一支 I/O port 呀 新手上路 請見諒

src
高階會員


發表:1
回覆:94
積分:154
註冊:2005-08-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-10-23 10:34:31 IP:61.216.xxx.xxx 訂閱

[code cpp]
#include
sbit k1=P1^0;
sbit led=P3^0;

void delay(unsigned int k)
{
unsigned int i,j;
for (i=0;i<=k;i )
for (j=0;j<=110;j );
}

main()
{
while(1)
{
if(k1==0)
{
led=~led;
delay(100);
}
}

}[/code]


===================引 用 tom0906 文 章===================
請問8051 P1-0按下一下 讓P3-0 ON 再按一下OFF

請問各位前輩 如何讓k1按一下 led=1 再按一下k1 led=o
以下是我的程 式 我只會寫第一次按下k1 led=1 問題是再按第二次k1 讓led=0 程式要如何寫 請開示一下 感恩

#include
sbit k1=P1^0;
sbit led=P3^0;

delay(int d)
{
int i, j;
for(i=0; ifor(j=0; j<200; j ) ;
}

main()
{
while(1)
{
if(k1==0) { led=1;delay(10) }
}

{
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-10-23 10:37:08 IP:118.169.xxx.xxx 訂閱
純討論,若這樣的話,按住k1不放,LED會一直toggle ^_^

===================引 用 src 文 章===================
[code cpp]
#include
sbit k1=P1^0;
sbit led=P3^0;

void delay(unsigned int k)
{
unsigned int i,j;
for (i=0;i<=k;i )
for (j=0;j<=110;j );
}

main()
{
while(1)
{
if(k1==0)
{
led=~led;
delay(100);
}
}

}[/code]
src
高階會員


發表:1
回覆:94
積分:154
註冊:2005-08-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-10-23 10:52:10 IP:61.216.xxx.xxx 訂閱

[code delphi]
#include
sbit k1=P1^0;
sbit led=P3^0;
bit Release=1;

void delay(unsigned int k)
{
unsigned int i,j;
for (i=0;i<=k;i )
for (j=0;j<=110;j );
}

main()
{
while(1)
{
if(k1==0)
{
if(Release==1)
{
Release=0;
led=~led;
delay(50);
}
goto ret;
}
Release=1;
ret:;
}
}
[/code]

===================引 用 taishyang 文 章===================
純討論,若這樣的話,按住k1不放,LED會一直toggle ^_^

===================引 用 src 文 章===================
[code cpp]
#include
sbit k1=P1^0;
sbit led=P3^0;

void delay(unsigned int k)
{
unsigned int i,j;
for (i=0;i<=k;i )
for (j=0;j<=110;j );
}

main()
{
while(1)
{
if(k1==0)
{
led=~led;
delay(100);
}
}

}[/code]
tom0906
一般會員


發表:3
回覆:3
積分:1
註冊:2007-11-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-10-23 15:29:17 IP:59.112.xxx.xxx 訂閱
謝謝指導 已經可以了  不過好像會有彈跳的問題  我自己再想辦法  真的很感謝您
===================引 用 src 文 章===================

[code delphi]
#include
sbit k1=P1^0;
sbit led=P3^0;
bit Release=1;

void delay(unsigned int k)
{
unsigned int i,j;
for (i=0;i<=k;i )
for (j=0;j<=110;j );
}

main()
{
while(1)
{
if(k1==0)
{
if(Release==1)
{
Release=0;
led=~led;
delay(50);
}
goto ret;
}
Release=1;
ret:;
}
}
[/code]

===================引 用 taishyang 文 章===================
純討論,若這樣的話,按住k1不放,LED會一直toggle ^_^

===================引 用 src 文 章===================
[code cpp]
#include
sbit k1=P1^0;
sbit led=P3^0;

void delay(unsigned int k)
{
unsigned int i,j;
for (i=0;i<=k;i )
for (j=0;j<=110;j );
}

main()
{
while(1)
{
if(k1==0)
{
led=~led;
delay(100);
}
}

}[/code]
------
周悟德
系統時間:2024-05-03 16:35:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!