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

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

QQ登錄

只需一步,快速開始

搜索
查看: 2449|回復(fù): 6
收起左側(cè)

利用開發(fā)板上的開關(guān)及可受單片機(jī)IO腳控制的發(fā)光二極管 求分析

[復(fù)制鏈接]
ID:728433 發(fā)表于 2020-9-22 22:56 | 顯示全部樓層 |閱讀模式
//項(xiàng)目:利用開發(fā)板上的開關(guān)及可受單片機(jī)IO腳控制的發(fā)光二極管,上電的時(shí)候,L1接在P1.0管腳上的發(fā)光二極管在閃爍,當(dāng)每一次按下開關(guān)SP1的時(shí)候,L2接在P1.1管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時(shí)候,L3接在P1.2管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時(shí)候,L4接在P1.3管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時(shí)候,又輪到L1在閃爍了,如此輪流下去。
//問題:如果刪去第2,3,4個(gè)燈的代碼,第一個(gè)燈就可以按下亮,但是加上后就全不亮了,也沒有語法錯(cuò)誤,我想知道我的問題出在哪里。
//我是一個(gè)初學(xué)者,還沒有掌握這門技術(shù),希望論壇的大哥們看到這么弱智的問題不要?jiǎng)优x謝您們!!!!

單片機(jī)源程序如下:
#include<reg52.h>

sbit sp1=P3^0;
sbit sp2=P3^1;
sbit sp3=P3^2;
sbit sp4=P3^3;

void delay(int z)
{
int x,y;
for(x=z;x>0;x-- )
   for(y=114;y>0;y--) ;
}

void main()
{
if(sp1==0)
{
delay(10);
if(sp1==0)
{P1=0xfe;
delay(5);}
while(1);
}
         if(sp2==0)
{
delay(10);
if(sp2==0)
{P1=0xfd;
delay(5);}
while(1);
}
if(sp3==0)
{
delay(10);
if(sp3==0)
{P1=0xfb;
delay(5);}
while(1);
}
if(sp4==0)
{
delay(10);
if(sp4==0)
{P1=0xf7;
delay(5);}
while(1);
}


}


回復(fù)

使用道具 舉報(bào)

ID:149144 發(fā)表于 2020-9-23 00:07 | 顯示全部樓層
{P1=0xfe;
delay(5);}
這個(gè)時(shí)候他不會(huì)閃 ,如果共電源的,LED只會(huì)亮,然后延時(shí) ,還是亮著,0xFE = 1111 1110
{
  P1 = 0xFE;
  delay(5);
  P1 = 0xFF;
  delay(5);
}
這樣 LED 先亮 延時(shí) 再滅 再延時(shí) 看著就是 閃了 ;后面的都一樣
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2020-9-23 12:56 | 顯示全部樓層
while(1);修改while(sp1==0);
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-9-23 15:12 | 顯示全部樓層
每按一次開關(guān)SP1,LED1~LED4輪流閃爍,以此反復(fù)。
  1. #include<reg52.h>

  2. sbit sp1=P3^0;
  3. //sbit sp2=P3^1;
  4. //sbit sp3=P3^2;
  5. //sbit sp4=P3^3;

  6. char i=0;
  7. int  j=0;

  8. void delay(int z)
  9. {
  10.         int x,y;
  11.         for(x=z;x>0;x-- )
  12.            for(y=114;y>0;y--) ;
  13. }

  14. void main()
  15. {
  16.         while(1)
  17.         {
  18.                 if(sp1==0)
  19.                 {
  20.                         delay(10);
  21.                         if(sp1==0)
  22.                         {
  23.                                 i++;
  24.                                 if(i>=4)
  25.                                         i=0;
  26.                         }
  27.                         while(!sp1);
  28.                 }
  29.                 j++;
  30.                 if(j>=20000)
  31.                         j=0;
  32.                 if(j<10000)
  33.                         P1=~(0x01<<i);
  34.                 else P1=0xff;
  35.         }
  36. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:337139 發(fā)表于 2020-9-23 17:21 | 顯示全部樓層
問題在while(1);上。多調(diào)試兩次的。
回復(fù)

使用道具 舉報(bào)

6#
無效樓層,該帖已經(jīng)被刪除
ID:728433 發(fā)表于 2020-9-23 21:51 | 顯示全部樓層
xianfajushi 發(fā)表于 2020-9-23 12:56
while(1);修改while(sp1==0);

謝謝哦,改了之后就可以了,您能解釋一下為啥嗎?
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2020-9-24 09:49 | 顯示全部樓層
while(1);是無限循環(huán)while(sp1==0);是等待按鍵釋放
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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