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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2375|回復: 8
打印 上一主題 下一主題
收起左側

i2c程序報錯

[復制鏈接]
跳轉到指定樓層
樓主
ID:100982 發表于 2022-8-12 16:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <reg52.h>

  2. #include <intrins.h>



  3. sbit sda = P2^0;

  4. sbit scl = P2^1;



  5. #define        i2c_delay() {_nop_;_nop_;_nop_;_nop_;}



  6. void i2c_start()

  7. {

  8.         scl = 1;

  9.         sda = 1;

  10.         i2c_delay();



  11.         sda = 0;

  12.         i2c_delay();



  13.         scl = 0;

  14. }



  15. void i2c_stop()

  16. {

  17.         scl = 0;

  18.         sda = 0;

  19.         i2c_delay();



  20.         scl = 1;

  21.         i2c_delay();



  22.         sda = 1;

  23.         i2c_delay();

  24. }



  25. bit i2c_write(unsigned char dat)

  26. {

  27.         bit ack = 0;

  28.         unsigned char mask = 0;

  29.        

  30.         for(mask = 0x80; mask != 0; mask >> 1)

  31.         {

  32.                 if((mask&dat) == 0)

  33.                 {

  34.                          sda = 0;

  35.                 }

  36.                 else

  37.                 {

  38.                         sda = 1;

  39.                 }

  40.                

  41.                 i2c_delay();

  42.                 scl = 1;

  43.                 i2c_delay();       

  44.                 scl = 0;

  45.         }

  46.        

  47.         sda = 1;

  48.         i2c_delay();



  49.         scl = 1;

  50.         i2c_delay();



  51.         ack = sda;

  52.         i2c_delay();

  53.        

  54.         scl = 0;

  55.        

  56.         return ack;       

  57. }



  58. bit i2c_addr(unsigned char addr)

  59. {

  60.         bit ack;

  61.        

  62.         i2c_start();

  63.         ack = i2c_write(addr << 1);       

  64.         i2c_stop();



  65.         return ack;

  66. }
復制代碼

寫了這么一個i2c的代碼,編譯后一直報錯說I2CTRY.C(60): warning C275: expression with possibly no effect   
求問了,實在不知道是咋回事,求大神指教。

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

使用道具 舉報

沙發
ID:883242 發表于 2022-8-13 03:04 | 只看該作者
程序員只考慮error,對于warning是完全看不見的。
回復

使用道具 舉報

板凳
ID:68189 發表于 2022-8-13 11:02 | 只看該作者
d KEIL中   _nop_();是這樣用的!!!!
#define        i2c_delay() {_nop_();_nop_();_nop_();_nop_();}
回復

使用道具 舉報

地板
ID:100982 發表于 2022-8-13 11:43 | 只看該作者
wpppmlah 發表于 2022-8-13 11:02
d KEIL中   _nop_();是這樣用的!!!!
#define        i2c_delay() {_nop_();_nop_();_nop_();_nop_();}

額,沒看懂
回復

使用道具 舉報

5#
ID:161164 發表于 2022-8-13 12:48 | 只看該作者
這代碼是I2CTRY.C里的?
如果不是,請貼I2CTRY.C的代碼
回復

使用道具 舉報

6#
ID:748788 發表于 2022-8-13 13:25 | 只看該作者

被偽函數害了,這條語句其實只是一個等式: i2c_deley() = 4個_nop_()
回復

使用道具 舉報

7#
ID:94031 發表于 2022-8-13 14:05 | 只看該作者

_nop_; 和 _nop_(); 是不一樣的。
回復

使用道具 舉報

8#
ID:401564 發表于 2022-8-13 14:43 | 只看該作者
我一直認為,寫單片機程序,最好的方法就是復制
但前提是,你得先會自己寫,你得先自己理解
_nop_();這空指令,它得是個函數吧,函數是不是應該有個()呢?
而且,就算原來的 i2c_delay()是對的,4個空指令在STC單片機上,那可不一定能滿足標準IIC的延時要求的自己寫一個延時不行嗎?應該不難的吧
void Delay()                 //用于IIC延
{
unsigned char i;
for(i=0;i<20;i++);
}
你這代碼多半是直接復制別人的,然后不看一下就開始驗證,搞半天才發現不行....
回復

使用道具 舉報

9#
ID:1040201 發表于 2022-8-13 16:10 | 只看該作者
_nop_; 和 _nop_(); 是不一樣的。學到了
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表