非常佩服匠人的bit真气**

[复制链接]
18568|113
3.3v 发表于 2008-6-3 13:08 | 显示全部楼层

非常佩服匠人的bit真气**

simon21ic 发表于 2008-6-3 14:03 | 显示全部楼层

to 30楼

不错,可惜题目要求是使用一个宏,特别强调一个
 楼主| ayb_ice 发表于 2008-6-3 14:39 | 显示全部楼层

还是匠人厉害

和我的方法一模一样。还请匠人把它移植到FREESCALE CW里。

以后有时间再给出些宏方面的问题。

补充一下:
  这是我在模拟SPI,IIC时使用的,因为模拟很难保证CLK的高低电平时间相等,当然只要符合最低要求就可以了,但我还是喜欢相等,
也经常看到一些网友在模拟时中间插入很多NOP,既不好看也不好修改,另外插入太多的NOP是没有什么实际意义,但那只是调用者的事了。。。
强烈此帖加“裤”。。。

本人用此宏几年了,一直舍不得拿出来。。。

程序匠人 发表于 2008-6-3 14:50 | 显示全部楼层

ayb_ice别兜圈子了,直接提出问题吧

移植到FREESCALE CW里,有什么问题?不妨直说。匠人电脑上没有安装CW。
 楼主| ayb_ice 发表于 2008-6-3 14:54 | 显示全部楼层

这是我的原文

extern void _nop_(void);
#define _nop1()   _nop_()
#define _nop2()   _nop_() ,_nop_()
#define _nop4()   _nop2() ,_nop2()
#define _nop8()   _nop4() ,_nop4()
#define _nop16()  _nop8() ,_nop8()
#define _nop32()  _nop16(),_nop16()
#define _nop64()  _nop32(),_nop32()
#define _nop128() _nop64(),_nop64()

#define _NOPX _nopx
#define _nopx(x)        
{                       
    if(x < 256){    
        if(x & 0x80){   
            _nop128();  
        }               
        if(x & 0x40){   
            _nop64();   
        }               
        if(x & 0x20){   
            _nop32();   
        }               
        if(x & 0x10){   
            _nop16();   
        }               
        if(x & 0x08){   
            _nop8();    
        }               
        if(x & 0x04){   
            _nop4();    
        }               
        if(x & 0x02){   
            _nop2();    
        }               
        if(x & 0x01){   
            _nop1();    
        }               
    }        
}
dld2 发表于 2008-6-3 14:55 | 显示全部楼层

总之,有意思

 楼主| ayb_ice 发表于 2008-6-3 14:57 | 显示全部楼层

可以有效果

但是会一直有255个多余的NOP,但它没有被执行,跳过去了我已经搞了很长时间,一直没有搞定,CW还有其它比较怪的,那以后再说吧。。。。
程序匠人 发表于 2008-6-3 15:00 | 显示全部楼层

to 45楼,x应该加括号

否则,不支持表达式。不过这是小问题了。

再次印证了“英雄所见略同”的道理

程序匠人 发表于 2008-6-3 15:05 | 显示全部楼层

已加好友

 楼主| ayb_ice 发表于 2008-6-3 16:04 | 显示全部楼层

谢谢

也要加"裤"才行
程序匠人 发表于 2008-6-3 16:07 | 显示全部楼层

已经帮你加了一条裤子了,不过,是内裤。

45楼被加裤了,外面看不出来。所以是内裤
cheungman 发表于 2008-6-3 16:26 | 显示全部楼层

延时采用插入那么多nop,白白浪费很多代码空间.

采用插入多个nop实现精确延时,我看了一下,用的多的话是很占用代码空间的.

我测试了一下,MPLAB8.02+PICC18 8.35,插入250个nop:

__NOPX__(250)
Total ROM used     1541 bytes (2.4%)
Total RAM used       47 bytes (1.4%)   Near RAM used       19 bytes (19.8%)

//__NOPX__(250)
Total ROM used     1041 bytes (1.6%)
Total RAM used       47 bytes (1.4%)   Near RAM used       19 bytes (19.8%)

500个字节啊...



相关链接:https://bbs.21ic.com/upfiles/img/20077/2007719163835573.jpg
古道热肠 发表于 2008-6-3 16:42 | 显示全部楼层

好,楼主抛砖引玉

哈哈,在咱这儿,“舍得孩子套到浪,舍得宝贝换裤子”
呆板书生 发表于 2008-6-3 16:51 | 显示全部楼层

路过
acmilann 发表于 2008-6-3 16:54 | 显示全部楼层

学习了

原野之狼 发表于 2008-6-3 18:58 | 显示全部楼层

在很多智力题中都会用到二进制的思想~~

在这里又一次体现了。
xwj 发表于 2008-6-3 19:02 | 显示全部楼层

哇,惊人新闻:匠人JJ帮 ayb_ice 穿内裤!!!

 楼主| ayb_ice 发表于 2008-6-3 20:13 | 显示全部楼层

还请高手帮忙移植到FREESCALE CW环境

Swd21ic 发表于 2008-6-3 21:33 | 显示全部楼层

re

学习了..
gtw 发表于 2008-6-3 23:25 | 显示全部楼层

有人在穿内裤,闪

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部