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

[复制链接]
 楼主| 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
牛牛特工 发表于 2010-2-1 11:10 | 显示全部楼层
系的
zaixian00 发表于 2010-2-1 11:15 | 显示全部楼层
wshlxa 发表于 2010-2-1 11:56 | 显示全部楼层
反质子 发表于 2010-2-1 13:07 | 显示全部楼层
xymxym 发表于 2010-2-1 14:50 | 显示全部楼层
:loveliness:
backupyan 发表于 2010-2-24 09:24 | 显示全部楼层
uchar cc
改为
voletile uchar cc
avlee 发表于 2010-2-25 16:28 | 显示全部楼层
请问楼主用什么开发板?小弟最近想学习下,不知道从何下手,买啥样的开发板呢?有产品介绍没?
c4fantasy 发表于 2010-2-26 15:52 | 显示全部楼层
淘宝买个售后好的,有视频教程的,别太贵了,有流水灯,数码管,矩阵按键,有钱的话可以带个1602LCD,入门没问题了~CPU用877的入门,资料多~
avlee 发表于 2010-3-1 09:00 | 显示全部楼层
谢谢楼上!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

57

帖子

0

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