单片机经典实验实例精华详解(附源程序) (二)
现在让我们开始做第一个实验:八路发光二极管轮流点亮的实验,也就是通常所说的跑马灯实验,首先让我们来完成必须的硬件部分,我们需要焊接上8个发光二极管和8个限流电阻,可以参考下面的原理图和实物图像进行操作,需要注意的是LED是有极性的,引脚长的为正极,引脚短的为负极,负极和电阻一侧连接,如果接错那么相应的那一路可能在实验中不会点亮了,在焊接前要看仔细哦~~~
下面我们来完成软件编程设计,这里我们没有采用高深的编程技巧,而是用了最笨、最直接的向端口送数的办法来实现,一来程序比较简单,没必要玩深沉,而且初学者看起来直观易懂。
ORG 0000H
START:MOV P1,#01111111B;最下面的LED点亮
LCALL DELAY;延时1秒
MOV P1,#10111111B;最下面第二个的LED点亮
LCALL DELAY;延时1秒
MOV P1,#11011111B;最下面第三个的LED点亮 (以下省略)
LCALL DELAY
MOV P1,#11101111B
LCALL DELAY
MOV P1,#11110111B
LCALL DELAY
MOV P1,#11111011B
LCALL DELAY
MOV P1,#11111101B
LCALL DELAY
MOV P1,#11111110B
LCALL DELAY
MOV P1,#11111111B;完成第一次循环点亮,延时约0.25秒
AJMP START;反复循环
;延时子程序,12M晶振延时约250毫秒
DELAY:
MOV R4,#2
L3: MOV R2 ,#250
L1: MOV R3 ,#250
L2: DJNZ R3 ,L2
DJNZ R2 ,L1
DJNZ R4 ,L3
RET
END
如何精确计算延时子程序的执行时间?
汇编语言的一大优势就是能够精确控制程序的执行时间,这在编写一些对时序要求严格的外围器件驱动时由为重要!
- 单片机与串行AD转换器TLC0834的接口设计(01-22)
- 单收/单发RS-232接口芯片 ADM101E及其应用(01-25)
- 基于单片机的通用型智能充电器设计(01-06)
- 一种通信用高频开关型整流器监控系统的实现方案(02-13)
- 基于16位单片机的逆变电源系统的设计(05-26)
- 便携式单片机控制液晶显示型心率计(03-12)