使用单片机汇编语言流水灯编写一个单片机程序,有八个灯,依次点亮,全亮后全灭,循环三次

单片机C语言程序-依次点亮八个LED灯
> 单片机C语言程序-依次点亮八个LED灯
单片机C语言程序-依次点亮八个LED灯
电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去单片机是不是很有趣?下面是c语言程序源码#include void delay100ms();
//如果函数是在主函数后面定义,那么一定要在主函数前面声明
void main(){i=0while(1){P1=i;i--;delay100ms();if(i==0)i=0}}void delay100ms(void)//{unsigned char a,b,c;for(c=19;c>0;c--)for(b=20;b>0;b--)for(a=230;a>0;a--);}
分享给小伙伴们:
我来说两句……
微信公众号二
微信公众号一一场Pokemon
Go,让全世界的小精灵师都暴露了。因此,在……
2016年初,一场人机大战点燃了人工智能芯片的争夺战,而……
今年,频频爆出摩尔定律将不再是制造工艺界的神话,虽说……
值农历新年佳节之际,很多半导体公司都借机召开了自己的……
21ic 2016年度采访之TE――将无人机与VR连接在一起
演讲人:彭煜歆时间: 10:00:00
演讲人:杜复旦时间: 10:00:00
演讲人:沈凯时间: 10:00:00
预算:¥5,000-¥10000预算:¥50,000-¥100,000
第19节:依次逐个点亮LED之后,再依次逐个熄灭LED的跑马灯程序
[导读]从业将近十年!手把手教你单片机程序框架 第19讲:开场白:上一节讲了把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式。这节在上一节的驱动程序基础上,开始讲跑马灯程序。我的跑马灯程序看似简单而且重复,其实
从业将近十年!手把手教你单片机程序框架 第19讲:
上一节讲了把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式。这节在上一节的驱动程序基础上,开始讲跑马灯程序。我的跑马灯程序看似简单而且重复,其实蕴含着鸿哥的大智慧。它是基于鸿哥的switch状态机思想,领略到了它的简单和精髓,以后任何所谓复杂的工程项目,都不再复杂。要教会大家一个知识点:通过本跑马灯程序,加深理解鸿哥所有实战项目中switch状态机的思想精髓。
具体内容,请看源代码讲解。
(1)硬件平台:基于朱兆祺51单片机学习板。
(2)实现功能:第1个至第8个LED灯,先依次逐个亮,再依次逐个灭。第9至第16个LED灯一直灭。
(3)源代码讲解如下:
#include &REG52.H&
#define const_time_level_01_08 &200 &//第1个至第8个LED跑马灯的速度延时时间
void initial_myself(); & &
void initial_peripheral();
void delay_short(unsigned int uiDelayShort);&
void delay_long(unsigned int uiDelaylong);
void led_flicker_01_08(); // 第1个至第8个LED的跑马灯程序,逐个亮,逐个灭.
void hc595_drive(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01);
void led_update(); &//LED更新函数
void T0_time(); &//定时中断函数
sbit hc595_sh_dr=P2^3; & &
sbit hc595_st_dr=P2^4; &
sbit hc595_ds_dr=P2^5; &
unsigned char ucLed_dr1=0; & //代表16个灯的亮灭状态,0代表灭,1代表亮
unsigned char ucLed_dr2=0;
unsigned char ucLed_dr3=0;
unsigned char ucLed_dr4=0;
unsigned char ucLed_dr5=0;
unsigned char ucLed_dr6=0;
unsigned char ucLed_dr7=0;
unsigned char ucLed_dr8=0;
unsigned char ucLed_dr9=0;
unsigned char ucLed_dr10=0;
unsigned char ucLed_dr11=0;
unsigned char ucLed_dr12=0;
unsigned char ucLed_dr13=0;
unsigned char ucLed_dr14=0;
unsigned char ucLed_dr15=0;
unsigned char ucLed_dr16=0;
unsigned char ucLed_update=0; &//刷新变量。每次更改LED灯的状态都要更新一次。
unsigned char ucLedStep_01_08=0; //第1个至第8个LED跑马灯的步骤变量
unsigned int &uiTimeCnt_01_08=0; //第1个至第8个LED跑马灯的统计定时中断次数的延时计数器
unsigned char ucLedStatus16_09=0; & //代表底层74HC595输出状态的中间变量
unsigned char ucLedStatus08_01=0; & //代表底层74HC595输出状态的中间变量
void main()&
& &initial_myself(); &
& &delay_long(100); &&
& &initial_peripheral();&
& &while(1) &&
& & & led_flicker_01_08(); // 第1个至第8个LED的跑马灯程序,逐个亮,逐个灭.
& & & & & led_update(); &//LED更新函数
void led_update() &//LED更新函数
& &if(ucLed_update==1)
& & & &ucLed_update=0; & //及时清零,让它产生只更新一次的效果,避免一直更新。
& & & &if(ucLed_dr1==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x01;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr2==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x02;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr3==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x04;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr4==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x08;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0xf7;
& & & & & &}
& & & &if(ucLed_dr5==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x10;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr6==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x20;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr7==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x40;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0
& & & & & &}
& & & &if(ucLed_dr8==1)
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01|0x80;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus08_01=ucLedStatus08_01&0x7f;
& & & & & &}
& & & &if(ucLed_dr9==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x01;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr10==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x02;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr11==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x04;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr12==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x08;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0xf7;
& & & & & &}
& & & &if(ucLed_dr13==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x10;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr14==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x20;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr15==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x40;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0
& & & & & &}
& & & &if(ucLed_dr16==1)
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09|0x80;
& & & & & &}
& & & & & &else
& & & & & &{
& & & & & & & ucLedStatus16_09=ucLedStatus16_09&0x7f;
& & & & & &}
& & & &hc595_drive(ucLedStatus16_09,ucLedStatus08_01); &//74HC595底层驱动函数
void hc595_drive(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01)
& &unsigned char ucTempD
& &hc595_sh_dr=0;
& &hc595_st_dr=0;
& &ucTempData=ucLedStatusTemp16_09; &//先送高8位
& &for(i=0;i&8;i++)
& & & & &if(ucTempData&=0x80)hc595_ds_dr=1;
& & & & &else hc595_ds_dr=0;
& & & & &hc595_sh_dr=0; & & //SH引脚的上升沿把数据送入寄存器
& & & & &delay_short(15);&
& & & & &hc595_sh_dr=1;
& & & & &delay_short(15);&
& & & & &ucTempData=ucTempData&&1;
& &ucTempData=ucLedStatusTemp08_01; &//再先送低8位
& &for(i=0;i&8;i++)
& & & & &if(ucTempData&=0x80)hc595_ds_dr=1;
& & & & &else hc595_ds_dr=0;
& & & & &hc595_sh_dr=0; & & //SH引脚的上升沿把数据送入寄存器
& & & & &delay_short(15);&
& & & & &hc595_sh_dr=1;
& & & & &delay_short(15);&
& & & & &ucTempData=ucTempData&&1;
& &hc595_st_dr=0; &//引脚把两个寄存器的数据更新输出到74HC595的输出引脚上并且锁存起来
& &delay_short(15);&
& &hc595_st_dr=1;
& &delay_short(15);&
& &hc595_sh_dr=0; & &//拉低,抗干扰就增强
& &hc595_st_dr=0;
& &hc595_ds_dr=0;
/* 注释一:
* 以下程序,看似简单而且重复,其实蕴含着鸿哥的大智慧。
* 它是基于鸿哥的switch状态机思想,领略到了它的简单和精髓,
* 以后任何所谓复杂的工程项目,都不再复杂。
void led_flicker_01_08() //第1个至第8个LED的跑马灯程序,逐个亮,逐个灭.
& switch(ucLedStep_01_08)
& & &case 0:
& & & & & &if(uiTimeCnt_01_08&=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr1=1; &//第1个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=1; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 1:
& & & & & &if(uiTimeCnt_01_08&=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr2=1; &//第2个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=2; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 2:
& & & & & &if(uiTimeCnt_01_08&=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr3=1; &//第3个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=3; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 3:
& & & & & &if(uiTimeCnt_01_08&=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr4=1; &//第4个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=4; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 4:
& & & & & &if(uiTimeCnt_01_08&=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr5=1; &//第5个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=5; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 5:
& & & & & &if(uiTimeCnt_01_08&=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr6=1; &//第6个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=6; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &case 6:
& & & & & &if(uiTimeCnt_01_08&=const_time_level_01_08) //时间到
& & & & & &{
& & & & & & & &uiTimeCnt_01_08=0; //时间计数器清零
& & & & & & & &ucLed_dr7=1; &//第7个亮
& & & & & & & &ucLed_update=1; &//更新显示
& & & & & & & &ucLedStep_01_08=7; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //切换到下一个步骤
& & & & & &}
& & & & & &
& & &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; //返回到最开始处,重新开始新的一次循环。
& & & & & &}
& & & & & &
void T0_time() interrupt 1
& TF0=0; &//清除中断标志
& TR0=0; //关中断
& if(uiTimeCnt_01_08&0xffff) &//设定这个条件,防止uiTimeCnt超范围。
& & & uiTimeCnt_01_08++; &//累加定时中断的次数,
& TH0=0xf8; & //重装初始值()=f
& TL0=0x2f;
& TR0=1; &//开中断
void delay_short(unsigned int uiDelayShort)&
& &for(i=0;i&uiDelaySi++)
& & &; & //一个分号相当于执行一条空语句
void delay_long(unsigned int uiDelayLong)
& &for(i=0;i&uiDelayLi++)
& & & for(j=0;j&500;j++) &//内嵌循环的空指令数量
& & & & & {
& & & & & & &; //一个分号相当于执行一条空语句
& & & & & }
void initial_myself() &//第一区 初始化单片机
& TMOD=0x01; &//设置定时器0为工作方式1
& TH0=0xf8; & //重装初始值()=f
& TL0=0x2f;
void initial_peripheral() //第二区 初始化外围
& EA=1; & & //开总中断
& ET0=1; & &//允许定时中断
& TR0=1; & &//启动定时中断
总结陈词:
这节讲了在第1个至第8个LED灯中,先依次逐个亮再依次逐个灭的跑马灯程序。下一节我们略作修改,继续做跑马灯的程序,要求在第9个至第16个LED灯中,依次逐个亮灯并且每次只能亮一个灯(其它的都灭),依次循环,我们该如何编写程序?欲知详情,请听下回分解-----依次逐个亮灯并且每次只能亮一个灯的跑马灯程序。
华为曾推出的石墨烯基锂离子电池引起了极大的关注,被誉为“黑黄金”的石墨烯材料开始展示了其独有的魅力逐渐实现商用。而石墨烯能干的不仅如此,现在又有研究人员使用石墨烯制造OLED电极。......关键字:
我们今天来谈一谈什么是创新,在手机上加入摄像头是创新,声控手机少掉一些操作步骤也是创新,这些都是成功的创新,然而还有一些创新却让我们的生活变得更加麻烦。比如,不用点火的火柴。
Matchbox ......关键字:
据报道,三星电子旗下三星显示器公司已经与苹果达成了一项新协议,为下一代iPhone追加供应6000万块OLED面板,价值5万亿韩元(约合43亿美元)。......关键字:
戴正吴最近获得了其母校台湾大同大学的荣誉博士学位。在学位授予典礼上,戴正吴告诉台下学生:&iPhone在不断改进,现在它将抛弃LTPS屏幕,转向采用OLED屏幕。我无法预测苹果的OLED屏iPhone是否会大获成功,但如......关键字:
今天凌晨,苹果新品爆料大神郭明池给出消息称,iPhone 8的电池将会增加,预计将提升至2700mAh容量仅次于现在的2900mAh的iPhone 7 Plus。......关键字:
2016年被称为OLED显示技术市场化元年,全球显示大玩家们通过巨额投资、产能改造、跨国并购等形式积极投身其中,希望在次世代显示技术市场快速立足。......关键字:
还在抱怨iPhone的3D Touch技术不好吗?近日,凯基证券分析师郭明池称,苹果或将在下一代OLED版本的iPhone中使用全新的3D Touch模块技术。......关键字:
我 要 评 论
热门关键词您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
单片机-汇编语言.ppt 58页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
单片机-汇编语言.ppt
你可能关注的文档:
··········
··········
程序设计概述—设计语言 最早人们只能用机器语言(二进制)编写程序; 为了方便记忆,人们开始用助记符形式的汇编语言编写程序,称为低级语言。然后再用汇编系统将其翻译成机器语言,该过程称为汇编; 为了用更接近人的语言编写程序,程序设计师们发明了高级语言,如: BASIC、FORTRAN、PASCAL、
然后再用编译系统将其翻译成机器语言,该过程称为编译; 机器只能识别机器语言。所以必须用编译系统将高级语言编写的源程序编译成机器语言,用汇编系统将用汇编语言编写的源程序汇编成机器语言; 由低级或高级语言构成的程序称为源程序,由机器语言构成的程序称作目标程序;
程序设计实例引入 实例 假设一个班有50个人, 共有3门选修课: 计算机算法 服装CAD设计 德语 请找出: 同时选了三门课的同学; 问题的解决 第一步
如何在计算机中表示选修某门课的所有同学 问题的解决 第二步
设计思路:找出同时选了三门课的同学 几点启示 整体构思; 构建整体流程框图; 结构合理,流程清晰,简单明了; 局部模块化; 为什么要用流程图? 符合人进行逻辑思考的习惯 计算机从根本上来说,没有任何逻辑性,所以,你必须告诉它,先做什么,后做什么,遇到什么情况又该做什么,等等 流程图设计本身是一个逐步求精的过程,最终将任务划分为若干能由机器指令实现的小模块 简单程序设计
结构特点: 按指令的先后顺序依次执行。 例1:将20H单元的两个压缩BCD码拆开变成ASCII码,存入21H、22H单元。(假设20H中的BCD码为) 程序设计概述--基本步骤 题意分析 画出流程图 分配内存及端口 编制源程序 仿真、调试程序 固化程序 分支程序设计 结构特点:不一定按指令的先后顺序依次运行程序,程序的流向有两个或两个以上分支,根据指定条件选择程序的流向。 如实训程序中采用的分支:
分支程序的典型实例 实例:已知30H单元中有一变量X,要求编写一程序按下述要求给Y赋值,结果存入31H单元。
X<0 题意:根据X的不同,程序编写时有三个出口,即有三个分支!!!! 例
设内部RAM20H单元和30H 单元中分别存放了两个8位的无符号数 X、Y,
若X≥Y 则让P1.0管脚连接的LED亮;若X<Y 则让P1.1管脚连接的LED亮。
方法1编程:
FINISH L1:
P1.1 FINISH: SJMP
END 方法2编程: 散转程序 散转程序是指通过修改某个参数后,程序可以有三个以上的流向,多用于键盘程序。 常用的指令是JMP @A+DPTR,该指令是把16位数据指针DPTR的内容与累加器A中的8位无符号数相加,形成地址,装入程序计数器PC,形成散转的目的地址。 循环程序设计 结构特点:利用转移指令反复运行需要多次重复的程序段。 实例:前面几个实训中用到的延时程序:(DELAY)
DELAY: MOV R3, #OFFH
MOV R4,#0FFH
DJNZ R4,DEL1
正在加载中,请稍后...单片机流水灯程序汇编8个流水灯,先依次点亮,再依次熄灭,如_百度知道
单片机流水灯程序汇编8个流水灯,先依次点亮,再依次熄灭,如
单片机流水灯程序汇编8个流水灯,先依次点亮,再依次熄灭,如此循环
我有更好的答案
就用C语言编写不好吗?用变量数组保存亮灭次序,依次播放就好了。
采纳率:42%
来自团队:
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。单片机C语言程序-依次点亮八个LED灯
16:03:44来源: 51hei 关键字:&&&&
电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去&是不是很有趣?
下面是c语言程序源码
void delay100ms(); & //如果函数是在主函数后面定义,那么一定要在主函数前面声明 & & & & & & & & & & & & & & & & & & & &&
void main()
delay100ms();
void delay100ms(void)//
unsigned char a,b,c;
for(c=19;c>0;c--)
for(b=20;b>0;b--)
for(a=230;a>0;a--);
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
网友正在学习IC视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
相关关键词
热门关键词
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。}

我要回帖

更多关于 汇编语言流水灯程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信