汇编语言程序有顺序程序、分支程序、循环程序三种。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。
分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。
扩展资料:
注意事项:
汇编指令不区分大小写,目的 *** 作数是存结果的,原 *** 作数是被 *** 作的。
二进制数后跟b,十六进制数后跟h,十进制数不需特殊标记。
汇编源程序中,数据不能以字母开头,需要在前面加上0,如0a000h。
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:
ORG 0000H复位启动
AJMP START
ORG 001BHT1中断
AJMP T1INT
定义变量========================
YSJSEQU 30H延时计数器
LEDEQU 31HLED控制缓冲器
主程序==========================
START:MOV LED,#0FEH初始化数据
MOV YSJS,#0
MOV TMOD,#10H定时器1工作于方式1,16位定时器
MOV TL1,#0B0H设置定时初值
MOV TH1,#3CH定时时间=50mS
SETB ET1使能定时器1中断
SETB TR1启动定时器1
SETB EA开总中断
MOV P1,LED初始化流水灯
LOOP:JMP LOOP循环等待中断
T1INT:PUSH PSW定时器1中断程序
PUSH ACC保护现场
MOV TH1,#3CH定时时间=50mS
MOV TL1,#0B0H
INC YSJS
PUSH ACC保护ACC
MOV A,YSJI
CJNE A,#2,QT150mS*2=100mS
MOV P1,LED
MOV A,LED
RL A累加器A的值循环左移1位
MOV LED,A
MOV YSJS,#0
QT1:POP ACC恢复现场
POP PSW
RETI返回主程序
END汇编程序结束
扩展资料:
实现流水灯的三个方法:
第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。
第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。
第三种,库函数实现流水灯。利用左移函数进行。
首先需要计算出 DEL 和 DEL1 的执行时间,由于 DEL 只有一条指令,所以执行时间为一个机器周期(1/12MHz = 83.33ns)。DEL1 的执行时间也为一个机器周期,即83.33ns。
接下来计算 DEL2 的执行时间。由于 DEL2 中只有一条指令 DJNZ R6,DEL1,因此需要计算 DJNZ R6 的执行时间。DJNZ 指令的执行时间为2个机器周期,因此 DJNZ R6 的执行时间为2 * 83.33ns = 166.67ns。由于 DEL1 的执行时间也为一个机器周期,因此 DEL2 的执行时间为 166.67ns + 83.33ns = 250ns。
最后计算 DJNZ R7,DEL1 和 RET 的执行时间。DJNZ R7 的执行时间与 DJNZ R6 相同,为166.67ns。RET 的执行时间为2个机器周期,即 2 * 83.33ns = 166.67ns。因此 DJNZ R7,DEL1 和 RET 的总执行时间为 166.67ns + 83.33ns + 166.67ns = 416.67ns。
ANL A,#17H: A 的值为 A &17H = 83H &17H = 03H。
ORL 17H,A: (17H) 的值为 (17H) | A = 44H | 03H = 47H。
XRL A,@RO: A 的值为 A ^ [(RO)] = 03H ^ [(17H)] = 54H。
CPL A: A 的值为 ~A = ~54H = ABH。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)