请各位大神指导指导
时间:10-02
整理:3721RD
点击:
我编写了一段程序,是实现 在数码管上显示的数字每隔一段时间加一,只显示0-9循环显示,但我用了程序延迟和定时器延迟都不行,其中程序延迟时改变延迟时间显示都不一样,感觉根本都是错的,请各位大神指导指导
#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar smg_du[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴极时数码管输出的0-9
// uchar smg_du1[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳极时数码管输出的0-9
void delay_50us(uint t) ;
void delay_50ms(uint t);
sbit led=P2^0;
void main(void)
{
led=0;
EA=1;
EX0=1;
IT0=1;
P0=0xFF;
while(1)
{
uchar i=0;
for(;i<10;i++)
{
P0=smg_du[i];
delay_50us(100);
}
}
}
void int0() interrupt 0 //外部中断 0服务函数
{
led=1;
delay_50ms(100);
led=0;
}
void delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void delay_50ms(uint t)
{
uint k;
for(;t>0;t--)
for(k=6245;k>0;k--);
}
#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar smg_du[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴极时数码管输出的0-9
// uchar smg_du1[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳极时数码管输出的0-9
void delay_50us(uint t) ;
void delay_50ms(uint t);
sbit led=P2^0;
void main(void)
{
led=0;
EA=1;
EX0=1;
IT0=1;
P0=0xFF;
while(1)
{
uchar i=0;
for(;i<10;i++)
{
P0=smg_du[i];
delay_50us(100);
}
}
}
void int0() interrupt 0 //外部中断 0服务函数
{
led=1;
delay_50ms(100);
led=0;
}
void delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void delay_50ms(uint t)
{
uint k;
for(;t>0;t--)
for(k=6245;k>0;k--);
}
你用的是外中断0而不是定时中断~~
delay_50us(100);这个延时太小了,眼睛还没看清楚就过去了可能
延时到秒级看看
试过了,也不行
