汇编程序与周期性任务设计
一、实验任务
-
深入了解汇编指令和常用程序结构,以周期性点亮LED灯的延时函数为例,掌握
1、通过软件多重循环软件计数的定时方法 ;
2、通过 循环+ nop 指令的方法;
-
掌握汇编语言用查表法完成 求平方数的程序;
-
掌握普中单片机实验开发板的开发使用方法,在板子上完成LED周期性点灯的C程序实验。
二、具体过程
1、延时函数
(一)单重循环延时
DELAY: MOV R7,#100 ;寄存器R7赋值100
D1: DJNZ R7,D1 ;--R7,结果不为0跳转到D1继续执行,若为0跳转到下一步
RET ;返回函数
(二)多重循环延时
MOV R1,#0FEH ;给R1赋值254
LOOP: ;LOOP英文为循环的意思
MOV P1,#0FEH ;1111 1110,LED1点亮
DJNZ R1,LOOP ;R1--,当R1=0时,跳出循环,执行下一条指令
MOV P1,#0FDH ;1111 1101,LED1灭,LED2点亮
2 、循环+ nop 指令
NOP(No Operation)指令是一个空操作指令,它不做任何实质性的操作,只是简单地占用一个指令周期的时间。通过在循环中添加一定数量的nop指令,可以创建一个简单的延时。
MOV R1,#0FEH
LOOP: ;LOOP英文为循环的意思
MOV P1,#0FEH
DJNZ R1,LOOP
NOP
NOP
MOV P1,#0FDH
3、查表法求平方数
查表就是根据自变量x,在表格中寻找y,使y=f(x).
查找1-9的平方代码如下:
ORG 0000H
LJMP A1
ORG 0080H
A1: NOP
NOP
MOV SP,#60H
MOV DPTR,#2000H
MOV A,#03H
MOVC A,@A+DPTR
A2: SJMP A2
ORG 2000H
DB 00h,01h,04h,09h,10h,1