#include <reg51.h>
#include <intrins.h>
void delay(unsigned int i); //函数声名
// 此表为 LED 的字模
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
main()
{
unsigned int LedNumVal=1 ,C ; //定义变量
while(1)
{
if (++C>= 300)
{ LedNumVal++ ; //每隔300个扫描周期加一次
C =0; //每隔300个扫描清零
}
// 将字模送到P0口显示
P0 = LED7Code[LedNumVal%10]&0x7f; //LED7 0x7f为小数点 共阴和共阳此处也是不一样;
delay(150); //调用延时程序
}
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
我想问下延时函数delay()和300个扫描周期是什么意思?
如果把delay()函数去掉 数码管的数字就会变的特别快;
如果把上面if 语句去掉 只保留LedNumVal++ ; 数码管就会显示8 然后没有变化 这是为什么?
#include <intrins.h>
void delay(unsigned int i); //函数声名
// 此表为 LED 的字模
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
main()
{
unsigned int LedNumVal=1 ,C ; //定义变量
while(1)
{
if (++C>= 300)
{ LedNumVal++ ; //每隔300个扫描周期加一次
C =0; //每隔300个扫描清零
}
// 将字模送到P0口显示
P0 = LED7Code[LedNumVal%10]&0x7f; //LED7 0x7f为小数点 共阴和共阳此处也是不一样;
delay(150); //调用延时程序
}
}
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
我想问下延时函数delay()和300个扫描周期是什么意思?
如果把delay()函数去掉 数码管的数字就会变的特别快;
如果把上面if 语句去掉 只保留LedNumVal++ ; 数码管就会显示8 然后没有变化 这是为什么?