打印

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

[复制链接]
楼主: ayb_ice
手机看帖
扫描二维码
随时随地手机跟帖
41
3.3v| | 2008-6-3 13:08 | 只看该作者 回帖奖励 |倒序浏览

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

使用特权

评论回复
42
simon21ic| | 2008-6-3 14:03 | 只看该作者

to 30楼

不错,可惜题目要求是使用一个宏,特别强调一个

使用特权

评论回复
43
ayb_ice|  楼主 | 2008-6-3 14:39 | 只看该作者

还是匠人厉害

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

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

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

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

使用特权

评论回复
44
程序匠人| | 2008-6-3 14:50 | 只看该作者

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

移植到FREESCALE CW里,有什么问题?不妨直说。匠人电脑上没有安装CW。

使用特权

评论回复
45
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();    
        }               
    }        
}

使用特权

评论回复
46
dld2| | 2008-6-3 14:55 | 只看该作者

总之,有意思

使用特权

评论回复
47
ayb_ice|  楼主 | 2008-6-3 14:57 | 只看该作者

可以有效果

但是会一直有255个多余的NOP,但它没有被执行,跳过去了我已经搞了很长时间,一直没有搞定,CW还有其它比较怪的,那以后再说吧。。。。

使用特权

评论回复
48
程序匠人| | 2008-6-3 15:00 | 只看该作者

to 45楼,x应该加括号

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

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

使用特权

评论回复
49
程序匠人| | 2008-6-3 15:05 | 只看该作者

已加好友

使用特权

评论回复
50
ayb_ice|  楼主 | 2008-6-3 16:04 | 只看该作者

谢谢

也要加"裤"才行

使用特权

评论回复
51
程序匠人| | 2008-6-3 16:07 | 只看该作者

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

45楼被加裤了,外面看不出来。所以是内裤

使用特权

评论回复
52
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

使用特权

评论回复
53
古道热肠| | 2008-6-3 16:42 | 只看该作者

好,楼主抛砖引玉

哈哈,在咱这儿,“舍得孩子套到浪,舍得宝贝换裤子”

使用特权

评论回复
54
呆板书生| | 2008-6-3 16:51 | 只看该作者

路过

使用特权

评论回复
55
acmilann| | 2008-6-3 16:54 | 只看该作者

学习了

使用特权

评论回复
56
原野之狼| | 2008-6-3 18:58 | 只看该作者

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

在这里又一次体现了。

使用特权

评论回复
57
xwj| | 2008-6-3 19:02 | 只看该作者

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

使用特权

评论回复
58
ayb_ice|  楼主 | 2008-6-3 20:13 | 只看该作者

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

使用特权

评论回复
59
Swd21ic| | 2008-6-3 21:33 | 只看该作者

re

学习了..

使用特权

评论回复
60
gtw| | 2008-6-3 23:25 | 只看该作者

有人在穿内裤,闪

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则