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

標(biāo)題: 單片機(jī)IO口擴(kuò)展(并轉(zhuǎn)串)編程疑問 [打印本頁]

作者: 分享請(qǐng)教    時(shí)間: 2018-11-11 21:00
標(biāo)題: 單片機(jī)IO口擴(kuò)展(并轉(zhuǎn)串)編程疑問
哪位大神能幫我看看,以下程序中  下劃線黑體加粗的問題  
/**************************************************************************************
*                              單片機(jī)IO擴(kuò)展--74HC165實(shí)驗(yàn)                                                                                                  *
實(shí)現(xiàn)現(xiàn)象:下載程序后,按下獨(dú)立按鍵可以點(diǎn)亮對(duì)應(yīng)的led
                        K1--led1
***************************************************************************************/
#include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
#include "intrins.h"
typedef unsigned int u16;          //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
//--定義使用的IO口--//
#define GPIO_LED P0
sbit    IN_PL   = P1^6;   
sbit    IN_Data = P1^7;    //數(shù)據(jù)通過P1.7腳移進(jìn)單片機(jī)內(nèi)處理
sbit    SCK    = P3^6;
/*******************************************************************************
* 函 數(shù) 名         : Read74HC165
* 函數(shù)功能: 使用165讀取一個(gè)字節(jié)數(shù)據(jù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
u8 Read74HC165(void)
{  
  u8 i;
  u8 indata;
               
   IN_PL = 0;
   _nop_();        //短暫延時(shí) 產(chǎn)生一定寬度的脈沖
   IN_PL = 1;           //將外部信號(hào)全部讀入鎖存器中
   _nop_();

   indata=0;   //保存數(shù)據(jù)的變量清0  
   for(i=0; i<8; i++)
    {
          indata = indata<<1;           //左移一位
          SCK = 0;   //時(shí)鐘置0         
      _nop_();
          indata |= IN_Data;   //為什么要有或運(yùn)算,不能直接賦值嗎?????
      SCK = 1;   //時(shí)鐘置1         
        }

   return(indata);         
}


/*******************************************************************************
* 函 數(shù) 名       : main
* 函數(shù)功能                 : 主函數(shù)
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{        
        u8 h165Value;

        GPIO_LED = 0;
        while(1)
        {
                h165Value = Read74HC165();
                if(h165Value != 0xFF)
                {
                        GPIO_LED = ~h165Value;
                }        
        }                        
}



作者: zl2168    時(shí)間: 2018-11-12 08:49
本帖最后由 zl2168 于 2018-11-13 23:15 編輯

給你介紹幾個(gè)165參考案例
實(shí)例25  74HC165串行輸入8/16數(shù)據(jù)信號(hào)

Proteus仿真一下,確認(rèn)有效
實(shí)例25 74HC165串行輸入8-16位數(shù)據(jù)信號(hào).rar (78.82 KB, 下載次數(shù): 20)


實(shí)例70  74HC165串行輸入8位按鍵狀態(tài) 實(shí)例70 74HC165串行輸入8位按鍵狀態(tài).7z (18.29 KB, 下載次數(shù): 11)
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行。書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。



作者: diy1997    時(shí)間: 2018-11-12 09:30
比如,indata接收了第1位數(shù)據(jù),值為“1” ,這時(shí),indata值為#00000001;

然后向左移1位,為接收下一個(gè)數(shù)據(jù)做準(zhǔn)備,這時(shí),indata值為#00000010;

indata開始接收了第2位數(shù)據(jù),值為“1” 。

如果直接賦值,indata值為#00000001,接收的第1位數(shù)據(jù)就沒有了;

如果 indata |= IN_Data;  indata值為#00000011,成功接收第二位;

后面重復(fù),直到接收完8位數(shù)據(jù)。
作者: ktymm    時(shí)間: 2018-11-12 13:44
給你幾個(gè)例子參考看看,不難的
作者: 分享請(qǐng)教    時(shí)間: 2018-11-12 16:10
diy1997 發(fā)表于 2018-11-12 09:30
比如,indata接收了第1位數(shù)據(jù),值為“1” ,這時(shí),indata值為#00000001;

然后向左移1位,為接收下一個(gè) ...

謝謝,謝謝!
我有一個(gè)疑問,將值“1”賦值給一個(gè)字節(jié),就是將00000001付給這個(gè)字節(jié),不是說只把1賦給字節(jié)的最后一位(不會(huì)影響其他的前七位),對(duì)吧,我之前一直覺得一個(gè)管腳的0和1只會(huì)影響所改字節(jié)的最后一位,所以之前想的是錯(cuò)的。



作者: 分享請(qǐng)教    時(shí)間: 2018-11-14 10:18
zl2168 發(fā)表于 2018-11-12 08:49
給你介紹幾個(gè)165參考案例
實(shí)例25  74HC165串行輸入8/16位數(shù)據(jù)信號(hào)

謝謝!

作者: 消逝的青盞    時(shí)間: 2020-4-15 16:37
不能直接賦值,以下為個(gè)人理解,IN_Data一次只能輸出一個(gè)狀態(tài)的值,和indata進(jìn)行“或”運(yùn)算后將狀態(tài)保存在最低位,之后進(jìn)行移位,最低位的值移到次低位,最低位補(bǔ)零,上升沿后,IN_Data輸出下一個(gè)狀態(tài)的值,和indata“或”運(yùn)算后接著保存在最低位,,以此類推,得到8位狀態(tài)值。




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