//给你一个思路,例程片段参考一下,昨天发的有错误,改动后要审核但丢失了,重发一次。
unsigned char a; //键值变量0~6,0为初始态,不控制闪烁
unsigned char count; //数码管轮流显示计数变量
unsigned int Cnt_ms; //1ms中断计数变量
/******定时器0初始化程序******/
void Timer0Init(void) //1毫秒@12.000MHz
{
TMOD = 0x01; //设置定时器模式
TL0 = 0x18; //设置定时初值
TH0 = 0xFC; //设置定时初值
TR0 = 1; //定时器0开始计时
EA=1; //开总中断
ET0=1; //开定时器0中断
}
/******定时器0中断服务程序******/
void timer0() interrupt 1
{
TL0 = 0x18; //设置定重载值
TH0 = 0xFC; //设置定重载值
Cnt_ms++; //1ms变量自+1
count++; //轮流显示计数
if(Cnt_ms>=1000) //1秒,可根据闪烁频率修改
Cnt_ms=0;
if(count>=4) //显示程序,1ms显示一位
{
count=0;
switch(count)
{
case 0:
//显示段语句
if((a==1)&(count<500))//满足两个条件执行以下语句。
{
//关闭位语句
}
else
{
//显示位语句
}
break;
case 1:
//显示段语句
if((a==2)&(count<500))//满足两个条件执行以下语句,a=键值
{
//关闭位语句
}
else
{
//显示位语句
}
break;
case 2:
//显示段语句
if((a==3)&(count<500))//满足两个条件执行以下语句,a=键值
{
//关闭位语句
}
else
{
//显示位语句
}
break;
case 3:
//显示段语句
if((a==4)&(count<500))//满足两个条件执行以下语句,a=键值
{
//关闭位语句
}
else
{
//显示位语句
}
break;
}
}
}
//给你一个思路,例程片段参考一下,昨天发的有错误,改动后要审核但丢失了,重发一次。
unsigned char a; //键值变量0~6,0为初始态,不控制闪烁
unsigned char count; //数码管轮流显示计数变量
unsigned int Cnt_ms; //1ms中断计数变量
/******定时器0初始化程序******/
void Timer0Init(void) //1毫秒@12.000MHz
{
TMOD = 0x01; //设置定时器模式
TL0 = 0x18; //设置定时初值
TH0 = 0xFC; //设置定时初值
TR0 = 1; //定时器0开始计时
EA=1; //开总中断
ET0=1; //开定时器0中断
}
/******定时器0中断服务程序******/
void timer0() interrupt 1
{
TL0 = 0x18; //设置定重载值
TH0 = 0xFC; //设置定重载值
Cnt_ms++; //1ms变量自+1
count++; //轮流显示计数
if(Cnt_ms>=1000) //1秒,可根据闪烁频率修改
Cnt_ms=0;
if(count>=4) //显示程序,1ms显示一位
{
count=0;
switch(count)
{
case 0:
//显示段语句
if((a==1)&(count<500))//满足两个条件执行以下语句。
{
//关闭位语句
}
else
{
//显示位语句
}
break;
case 1:
//显示段语句
if((a==2)&(count<500))//满足两个条件执行以下语句,a=键值
{
//关闭位语句
}
else
{
//显示位语句
}
break;
case 2:
//显示段语句
if((a==3)&(count<500))//满足两个条件执行以下语句,a=键值
{
//关闭位语句
}
else
{
//显示位语句
}
break;
case 3:
//显示段语句
if((a==4)&(count<500))//满足两个条件执行以下语句,a=键值
{
//关闭位语句
}
else
{
//显示位语句
}
break;
}
}
}
举报