新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机左右流水灯与数码管动态显示C程序

单片机左右流水灯与数码管动态显示C程序

作者: 时间:2016-12-02 来源:网络 收藏

//定时器初始化程序
void init()
{
//定时器0和定时器1初始化函数
TMOD = 0x11;//定义定时器1和0在工作方式1下
TH0 = 0xB8; //定时器0定时20毫秒
TL0 = 0x00;
TH1 = 0xFC; //定时器1定时20毫秒
TL1 = 0x67;
TR0 = 1; //打开定时器0
TR1 = 1; //打开定时器1
EA = 1; //打开总中断
ET0 = 1; //打开定时器0中断
ET1 = 1; //打开定时器1中断
}
//数码管显示子程序
void display()
{
dula = 1;
P0 = table_du[num];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = table_we[num1];
wela = 0;
dula = 1;
P0 = table_du[num];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = table_we[num1];
wela = 0;

dula = 1;
P0 = table_du[num];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = table_we[num1];
wela = 0;

dula = 1;
P0 = table_du[num];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = table_we[num1];
wela = 0;

dula = 1;
P0 = table_du[num];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = table_we[num1];
wela = 0;

dula = 1;
P0 = table_du[num];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = table_we[num1];
wela = 0;

}
//中断定时器0
void int_time0() interrupt 1
{
TH0 = 0xB8;
TL0 = 0x00;
counter++;
if(flag == 0)
{
if(counter % 10 == 0)//定时200毫秒
{
P1 = ~(1 << j++);//流水灯左移流动
if(j == 8)
{
j = 0;
}
}
}
else
{
if(counter % 5 == 0)
{
//counter = 0;
//流水灯右移流动
P1 = ~(0x80 >> j++);
FM = ~FM;
if(j == 8)
j = 0;
}
}


}
//中断定时器1
void int_time1() interrupt 3
{
TH1 = 0xFC;
TL1 = 0x67;
counter1++;

}

本文引用地址:https://www.eepw.com.cn/article/201612/324624.htm

上一页 1 2 下一页

评论


技术专区

关闭