我用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的问题呢?怎么解决? |