久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

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

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

請(qǐng)教單片機(jī)+74hc165程序的疑惑

[復(fù)制鏈接]
ID:578842 發(fā)表于 2021-5-10 14:57 | 顯示全部樓層 |閱讀模式
其中這部分,請(qǐng)教大神釋疑:
indata|=IN_Dat;
意思是通過(guò)或運(yùn)算把數(shù)據(jù)賦值給indata,請(qǐng)問(wèn)IN_Dat的數(shù)據(jù)是在最低位嗎?
0000 0000 0000 0000|0000 0000 0000 0001 ,是這個(gè)意思嗎?

  1. #include <reg52.H>
  2. #include <intrins.h>

  3. #define  NOP()   _nop_()   /* 定義空指令 */

  4. //SPI 接口
  5. sbit    CLK    = P3^6;           //串行時(shí)鐘
  6. sbit    IN_PL  = P1^6;    //把數(shù)據(jù)加載到鎖存器中
  7. sbit    IN_Dat = P1^7;    //數(shù)據(jù)通過(guò)P1.7腳移進(jìn)單片機(jī)內(nèi)處理

  8. sbit    RELAY  = P1^4;
  9. sbit    BEEP   = P1^5;

  10. unsigned char bdata Key;
  11. sbit    K0=Key^0;         //位定義
  12. sbit    K1=Key^1;         //位定義
  13. sbit    K2=Key^2;         //位定義
  14. sbit    K3=Key^3;         //位定義
  15. sbit    K4=Key^4;
  16. sbit    K5=Key^5;
  17. sbit    K6=Key^6;
  18. sbit    K7=Key^7;

  19. bit  M0 ,K0J;  //位定義
  20. unsigned long ReHC74165(void);         //函數(shù)聲名
  21. void beep();   

  22. /********************************************************
  23. *        主函數(shù)                                                                                                 *
  24. *                                                                                                                 *
  25. ********************************************************/
  26. main()
  27.   {         

  28.   while(1)
  29.   {
  30.     unsigned long  Input=ReHC74165();//調(diào)用165驅(qū)動(dòng)程序
  31.          Key=Input&0xff;  //將數(shù)據(jù)傳給位變量
  32.          RELAY = 1;
  33.      P2 = 0xff;          //清除

  34.           //實(shí)現(xiàn)脈沖輸入  大家仔細(xì)體會(huì)
  35.     if(K0&K0J)M0=~M0;      
  36.            K0J=~K0;  

  37.         if(M0) {RELAY = 0; P2 = 0x7f;        }//實(shí)現(xiàn)脈沖輸入
  38.         if(K1) {beep();    P2 = 0xbf;   }//K1 為1時(shí)開(kāi)啟蜂鳴器和2個(gè)燈
  39.         if(K2) {beep();    P2 = 0xdf;   }
  40.     if(K3) {beep();    P2 = 0xef;   }
  41.         if(K4) {beep();    P2 = 0xf7;   }
  42.         if(K5) {beep();    P2 = 0xfb;   }
  43.         if(K6) {beep();    P2 = 0xfd;   }
  44.         if(K7) {beep();    P2 = 0xfe;   }
  45.    }   

  46. }

  47. /**********************************************************
  48. *                                                                                                                   *
  49. *        蜂鳴器 (讓蜂鳴器發(fā)出動(dòng)聽(tīng)聲音)                                                   *
  50. ************************************************************/
  51. void beep()
  52. {
  53.   unsigned char i , j;
  54.   for (i=0;i<2;i++)
  55.    {

  56.    for (j = 0; j<255; j++) {_nop_();}
  57.    BEEP=!BEEP;                 //BEEP取反
  58.    }
  59.   BEEP=1;                      //關(guān)閉蜂鳴器
  60. }

  61. /*************************此部分為74HC165的驅(qū)動(dòng)程序使用SPI總線連接*************************************/


  62. /*********************************************************************************************************
  63. ** 函數(shù)名稱(chēng):  74HC165
  64. ** 功能描述:
  65. ** 管腳描述:請(qǐng)參考相關(guān)的芯片資料(學(xué)習(xí)光盤(pán)中以配)
  66. *********************************************************************************************************/
  67. unsigned long ReHC74165(void)
  68. {  
  69.   unsigned char i;
  70.   unsigned int indata;
  71.                
  72.    IN_PL=0;
  73.    NOP();    //短暫延時(shí) 產(chǎn)生一定寬度的脈沖
  74.    IN_PL=1;         //將外部信號(hào)全部讀入鎖存器中
  75.    NOP();

  76.    indata=0;   //保存數(shù)據(jù)的變量清0  
  77.    for(i=0; i<8; i++)
  78.     {
  79.           indata=indata<<1;         //左移一位

  80.            CLK=0;   //時(shí)鐘置0
  81.       NOP();
  82.          indata|=IN_Dat;
  83.       CLK=1;   //時(shí)鐘置1         
  84.         }

  85.    return indata;         //將保存數(shù)據(jù)的變量取反后返回
  86. }



