找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

麻煩幫我看下這段HC165為什么不對

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:137263 發(fā)表于 2017-3-7 20:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面測程序,執(zhí)行while就變死循環(huán)了,愁死我了。高手幫看下,謝謝啦

void u8_read74hc165_f(void)
{
  uint8 i,j;
  uint8 temp[MAX_NUM_74HC165];
  uint8 temp1[MAX_NUM_74HC165];  
  io_74hc165_sh_ld=0;
  for(i=0;i<MAX_NUM_74HC165;i++)
  {
    temp[i]=0;
   temp1[i]=0;
    for(j=0;j<8;j++)
    {
   
      io_74hc165_sh_ld=1;//
      io_74hc165_clk=0;//
     if(io_74hc165_sda1)//
      {
    delay(500);
    if(io_74hc165_sda1)
    {
         temp[i]|=0x1<<j;
      while(io_74hc165_sda1);
    }
        io_74hc165_clk=1;//
        break;   
      }
       if(io_74hc165_sda2)//
    {
    delay(500);
    if(io_74hc165_sda2)
    {
         temp1[i]|=0x1<<j;  
      while(io_74hc165_sda2);   
    }
        io_74hc165_clk=1;//  
        break;   
      }
      io_74hc165_clk=1;//
    }
  if((temp[i]!=0)||(temp1[i]!=0))
    break;
}
  io_74hc165_sh_ld=0;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 2017-3-7 23:46 | 只看該作者
while(io_74hc165_sda1);

只有在時鐘的上升沿,串行數(shù)據(jù)的輸入端 sda1上的值才被移位輸出。
不能用while   時鐘沒有換,沒有轉(zhuǎn)換電平,執(zhí)行while就變死循環(huán)了
回復(fù)

使用道具 舉報

板凳
ID:137263 發(fā)表于 2017-3-8 19:36 | 只看該作者
angmall 發(fā)表于 2017-3-7 23:46
while(io_74hc165_sda1);

只有在時鐘的上升沿,串行數(shù)據(jù)的輸入端 sda1上的值才被移位輸出。

非常感謝你的答復(fù),那是不是說如果沒有時鐘,sda1始終是上次讀到的數(shù)據(jù),那我這里為了消抖動多的delay,也是沒有意義的
回復(fù)

使用道具 舉報

地板
ID:155507 發(fā)表于 2017-3-8 20:10 | 只看該作者
是的,如果沒有時鐘,sda1始終是上次讀到的數(shù)據(jù),執(zhí)行while就變死循環(huán)了
回復(fù)

使用道具 舉報

5#
ID:137263 發(fā)表于 2017-3-12 22:03 | 只看該作者
angmall 發(fā)表于 2017-3-8 20:10
是的,如果沒有時鐘,sda1始終是上次讀到的數(shù)據(jù),執(zhí)行while就變死循環(huán)了

那HC165按鍵怎么消除抖動呢,不知道有沒有好的建議。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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