单片机学习:35个实例之LED闪烁

需积分: 10 0 下载量 26 浏览量 更新于2024-12-13 收藏 643KB DOC 举报
"单片机35个实例教程,适合初学者" 单片机是集成在一块芯片上的微型计算机,广泛应用于各种电子设备中。这个教程包含35个实例,旨在帮助初学者掌握单片机的基本操作和编程技巧。下面我们将深入探讨其中的第一个实例——闪烁灯。 闪烁灯实验是入门单片机学习的经典任务,它要求在P1.0端口通过控制一个发光二极管L1实现0.2秒周期的一亮一灭。为了达到这个效果,我们需要了解以下几个关键知识点: 1. **硬件连接**:电路原理图中,P1.0端口与发光二极管L1相连。在实际的系统板上,应将"单片机系统"区域的P1.0端口与"八路发光二极管指示模块"区域的L1端口用导线连接。 2. **延时程序设计**:由于单片机执行指令速度极快,要实现0.2秒的延时,需要编写特定的延时子程序。以12MHz的石英晶体为例,1个机器周期等于1微秒。通过循环计数的方式,可以计算出不同数值组合下的延时时间。例如,当R6=20,R7=248时,延时子程序可实现10ms的延时。根据实验需求,可以调整R5的值以得到200ms(即0.2秒)的延时。 3. **输出控制**:单片机通过设置P1.0端口的电平状态来控制发光二极管的亮灭。当P1.0输出高电平(1),二极管不亮;输出低电平(0)时,二极管点亮。这通常通过SETB和CLR指令来实现。在本例中,程序通过交替执行CLRP1.0(清零P1.0,使二极管亮)和SETBP1.0(置位P1.0,使二极管灭)指令,配合延时子程序,实现周期性的亮灭。 4. **程序流程**:程序框图展示了整个程序的执行流程。从START开始,首先通过CLRP1.0指令使二极管亮起,然后调用DELAY子程序进行延时,接着SETBP1.0使二极管熄灭,再次调用DELAY,然后跳转回START,重复这个过程,形成连续的闪烁。 5. **汇编语言编程**:提供的汇编源程序显示了实现这一功能的具体代码。程序以ORG0指令开始,指定程序存储器的起始地址。START标签标志着程序的入口点,随后的指令序列包括设置P1.0为低电平、调用DELAY子程序、设置P1.0为高电平并再次调用DELAY,最后使用LJMP指令无限循环回START。 通过这个实例,初学者可以理解单片机的硬件接口、延时计算、输出控制以及基本的汇编语言编程。后续的34个实例将会涵盖更多复杂的功能和应用,帮助学习者逐步掌握单片机的全面知识。