求助 我自己写的AVR单片机延时程序怎么出问题啦?

我的程序如下//-----------------------------------------------------------------//名称:闪烁的LED/... 我的程序如下
//-----------------------------------------------------------------
// 名称: 闪烁的LED
//-----------------------------------------------------------------
// 说明: LED按设定的时间间隔不断闪烁
//-----------------------------------------------------------------
#include <avr/io.h>

//-----------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------
void delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=500;j>0;j--);
}
int main( )
{
DDRC=0XFF;
while(1){
PORTC=0XFF;
delay(200);
PORTC=0X00;
delay(200);

}

}
为什么在调用delay(int x)时,不管怎么改变x的值,延时的是将一样长呀;
我通过调试时观察processor窗口的stop watch 发现不管x的值怎么改变,延时的时间一样长,这是为什么呀,求解惑
展开
 我来答
wangyuewu08
2012-04-16
知道答主
回答量:13
采纳率:0%
帮助的人:8.6万
展开全部
开发环境是什么?winavr的话会将自定义的延时函数给优化掉,可以使用库函数中的_delay_ms()和_delay_us(),好象是通过调用汇编指令来进行延时的。
百度网友cf286434c
2012-04-16 · TA获得超过195个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:89.2万
展开全部
只能说软件上是行得通的。有板子的话下载看看,或者PROTEUS仿真下,单看软件调试不行。
追问
不行呀 在protues里仿真时也起不到改变延时时间的效果,郁闷死啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangys393
2018-06-13
知道答主
回答量:21
采纳率:0%
帮助的人:1.5万
展开全部

for(i=0;i<x;i++)

 {  for(j=500;j>0;j--);  }

第二个for循环少了大括号

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式