復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:578842 發(fā)表于 2021-5-10 17:14 | 顯示全部樓層
頂一頂帖子,求各位老師指教
回復(fù)

使用道具 舉報(bào)

ID:917199 發(fā)表于 2021-5-10 18:38 | 顯示全部樓層

印象中好像是這樣的:
indata|=IN_Dat     ------->indata=indata|IN_Dat
如果
indata=0000 0000 0000 0000       IN_DAT=0000 0000 0000 0001
那么結(jié)果應(yīng)該是indat=0000 0000 0000 0001
回復(fù)

使用道具 舉報(bào)

ID:917199 發(fā)表于 2021-5-10 18:39 | 顯示全部樓層
一樣的小白,僅供參考
回復(fù)

使用道具 舉報(bào)

ID:578842 發(fā)表于 2021-5-10 18:50 | 顯示全部樓層
timerzero 發(fā)表于 2021-5-10 18:38
印象中好像是這樣的:
indata|=IN_Dat     ------->indata=indata|IN_Dat
如果

關(guān)鍵是IN_Dat是單一位的芯片數(shù)據(jù)輸出腳,感覺(jué)和16位的數(shù)據(jù)有點(diǎn)不合,是不是還有不知道的規(guī)則,就是想問(wèn)這一點(diǎn)。
也就是說(shuō):是不是遇到這樣的數(shù)據(jù)輸出單片機(jī)就自動(dòng)把它放在最低位?
回復(fù)

使用道具 舉報(bào)

ID:917199 發(fā)表于 2021-5-10 19:14 | 顯示全部樓層
unsigned int indata
看來(lái)是8位數(shù)據(jù),像串口那樣逐位接受?     我小白等一位大佬
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区三区免费观看 | 国产精品久久久久无码av | 亚洲 欧美 日韩在线 | 伊人春色成人网 | 国产成人高清 | 天天玩天天干天天操 | 精品一区二区视频 | av网址在线播放 | 青娱乐国产 | 在线免费观看日本 | 亚洲风情在线观看 | 黄色在线免费观看视频网站 | 国产三级一区二区三区 | 观看av | 亚洲精品在线观看网站 | 91看国产| 欧美精品片 | 婷婷开心激情综合五月天 | 九色 在线 | 成人毛片一区二区三区 | japan25hdxxxx日本| 国产欧美日韩精品一区二区三区 | 99精品观看 | 婷婷中文在线 | 日日操夜夜操天天操 | 午夜小电影 | 欧美成人一区二免费视频软件 | 91在线影院| 亚洲精品一区二区网址 | 亚洲精品视频网站在线观看 | 欧美激情一区二区 | 视频一区二区在线 | 亚洲成人蜜桃 | 日本精品一区二区三区在线观看视频 | 91国产精品在线 | 在线观看av网站永久 | 亚洲精品视频一区二区三区 | 91精品国产乱码久久久 | 精品久久久久久一区二区 | 国产精品久久久久一区二区三区 | 天堂av中文 |