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

QQ登錄

只需一步,快速開(kāi)始

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

求解兩片74hc165級(jí)聯(lián)后發(fā)送數(shù)據(jù)正確,但51單片機(jī)只能檢測(cè)到低八位是怎么回事

[復(fù)制鏈接]
ID:825231 發(fā)表于 2021-5-10 17:03 | 顯示全部樓層 |閱讀模式
8黑幣
本帖最后由 xyi 于 2021-5-11 10:02 編輯

uchar i,j,h;
        uchar temp;
        uchar date[2];
        
        HC165_PL = 0;
        HC165_PL = 1;
        if(HC165_OUT==1)
                        temp |= 0x01;
        
        for(i=0;i<15;i++)
        {
                temp = temp << 1;
                HC165_CLK = 0;
                _nop_();
                _nop_();
                HC165_CLK = 1;
                if(HC165_OUT==1)
                        temp |= 0x01;
        }
        date[0]=(uchar)(temp&0x00ff);
        date[1]=(uchar)((temp<<8)&0x00ff); 1E~L{L22{38HZC$}$B0SRG3.png



回復(fù)

使用道具 舉報(bào)

ID:748096 發(fā)表于 2021-5-10 18:29 | 顯示全部樓層
附上高清電路圖
回復(fù)

使用道具 舉報(bào)

ID:377070 發(fā)表于 2021-7-19 15:48 | 顯示全部樓層

8位8位移,移兩次就可以了,我也是用你上面的程序調(diào)不出來(lái),有大佬解釋一下嗎。
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2021-7-19 16:23 | 顯示全部樓層
uchar temp;只有8位啊~
date[1]=(uchar)((temp<<8)&0x00ff);左移8位就清零了
應(yīng)改作uint temp;
回復(fù)

使用道具 舉報(bào)

ID:934353 發(fā)表于 2021-7-19 16:28 | 顯示全部樓層
(請(qǐng)手工把點(diǎn)替換成.)
www點(diǎn)elecfans點(diǎn)com/yuanqijian/yinjiaotu/20180202628701_a.html
這里解釋的很詳細(xì)了,我不知道你為啥把pl拉低又立馬拉高是什么意思?
回復(fù)

使用道具 舉報(bào)

ID:934353 發(fā)表于 2021-7-19 16:33 | 顯示全部樓層
本帖最后由 開(kāi)心就好hhhh 于 2021-7-19 16:43 編輯

之前的老兄說(shuō)得對(duì),你應(yīng)該用uint來(lái)定義,你將一個(gè)八位的數(shù)據(jù)左移16次肯定不對(duì)的呀
回復(fù)

使用道具 舉報(bào)

ID:814525 發(fā)表于 2021-7-19 17:56 | 顯示全部樓層
uchar i,j,h;
        uint temp;
        uchar date[2];
        
        HC165_PL = 0;
        HC165_PL = 1;
        if(HC165_OUT==1)
                        temp |= 0x01;
        
        for(i=0;i<15;i++)
        {
                temp = temp << 1;
                HC165_CLK = 0;
                _nop_();
                _nop_();
                HC165_CLK = 1;
                if(HC165_OUT==1)
                        temp |= 0x01;
        }
        date[0]=(uchar)(temp&0x00ff);
        date[1]=(uchar)((temp>>8)&0x00ff);  //高8位
回復(fù)

使用道具 舉報(bào)

ID:763596 發(fā)表于 2021-10-28 11:22 | 顯示全部樓層
不是應(yīng)該i<16嗎,應(yīng)該循環(huán)16次才對(duì)吧
回復(fù)

使用道具 舉報(bào)

ID:978853 發(fā)表于 2021-11-7 11:46 | 顯示全部樓層
uchar temp;只有8位
date[1]=(uchar)((temp<<8)&0x00ff);左移8位清零
改作uint temp;
回復(fù)

使用道具 舉報(bào)

ID:908826 發(fā)表于 2021-11-7 15:41 | 顯示全部樓層
數(shù)據(jù)類(lèi)型定義的不對(duì),uchar只有八位,你卻想整個(gè)十六位
回復(fù)

使用道具 舉報(bào)

ID:13282 發(fā)表于 2022-6-3 02:29 | 顯示全部樓層
按鍵的電阻都改為上拉,低有效。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-6-3 06:41 | 顯示全部樓層
        uint temp;
        ......
        date[0]=temp;//取temp低8位,高位溢出舍去
        date[1]=temp>>8;//右移取temp高8位,低位溢出舍去
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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