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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于adc0832更改部分單片機(jī)代碼后無法工作的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:577554 發(fā)表于 2021-10-23 20:24 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如圖,原代碼是0832完成數(shù)據(jù)采集后,前8位先用if判斷DO是否為0然后將temp1分別與0和1做或運(yùn)算(注釋部分),我在想為什么不能直接將temp1直接與DO進(jìn)行或運(yùn)算,然后我就講代碼改了一下,然后0832就不工作了,請問邏輯都是一樣的,keil編譯也未報(bào)錯(cuò),為什么到仿真中就不工作了

單片機(jī)源程序如下:
  1.   for( i = 0;i < 8;i++ )      //前讀取8位的值
  2.   {
  3.     _nop_();
  4.     temp1 <<= 1;
  5.     Clk = 1;
  6.     _nop_();
  7.     Clk = 0;
  8.    /*if (DO)
  9.       temp1|=0x01;
  10.     else
  11.      temp1|=0x00
  12. */
  13.       temp1|=DO;  //更改部分
  14.   }
  15.   for (i = 0; i < 8; i++)      //后讀取8位的值
  16.   {
  17.     temp2 >>= 1;
  18.     /*if (DO)
  19.       temp2|= 0x80;
  20.     else
  21.      temp2|=0x00
  22. */
  23.       temp2|= DO;  //更改部分
  24.     _nop_();
  25.     Clk = 1;
  26.     _nop_();
  27.     Clk = 0;
復(fù)制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2021-10-24 06:34 | 只看該作者
把讀取0832的高8位更改為temp1|=DO;沒有問題,但把讀取低8位更改為temp2|=DO;不行。
因?yàn)樽x取DO的是位數(shù)據(jù)要放在temp2的最高位。如堅(jiān)持這種寫法就要把DO移到高位,
并且要把DO強(qiáng)制轉(zhuǎn)換成char。如:temp2|=((char)DO<<7);,這就顯得多此一舉了。
函數(shù)解釋:
  1. //請先了解ADC0832模數(shù)轉(zhuǎn)換的串行協(xié)議,再來讀本函數(shù),主要是對應(yīng)時(shí)序圖來理解,
  2. //本函數(shù)是模擬0832的串行協(xié)議進(jìn)行的
  3. unsigned char ad0832read(bit ch)
  4. {
  5.         uchar i,Data1=0,Data2=0;
  6.         CLK=0; //時(shí)鐘置低平
  7.         DO =1; //開始信號為高電平
  8.         CS =0; //片選信號置低,啟動(dòng)AD轉(zhuǎn)換芯片
  9.         CLK=1; //輸入開始信號(構(gòu)成一個(gè)正脈沖),時(shí)鐘上升沿,輸入開始信號
  10.         CLK=0; //時(shí)鐘下降沿
  11.         //模擬信號輸入模式選擇(1:單模信號,0:雙模差分信號)
  12.         DO =1;
  13.         CLK=1; //時(shí)鐘上升沿,輸入開始信號
  14.         CLK=0; //時(shí)鐘下降沿
  15.         //模擬信號輸入通道選擇(1:通道CH1,0:通道CH0)
  16.         DO =ch; //選擇通道0
  17.         CLK=1; //時(shí)鐘上升沿,輸入開始信號
  18.         CLK=0; //時(shí)鐘下降沿
  19.         DO =1; //數(shù)據(jù)線置高,準(zhǔn)備接收數(shù)據(jù)
  20.         for(i=0;i<8;i++) //從高位移入數(shù)據(jù)
  21.         {
  22.                 CLK=1;
  23.                 CLK=0; //時(shí)鐘下降沿,AD0832輸出數(shù)據(jù),高位(MSB)先
  24.                 Data1=Data1<<1;
  25.                 if(DO==1)
  26.                         Data1=Data1|0x01; //數(shù)據(jù)左移位,補(bǔ)0 ,如果數(shù)據(jù)為“1”,移入1, 如果數(shù)據(jù)為“0”,移入0,
  27.         }
  28.         for(i=0;i<8;i++) //從低位移入數(shù)據(jù)
  29.         {
  30.                 Data2=Data2>>1;
  31.                 if(DO==1)
  32.                         Data2=Data2|0x80; //數(shù)據(jù)右移位,補(bǔ)0,如果數(shù)據(jù)為“1”,移入1如果數(shù)據(jù)為“0”,移入0,
  33.                 CLK=1;
  34.                 CLK=0; //時(shí)鐘下降沿,AD0832輸出數(shù)據(jù),高位(MSB)先
  35.         }
  36.         //數(shù)據(jù)線置高,釋放總線,完成一次轉(zhuǎn)換
  37.         CLK=1;
  38.         DO =1;
  39.         CS =1;
  40.         return (Data1==Data2)?Data1:0; //   如果相等輸出data1  or  0
  41. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:577554 發(fā)表于 2021-10-25 17:43 | 只看該作者
wulin 發(fā)表于 2021-10-24 06:34
把讀取0832的高8位更改為temp1|=DO;沒有問題,但把讀取低8位更改為temp2|=DO;不行。
因?yàn)樽x取DO的是位數(shù)據(jù) ...

原來如此,感謝大佬解答
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产高清免费在线 | 狠狠干影院 | 国产视频1区2区 | 亚洲毛片在线观看 | 国产精品久久久久久吹潮日韩动画 | 成人国产精品免费观看 | 亚洲成人蜜桃 | www.国产一区 | 国产免费一区二区 | 亚洲天堂av网| 久久久精品网站 | 国产视频一区二区在线观看 | 国产精品永久免费视频 | www国产精| 欧美激情精品久久久久久免费 | avav在线看| 激情五月婷婷丁香 | 九九热免费看 | 精品免费 | 欧美精品一区二区免费 | 伊人网站在线 | 免费视频一区 | 欧美一区二区在线免费观看 | 欧美成人精品欧美一级 | 精品国产视频 | 免费美女网站 | 久久99精品久久久久婷婷 | 欧美日韩在线国产 | 国内久久 | 国产日韩精品视频 | 国产成人亚洲精品 | av资源中文在线天堂 | 久久99这里只有精品 | 尹人av | 国产一区不卡 | 欧美一级欧美一级在线播放 | 国产在线观看一区二区三区 | 97视频精品 | 一区在线视频 | 成人国产精品色哟哟 | 久久久久久成人 |