最后進行調試時候,為什么這個發光二極管led就總是一閃一閃的,加1時候,led閃得越來越快?
這算是調整亮度嗎?我要是亮和暗那種樣子。
程序都編輯好了
sbit led1=P2^0;
sbit led2=P2^2;
sbit PWM=P3^7;
sbit key1=P2^6;//A加
sbit key2=P2^7;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
u8 fenpin=1;
u16 chuzhi=500;
u16 timer0;
void delay(u16 i)
{
while(i--);
}
void key()
{
if(key1==0) //A加
{
delay(100);
if(key1==0)
{
if(fenpin<16)
{
fenpin++;
beep=0;
}else
{
beep=1;
}
}
while(!key1);
}
if(key2==0) //A減
{
delay(100);
if(key2==0)
{
if(fenpin>=2)
{
fenpin--;
beep=0;
}else
{
beep=1;
}
}
while(!key2);
}
}
void timer_init(void) //定時器初始化函數
{
TMOD=0X51; //設置定時器工作模式
PT0=1;
TH0 = (65536 -chuzhi)/256;//給定時器賦初值
TL0 = (65536 -chuzhi)%256;
TH1=0; //不設初值
TL1=0;
ET0=1; //開中斷
ET1=1;
TR0=1; //開定時器
TR1=1;
EA=1; //開總中斷
}
void main()
{
timer_init();
beep=0;
while(1)
{
key();
}
}
void timer() interrupt 1 //定時器0中斷函數
{
TH0 = (65536 - chuzhi)/256;//給定時器賦初值
TL0 = (65536 - chuzhi)%256;
timer0=!timer0; //時間變量
if(TL1>=fenpin)
{
TL1=0;
PWM=!PWM;
}
if(timer0)
{
P1=0x00;
led1=0;
led2=1;
P1=smgduan[fenpin/10];
}else
{
P1=0x00;
led1=1;
led2=0;
P1=smgduan[fenpin%10];
}
}
|