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

QQ登錄

只需一步,快速開始

搜索
查看: 6506|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

[求助]為什么這個(gè)函數(shù)返回來的永遠(yuǎn)是0x00

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:17922 發(fā)表于 2009-11-5 16:17 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

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

        j=j>>1+0x80;〖位運(yùn)算符的優(yōu)先級(jí)比+,-低,這樣很容易看出錯(cuò)誤的地方了〗


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

      }
     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個(gè)位,低位補(bǔ)1〖位運(yùn)算符的優(yōu)先級(jí)比+,-低,這樣很容易看出錯(cuò)誤的地方了〗
              Delay(500);
              P0=(P0>>(j)+yunsuan2(i));//p0右移j個(gè)位,高位補(bǔ)1〖位運(yùn)算符的優(yōu)先級(jí)比+,-低,這樣很容易看出錯(cuò)誤的地方了〗

              Delay(500);
            }
       }

 

 }

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

1111 1110

0111 1111

1111 1101

1011 1111

1111 1011

1101 1111

1111 0111

1110 1111

但下載到單片機(jī)里后出現(xiàn)燈亮的順序是這樣的

1111 1110

0111 1111

1111 1100

0011 1111

1111 1000

0001 1111

1111 0000

0000 1111

為什么會(huì)這樣。??

原來是運(yùn)算符的優(yōu)先級(jí)搞錯(cuò)了。

給一起學(xué)習(xí)的同學(xué)做個(gè)反面榜樣吧。

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

使用道具 舉報(bào)

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

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

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

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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