微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第19节:依次逐个点亮后逐个熄灭LED的跑马灯程序

第19节:依次逐个点亮后逐个熄灭LED的跑马灯程序

时间:11-22 来源:互联网 点击:

if(uiTimeCnt_01_08> if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr7=1; //第7个亮

ucLed_update=1; //更新显示

ucLedStep_01_08=7; //切换到下一个步骤

}

break;

case 7:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr8=1; //第8个亮

ucLed_update=1; //更新显示

ucLedStep_01_08=8; //切换到下一个步骤

}

break;

case 8:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr8=0; //第8个灭

ucLed_update=1; //更新显示

ucLedStep_01_08=9; //切换到下一个步骤

}

break;

case 9:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr7=0; //第7个灭

ucLed_update=1; //更新显示

ucLedStep_01_08=10; //切换到下一个步骤

}

break;

case 10:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr6=0; //第6个灭

ucLed_update=1; //更新显示

ucLedStep_01_08=11; //切换到下一个步骤

}

break;

case 11:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr5=0; //第5个灭

ucLed_update=1; //更新显示

ucLedStep_01_08=12; //切换到下一个步骤

}

break;

case 12:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr4=0; //第4个灭

ucLed_update=1; //更新显示

ucLedStep_01_08=13; //切换到下一个步骤

}

break;

case 13:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr3=0; //第3个灭

ucLed_update=1; //更新显示

ucLedStep_01_08=14; //切换到下一个步骤

}

break;

case 14:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr2=0; //第2个灭

ucLed_update=1; //更新显示

ucLedStep_01_08=15; //切换到下一个步骤

}

break;

case 15:

if(uiTimeCnt_01_08>=const_time_level_01_08) //时间到

{

uiTimeCnt_01_08=0; //时间计数器清零

ucLed_dr1=0; //第1个灭

ucLed_update=1; //更新显示

ucLedStep_01_08=0; //返回到最开始处,重新开始新的一次循环。

}

break;

}

}

void T0_time() interrupt 1

{

TF0=0; //清除中断标志

TR0=0; //关中断

if(uiTimeCnt_01_08<0xffff) //设定这个条件,防止uiTimeCnt超范围。

{

uiTimeCnt_01_08++; //累加定时中断的次数,

}

TH0=0xf8; //重装初始值(65535-2000)=63535=0xf82f

TL0=0x2f;

TR0=1; //开中断

}

void delay_short(unsigned int uiDelayShort)

{

unsigned int i;

for(i=0;i

{

; //一个分号相当于执行一条空语句

}

}

void delay_long(unsigned int uiDelayLong)

{

unsigned int i;

unsigned int j;

for(i=0;i

{

for(j=0;j<500;j++) //内嵌循环的空指令数量

{

; //一个分号相当于执行一条空语句

}

}

}

void initial_myself() //第一区 初始化单片机

{

TMOD=0x01; //设置定时器0为工作方式1

TH0=0xf8; //重装初始值(65535-2000)=63535=0xf82f

TL0=0x2f;

}

void initial_peripheral() //第二区 初始化外围

{

EA=1; //开总中断

ET0=1; //允许定时中断

TR0=1; //启动定时中断

}

总结陈词:

这节讲了在第1个至第8个LED灯中,先依次逐个亮再依次逐个灭的跑马灯程序。下一节我们略作修改,继续做跑马灯的程序,要求在第9个至第16个LED灯中,依次逐个亮灯并且每次只能亮一个灯(其它的都灭),依次循环,我们该如何编写程序?欲知详情,请听下回分解-----依次逐个亮灯并且每次只能亮一个灯的跑马灯程序。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top