打印

ICC AVR 中调用函数有问题吗?

[复制链接]
2088|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
349264710|  楼主 | 2010-10-29 09:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我用ICC AVR的编译器,想实现一个数码管的动态显示,用Proteus仿真,调用了delay函数,如下:
#include<iom16v.h>
#include<avrdef.h>
#define uint unsigned int
#define uchar unsigned char
uchar table[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
                          0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void delay(void)
{
uchar i,j;
for(i=0;i<25;i++)
  for(j=0;j<250;j++);
}     
void main(void)
{
uchar b;
DDRC=0xff;
while(1)
{
  for(b=0;b<16;b++)
  {
   PORTC=table[b];
   delay();
  }
}
}
在proteus中只能显示数组的第一个元素0x3F,然后就一直停留在这里,delay函数无效果,数码管也没有动态显示(只显示0)。我把delay函数中的for循环移到主函数中,数码管就能动态显示,这样子是编译器的问题,还是Proteus的问题呢?怎么解决?

数码管.jpg (136.27 KB )

数码管.jpg

相关帖子

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

本版积分规则

3

主题

77

帖子

3

粉丝