打印

真正适用于PIC16F887的编译工具是什么?

[复制链接]
4172|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ftpeople|  楼主 | 2010-1-31 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的PICC 9.70,类似以下的程序,全部会给我优化掉,我把编译工具选项的优化全部关掉,也还是老样了,就这么一个短延时,搞得要吐血了!
void dd1(uchar cc)
{
  while(cc--);
}      

以下是反汇编后的
void dd1(uchar cc)
464:               {
465:                 while(cc--);
  0252    3001     MOVLW 0x1     //反汇编后只有这一句了.
466:               }
沙发
牛牛特工| | 2010-2-1 09:29 | 只看该作者
本帖最后由 牛牛特工 于 2010-2-1 09:47 编辑

用_delay (x)就可以了 这个是延时N个周期
或者_delay3(x)是延时3×N个周期
pic的库函数 这个编译出来仅三条语句
另外:你可以把编译模式选成lite试试

使用特权

评论回复
板凳
ftpeople|  楼主 | 2010-2-1 09:58 | 只看该作者
改成lite也是没用的,后来换成PICC9.65的就OK了!
刚才试了下_delay(x),真的可以,哈哈,太感谢了!我当时就是在找这种延时库函数,但没找着。请问这个是在哪个包含文件里的?

使用特权

评论回复
地板
ftpeople|  楼主 | 2010-2-1 10:02 | 只看该作者
原来就在pic.h里:L


/****************************************************************/
/* Built-in delay routine                                        */
/****************************************************************/
#pragma inline(_delay)
extern void _delay(unsigned long);
// NOTE: To use the macros below, YOU must have previously defined _XTAL_FREQ
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
#endif

使用特权

评论回复
5
牛牛特工| | 2010-2-1 11:10 | 只看该作者
系的

使用特权

评论回复
6
zaixian00| | 2010-2-1 11:15 | 只看该作者
:)

使用特权

评论回复
7
wshlxa| | 2010-2-1 11:56 | 只看该作者
:)

使用特权

评论回复
8
反质子| | 2010-2-1 13:07 | 只看该作者
:)

使用特权

评论回复
9
xymxym| | 2010-2-1 14:50 | 只看该作者
:loveliness:

使用特权

评论回复
10
backupyan| | 2010-2-24 09:24 | 只看该作者
uchar cc
改为
voletile uchar cc

使用特权

评论回复
11
avlee| | 2010-2-25 16:28 | 只看该作者
请问楼主用什么开发板?小弟最近想学习下,不知道从何下手,买啥样的开发板呢?有产品介绍没?

使用特权

评论回复
12
c4fantasy| | 2010-2-26 15:52 | 只看该作者
淘宝买个售后好的,有视频教程的,别太贵了,有流水灯,数码管,矩阵按键,有钱的话可以带个1602LCD,入门没问题了~CPU用877的入门,资料多~

使用特权

评论回复
13
avlee| | 2010-3-1 09:00 | 只看该作者
谢谢楼上!

使用特权

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

本版积分规则

20

主题

57

帖子

0

粉丝