程序问题

[复制链接]
2011|8
 楼主| pengf 发表于 2011-10-22 11:28 | 显示全部楼层 |阅读模式
我做的是usb设备,用仿真器仿真的,编译通过,倒是调试时遇到问题
这是延时2us的
void delay2us()
{
uint i;
for (i=DELAY_START_VALUE; i!=0; i--);
}
但是下面的delay2us()第一个能通过,第二个在运行到for(i=DELAY_START_VALUE; i!=0; i--);时就卡住了
 楼主| pengf 发表于 2011-10-22 11:33 | 显示全部楼层
void CH375_WR_CMD_PORT(uchar cmd)
{
delay2us();
CH375_CMD_PORT=cmd;
delay2us();
}
如果我把第二个 delay2us()屏蔽了,后面再用到延时2us,还是回运行不下去。郁闷ing,大家帮帮小弟……


}
司徒老鹰 发表于 2011-10-22 11:39 | 显示全部楼层
这种函数没有实际操作,很容易被优化掉。
llljh 发表于 2011-10-22 11:43 | 显示全部楼层
建议修改仿真编译软件的优化等级试试。
 楼主| pengf 发表于 2011-10-22 11:46 | 显示全部楼层
哦,还能?
llljh 发表于 2011-10-22 11:55 | 显示全部楼层
或者在for循环里加入NOP指令
juventus9554 发表于 2011-10-22 11:59 | 显示全部楼层
void delay2us()
{
uint i;
for (i=DELAY_START_VALUE; i!=0; i--);
//     _nop_();  // FOR循环中没有Nop是很容易被优化掉的
}
 楼主| pengf 发表于 2011-10-22 12:02 | 显示全部楼层
嗯,知道了、
 楼主| pengf 发表于 2011-10-22 12:07 | 显示全部楼层
结贴了,周末愉快
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

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