[.[.流水灯电路图和程序[1]

合集下载

实验一 keil的使用及流水灯实验

实验一  keil的使用及流水灯实验
delay02s();
P1=0xff;
for (i=0;i<6;i++)
{
P0=255-liucheng[i];
delay02s();
}
}
}
3.1.5实验讨论
扩展程序改进版:
#include<reg51.h>
unsigned char i;
unsigned chardeng_H=0x01;
unsigned chardeng_L=0x08;
unsigned char add=0x00;
void delay02s(void) //延时0.2秒子程序
{
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void main(void)
{
while(1)
{
P0=0x00;
delay02s();
for (i=0;i<4;i++)
{
add=0x00;
add=deng_H;
add<<=4;
add&=0xf0;
add+=deng_L;
P0=add;
delay02s();
deng_H<<=1;
deng_L>>=1;
}
deng_H=0x01;
deng_L=0x08;
keil流水灯程序keil流水灯流水灯设计实验报告流水灯实验报告单片机流水灯实验eda流水灯实验流水灯实验vhdl流水灯实验报告keil使用教程keil使用

流水灯(电路和汇编)-Proteus和Keil仿真演示实例知识讲解

流水灯(电路和汇编)-Proteus和Keil仿真演示实例知识讲解

流水灯(电路和汇编)-P r o t e u s和K e i l仿真演示实例示例要求:在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。

在KEIL 51中编程序,形成HEX文件;在PROTEUS中设计硬件,下载HEX文件,运行看结果。

第1篇:PROTEUS电路设计1、打开PROTEUS的ISIS软件,如图1所示。

新建电路图文件,将文件保存到E:\projectio (新建文件夹projectio)下面,文件基本名为io,扩展名默认。

选择元图1 ISIS窗口图2、在component mode模式下单击选择元件按钮P,打开元件选择对话框,如图2所示。

图2 元件选择窗口在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图3的device列表栏。

在这里依次添加元件单片机80C51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED,如图3所示。

图3 添加元件的device列表栏3、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作;如图4所示。

电源(POWER)与地(GROUND):(右键-放置-终端里选)。

图4 放置元件图4、连接导线,如图5所示。

连接后存盘。

图5 连接元件图5、在Keil软件中设计软件程序,形成HEX文件(具体过程见第2篇Keil软件编程)。

保存软件项目到电路文件相同的文件夹E:\projectio下。

6、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的program file框中选择下载到80C51芯片中的程序。

这里是同一个文件夹下面的shili.hex文件。

如图6所示。

图6 下载程序到单片机7、单击仿真运行按钮play,运行程序。

用AT89C51单片机实现流水灯的控制设计[1]

用AT89C51单片机实现流水灯的控制设计[1]

用AT89C51单片机实现流水灯的控制设计[1] 用AT89C51单片机实现流水灯的控制设计当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。

单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

1.引言目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。

学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才。

2.硬件组成按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。

AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。

因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

其具体硬件组成如图1所示。

点击看原图图1 流水灯硬件原理图从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。

因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED 灯便会一亮一暗的做流水灯了。

在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

STM32流水灯说明书

STM32流水灯说明书

流水灯说明书
一:原理图
流水灯电路图
二:工作原理
电路中有L0,L1,L2,L3,L4,L5,L6,L7共八个发光二极管,当引脚LED_SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。

A~H引脚连接STM32F108VB芯片的PE8~PE15,程序初始化时,对其进行初始设置。

引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。

注意,LED_SEL连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的IO不可用,需对AFIO_MAPR寄存器进行设置,设置其为IO可用。

寄存器的具体说明可参考《STM32中文参考资料》。

三:实验现象及操作
对于给出的流水灯案例,下载HEX文件后,在开发板上可观察到L0~L7从右至左依次点亮,间隔300ms。

当全部点亮八个发光二极管后,八个发光二极管同时熄灭,间隔300ms 后,发光二极管再次从右至左依次点亮。

如此反复循环。

无其他操作。

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(io口和定时器实验)

实验三流水灯实验(I/O口和定时器实验)一、实验目的1.学会单片机I/O口的使用方法和定时器的使用方法;2.掌握延时子程序的编程方法、内部中断服务子程序的编程方法;3.学会使用I/O口控制LED灯的应用程序设计。

二、实验内容1.控制单片机P1口输出,使LED1~LED8右循环轮流点亮(即右流水),间隔时间为100毫秒。

2.控制单片机P1口输出,使LED1~LED8左循环轮流点亮(即左流水),间隔时间为100毫秒。

3.使用K1开关控制上面LED灯的两种循环状态交替进行;4. 用定时器使P1口输出周期为100ms的方波,使LED闪烁。

5.使用定时器定时,使LED灯的两种循环状态自动交替,每一种状态持续1.6秒钟(选作)。

三、实验方法和步骤1.硬件电路设计使用实验仪上的E1、E5和E7模块电路,把E1区的JP1(单片机的P1口)和E5区的8针接口L1~L8(LED的驱动芯片74HC245的输入端)连接起来,P1口就可以控制LED 灯了。

当P1口上输出低电平“0”时,LED灯亮,反之,LED灯灭。

E7区的K1开关可以接单片机P3.0口,用P3.0口读取K1开关的控制信号,根据K1开关的状态(置“1”还是置“0”),来决定LED进行左流水还是右流水。

综上,画出实验电路原理图。

2.程序设计实验1和实验2程序流程图如图3-1实验3程序流程图如图3-2所示。

图3-1 实验1,2程序流程图图3-2 实验3程序流程图实验4程序流程图如图3-3,3-4所示。

实验5程序流程图如图3-5,3-6所示。

图3-5 实验5主程序流程图图3-6 定时器中断服务子程序流程图图3-4 定时器中断服务子程序流程图图3-3 实验4主程序流程图编程要点:(1)Pl,P3口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。

例如:MOV P1,A; P1口做输出MOV P1,#0FFHMOV A,P1;P1口做输入SETB P3.0MOV C,P3.1;从P3.1口读入数据(2)每个端口对应着一个寄存器,例:P1→90H(P1寄存器地址);P3→B0H(P3寄存器地址);寄存器的每一位对应着一个引脚,例:B0H.0→P3.0(3)对寄存器写入“0”、“1”,对应的外部引脚则输出“低电平”、“高电平”。

使用74LS164制作流水灯

使用74LS164制作流水灯

使用74LS164制作流水灯单片机初学者对于流水灯实验一定特别的熟悉,这个实验逻辑清晰,效果明显,在各类单片机以及微机控制相关材料中都会进行讲解。

当我们学习了一段时间单片机之后,或者在进行单片机系统设计时,会发现51单片机的引脚有时并不是很够用,有时候需要尽量节省单片机I/O引脚。

如何节省I/O引脚是我们在设计单片机系统时,经常需要考虑的一个问题。

下面以8个LED组成的流水灯效果的实现为例,讲解如何节省单片机的I/O引脚。

通常我们会采用如图1所示的电路图,通过单片机直接驱动8个LED,但是这种控制方式消耗了8个单片机引脚。

图1 常规流水灯电路我们也可以使用三八译码器来完成流水灯的效果。

其控制电路图如图2所示(这种控制方式在我之前上传的文档中有详细介绍,感兴趣读者可以查看)。

这种控制方式虽然可以在一定程度上可以节省单片机I/O接口的使用,如下图所示,最少只需要使用3个I/O口。

但是这种方式也存在一定的缺点,这种控制方式只能同时点亮1个LED 灯,如果想实现两个以及以上的LED灯点亮的效果,那么这种电路将无法直接实现效果。

图2 三八译码器拓展I/O口下面我们看一下能够使用其他的芯片,来进一步降低单片机I/O 口的消耗。

使用串行转并行芯片74LS164来制作流水灯效果,其控制原理图如图3所示。

从原理图中可以看出,使用了74LS164芯片控制流水灯之后,只占用了单片机的两个I/O口。

一个用于输出时钟脉冲,另外一个用于输出串行数据。

图3 74LS164控制流水灯原理图与前面采用译码器控制的流水灯相比,使用74LS164控制的流水灯效果具有如下两个显著优点:1.占用单片机I/O口少,最少仅为2个。

2.控制功能强大,74LS164驱动的流水灯点亮的个数没有限制,可以任意数量点亮。

编程思路:单片机以最快的速度通过串口控制8个LED灯的点亮状态,由于此过程极短,人眼无法分辨,通过延时函数稳定输出效果,并延时一定时间,再次以最快的速度通过串口控制8个LED灯的亮灭状态,并执行延时函数实现等待效果,如此反复,就可以实现流水灯的效果,且可以实现任意的流水灯的效果。

流水灯时钟电路工作原理

流水灯时钟电路工作原理

流水灯时钟电路工作原理
流水灯时钟电路主要由以下部分组成:时钟电源、电子时钟芯片、驱动电路、LED灯珠。

1. 时钟电源:提供所需的电源电压和电流,通常使用交流电源转换为恒流恒压的直流电源。

2. 电子时钟芯片:控制时钟的运行和显示,一般采用数字时钟芯片。

它可以接收外部的时间信号,将时间信息转化为特定的电信号发送给驱动电路。

3. 驱动电路:接收电子时钟芯片发送的时间信号,根据信号的不同控制LED灯进行点亮和熄灭。

通常采用二进制计数的方式,通过控制特定的输出端口来控制对应的LED灯珠。

4. LED灯珠:通过驱动电路的控制,实现灯珠的点亮和熄灭。

通常使用共阳极的LED灯珠,每个LED灯代表一个数字或符号。

工作原理如下:
电子时钟芯片接收外部的时间信号,将时间信息转化为特定的二进制信号,通过输出端口发送给驱动电路。

驱动电路根据接收到的信号对应控制LED灯珠的点亮和熄灭,从而显示出当
前的时间。

同时,驱动电路还需要保证时间信息的持续更新,以使流水灯时钟能够实现时间的连续显示。

具体来说,驱动电路中,将得到的二进制信号转换为对应的电
平信号,通过开关控制LED灯珠的通断,实现LED的点亮和熄灭。

根据时间的变化,LED灯珠依次点亮和熄灭,形成流水灯效果。

通过适当的控制和驱动,可以实现对年、月、日、小时、分钟等时间信息的显示。

流水灯实验原理

流水灯实验原理

流水灯实验原理流水灯是一种常见的电子电路实验项目,通过这个实验可以让学生初步了解电子元件的连接和工作原理。

在实验中,我们会使用几个LED灯和一些电阻,通过不同的连接方式和信号输入,让LED灯呈现出流水般的效果。

下面我们将详细介绍流水灯实验的原理和操作步骤。

首先,我们需要准备一些材料和元件,包括LED灯、电阻、导线、面包板和电源。

LED灯是实验中的光源,电阻用于限制电流,导线用于连接各个元件,面包板用于搭建电路,电源则提供电能。

在选择LED灯和电阻时,需要根据实际情况计算电流和电压,以确保电路正常工作。

接下来,我们将LED灯和电阻连接在面包板上,根据实验要求进行合理的布局和连接。

一般来说,LED灯的长腿是正极,短腿是负极,而电阻没有正负之分。

我们需要根据电路图和实验要求,将它们正确地连接在一起。

在连接过程中,要注意导线的长度和连接方式,以避免出现短路或其他问题。

当电路连接完成后,我们需要接入电源,并根据实验要求输入信号。

在流水灯实验中,我们通常会使用计时器或者微控制器来产生信号,以控制LED灯的亮灭顺序。

通过调整信号的频率和占空比,我们可以让LED灯呈现出不同的流水效果,如单向流水、双向流水等。

在实验过程中,我们还需要注意一些问题,比如电路的稳定性、元件的工作温度和电源的安全性。

特别是在接入电源时,要确保电压和电流在安全范围内,以避免损坏元件或者造成安全事故。

此外,LED灯在工作时会产生一定的热量,需要注意散热和保护。

总的来说,流水灯实验是一种简单而有趣的电子电路实验项目,通过这个实验可以让学生初步了解电子元件的连接和工作原理。

在实验过程中,我们需要合理选择和连接元件,控制信号输入,同时注意电路的稳定性和安全性。

希望通过这个实验,学生们能够对电子电路有更深入的理解,为以后的学习和研究打下良好的基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

流水灯电路图和程序时间:2010-03-05 22:05:35 来源:作者:#include <reg52.h>#include<instrins.h>#define uchar unsigned char#define uint unsigned intuchar code led[]={0xfe,0xfb,0xfd ,0xf7,0xef,0xbf,0xdf,0x7f};delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}main( ){uint i;while(1){P2=led[];delay(500);_crol_(led,1);}}用arm7做一个流水灯的设计。

悬赏分:100 - 解决时间:2009-9-3 20:03试设计一个闪烁流水灯控制器,该控制器可以控制8个灯顺序亮灭,当按钮K按下1次后,每次顺序点亮一个灯。

而且每个点亮的灯在闪烁3次后,才能灭,周而复始,直到按钮K 二次按下。

(用状态机设计)要用PROTEL99画好电路图。

还要写好程序。

画图的也只能发到我的邮箱里面吧。

邮箱:forever_iloveu@。

谢谢各位。

提问者:woxinruozai - 五级最佳答案从原理图可以看出,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平就可以;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭方法方法同LED1。

因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。

实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。

从上面中文表示看来实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。

因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”机器代码。

我们又怎样来使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。

今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。

这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。

前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。

现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。

实现8个LED流水灯汇编语言源程序liu01.asm;----- 主程序开始-----START: CLR P1.0 ;P1.0输出低电平,使LED1点亮ACALL DELAY ;调用延时子程序SETB P1.0 ;P1.0输出高电平,使LED1熄灭CLR P1.1 ;P1.1输出低电平,使LED2点亮ACALL DELAY ;调用延时子程序SETB P1.1 ;P1.1输出高电平,使LED2熄灭CLR P1.2 ;P1.2输出低电平,使LED3点亮ACALL DELAY ;调用延时子程序SETB P1.2 ;P1.2输出高电平,使LED3熄灭CLR P1.3 ;P1.3输出低电平,使LED4点亮ACALL DELAY ;调用延时子程序SETB P1.3 ;P1.3输出高电平,使LED4熄灭CLR P1.4 ;P1.4输出低电平,使LED5点亮ACALL DELAY ;调用延时子程序SETB P1.4 ;P1.4输出高电平,使LED5熄灭CLR P1.5 ;P1.5输出低电平,使LED6点亮ACALL DELAY ;调用延时子程序SETB P1.5 ;P1.5输出高电平,使LED6熄灭CLR P1.6 ;P1.6输出低电平,使LED7点亮ACALL DELAY ;调用延时子程序SETB P1.6 ;P1.6输出高电平,使LED7熄灭CLR P1.7 ;P1.7输出低电平,使LED8点亮ACALL DELAY ;调用延时子程序SETB P1.7 ;P1.7输出高电平,使LED8熄灭ACALL DELAY ;调用延时子程序AJMP START ;8个LED流了一遍后返回到标号START处再循环;----- 延时子程序-----DELAY: MOV R0,#255 ;延时一段时间D1: MOV R1,#255DJNZ R1,$DJNZ R0,D1RET ;子程序返回END ;程序结束在上面主程序中用到了五条汇编语言指令:CLR、ACALL、SETB、LJMP、END。

CLR:是将其后面指定的位清为0,程序中使对应端口输出低电平ACALL:是子程序调用指令,程序中调用了DELAY延时子程序SETB:是将其后面指定的位置成1,程序中使对应端口输出高电平AJMP:是无条件跳转指令,意思是:跳转到指定的标号处继续运行END:是程序结束的伪指令,意思是告诉编译器,程序到此结束。

伪指令只告诉编译器此程序到此有何要求或条件,它不参与和影响程序的执行。

在上面源程序中"ACALL DELAY"指令的作用是调用DELAY延时子程序。

为什么要使用这指令呢?如果不用该指令能够实现"流水"效果吗?答案是肯定的,一定要用该指令才能看到我们需要的"流水"效果。

如果不用该指令,则由于8个LED发光与熄灭的时间都很短,我们肉眼无法看到LED的熄灭与点亮,凭我们肉眼看到的是LED1~LED8都同时亮(半亮),而看不到“流水”效果的!注:初学者可以将上面源程序中所有"ACALL DELAY"指令行删除后再编译后烧写到单片机进行验证一下。

产生这种现象主要是因为单片机执行每条指令的时间很短,我们知道实验板上单片机的时钟高达11.0592MHz,在这个时钟信号(即晶体振荡信号)下,一个“机器周期”仅大约1.08uS(微秒)。

本程序中我们用到的SETB P.x和CLR P.x均属于单周期指令,也就是说,执行一句SETB P.x 用时仅1.08uS(微秒),CLR P.x 也是1.08uS(微秒);也就是点亮和熄灭时间都为1.08uS(微秒),在如此高速的流水速度下,8个LED发光与熄灭的时间都很短,当然凭我们的肉眼看不到“流水”效果了!这里需要说明的是,按汇编语法要求,所编制的程序(下称源程序)之格式和书写要求必须依下列原则:1、源程序必须为纯文本格式文件,如用Windows“附件”中的“记事本”编写的文本文件或用UltraEdit文本编辑器编辑;2、源程序的扩展名应是*.ASM;3、一行只能写一条语句,以回车作为本句的结束,每一语句行长度应少于80个字符(即40个汉字)。

4、每行的格式应为:标号:命令参数;注释。

即一行由四部份组成,各部份的顺序不能搞错,依实际要求可以缺省其中的一部份或几部份,甚至全部省去,即空白行。

需要使用标号时标号后面必须有“:”(冒号),而命令语句和参数之间必须用空格分开,如果命令有多个参数,则参数与参数之间必须用“,”(逗号)分开,需要注释时注释前必须用“;”(分号),“;”后面的语句可以写任何字符,包括汉字用于解释前面的汇编语句,它将不参与汇编,不生成代码。

由于汇编程序对我们还不直观,所以在编写源程序时,应当养成多写注释的习惯,这样有助于今后源程序的阅读和维护。

标号是标志程序中某一行的符号名,编译后标号的数值就是标号所在行代码的地址。

在宏汇编ASM51中标号的长度不受限制,但标号中不能包含…:'或其它的一些特殊符号,也不能用汉字,可以用数字作标号,但必须用字母开头。

当标号作参数用(如标号作转移地址),在命令后面出现时,必须舍去…:'(如上面程序中的AJMP START中的START是不能再有:)。

每行只能有一个标号,一个标号只能用在一处,如果有两行用了同一个标号,则汇编时就会出错。

由于标号的长度没有限制,可以用有意义的英文或汉语拼音来说明行,使源程序读起来更方便。

在源程序中的字母不区分大小写,也就是说start 和START 是一样的,请不要用大小写方式去区分不同的标号。

好啦!我们知道了汇编语言程序的规则,现在就动手编辑源程序吧。

马上启动Keil单片机集成开发环境,建立新工程liu01.UV2,将上面的源程序liu01.asm导入到工程中,设置好Keil工程的编译参数,编译得到HEX格式的目标文件liu01.hex,用ISP编程器将目标文件liu01.hex烧写到AT89S51单片机中,接下来就是将烧写好的AT89S51从编程器上取下,放到“ S51增强型单片机实验板”上通电,我们就看到了LED1~LED8的"流水"效果了。

到此,我们做的流水灯已成功,工作原理也清楚啦,若你完全掌握了上面程序,那么你就可以将“流水灯”的流向改变一下,可以将从"左向右流"改为从"右向左流",也可以改为"两边向内流"、"内部向外流"......,我想你一定能用前面学到的方法实现这些功能。

可能有些高手说,前面的编程方法是最最笨的!不错!但初学单片机初期可以不必讲究语言的简练,只要能实现预先要求就好,最主要的是学好基本指令(111条)的用法,清楚各个指令的功能,这是初学者要知道的。

那么还有更好的编程思路吗?当然有!请跟随站长继续学习下面的内容。

在前面学习的程序中我们让LED流水是去逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面我们就采用新的思路来编程。

新的编程思路如下:我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后让这个数据向高位移动不就实现“流水”效果啦?的确如此!8051指令中没有让P1数据移动的指令,但有对累加器ACC中数据左移或右移的指令,ACC在指令中常写为A,累加器A数据左移指令为"RL A",累加器数据右移指令为"RR A",累加器在数据传输和数据处理过程中作用十分重要,累加器ACC为8位。

相关文档
最新文档