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

標題: 單片機C51編程遇到了一個問題 [打印本頁]

作者: Magatop    時間: 2017-5-8 11:47
標題: 單片機C51編程遇到了一個問題
....
while(1)
{
  ADresult[0]=getdata(0);
  if( X<=100 || X>=200)
  {
   BUZZER=1;
  }
  else
  {
   BUZZER=0;
  }
.....
當X=150,這個時候蜂鳴器不響;然而:
...
unsigned int  X;
BUZZER=0;
while(1)
{
  
ADresult[0]=getdata(0);
  if( X<=100 || X>=200)
  {
   BUZZER=1;
  }
  //else
  //{
  //BUZZER=0;
  //}
.....
else去掉,當X=150時,蜂鳴器還是響,很費解為什么當if條件不滿足(X=150)時,仍然執行了“ BUZZER=1”?


作者: Magatop    時間: 2017-5-8 12:09
解決了。并非是單片機執行了if{},而是條件不滿足時自動跳過,執行了P2^7=1 (BUZZER的定義式:BUZZER=P2^7)。else注釋掉后,在加一句BUZZER=0即可。那么單片機在默認的時候P2^7口是輸出高電平嘍?
作者: lyf898    時間: 2017-5-8 22:10
Magatop 發表于 2017-5-8 12:09
解決了。并非是單片機執行了if{},而是條件不滿足時自動跳過,執行了P2^7=1 (BUZZER的定義式:BUZZER=P2^7) ...

除P0口未上拉時外,其他端口在空閑時都是高電平
作者: Magatop    時間: 2017-5-9 02:16
1樓的解決方案是強制fengming=0,超出這個范圍也不會響,并沒有解決問題。。
作者: 依然是你    時間: 2017-5-9 09:14
while(1)
{
  
ADresult[0]=getdata(0);
  if( X<=100 || X>=200)
  {
   BUZZER=1;
  }
主程序只要滿足一次 BUZZER=1就一直存在了
作者: 文龍    時間: 2017-5-9 10:45
好像看懂了
作者: 我的51黑論壇    時間: 2017-5-9 12:43
看看語法有沒有錯誤
作者: Magatop    時間: 2017-5-9 13:54
依然是你 發表于 2017-5-9 09:14
while(1)
{
  

主程序只送了一次150,沒有滿足BUZZER=1的條件啊。。
作者: Magatop    時間: 2017-5-9 13:57
文龍 發表于 2017-5-9 10:45
好像看懂了

求指教
作者: lgjdqm    時間: 2017-5-10 15:51
else去掉,默認 BUZZER高電平




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1