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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

[求助]為什么這個函數返回來的永遠是0x00

[復制鏈接]
跳轉到指定樓層
樓主
ID:17922 發表于 2009-11-5 16:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

int    yunsuan2(unsigned int i)          //低位補1函數
{
    unsigned int j=0x00;
    for(;i>1;i--)
      {

        j=j>>1+0x80;〖位運算符的優先級比+,-低,這樣很容易看出錯誤的地方了〗


      }
    return i=j;
}
/******************************************************/
int       yunsuan1(unsigned int i)            //高位補1函數
{
     unsigned int j=0x00;
     for(;i>1;i--)
     {
       j=j<<1+0x01;〖位運算符的優先級比+,-低,這樣很容易看出錯誤的地方了〗

      }
     return i=j;

}

 

 

void main(void)
{
      unsigned int j=0;
      unsigned int i;
      while(1)
      {

 

       P0=0xff;

       for(j=1;j<=4;j++)
           {
              i=j;
              P0=(P0<<(j)+yunsuan1(i));//P0左移j個位,低位補1〖位運算符的優先級比+,-低,這樣很容易看出錯誤的地方了〗
              Delay(500);
              P0=(P0>>(j)+yunsuan2(i));//p0右移j個位,高位補1〖位運算符的優先級比+,-低,這樣很容易看出錯誤的地方了〗

              Delay(500);
            }
       }

 

 }

程序的目的是要依次得到(0代表亮燈)

1111 1110

0111 1111

1111 1101

1011 1111

1111 1011

1101 1111

1111 0111

1110 1111

但下載到單片機里后出現燈亮的順序是這樣的

1111 1110

0111 1111

1111 1100

0011 1111

1111 1000

0001 1111

1111 0000

0000 1111

為什么會這樣!!??

原來是運算符的優先級搞錯了。

給一起學習的同學做個反面榜樣吧。

[此貼子已經被作者于2009-11-5 18:44:52編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:18333 發表于 2009-11-6 11:17 | 只看該作者

加個()就可以解決問題了。

如:j=(j>>1)+0x80

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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