目录
前言
延时函数
所用汇编语法:
延时函数编写 :
led闪烁
所用汇编语法:
LED程序编写:
前言
汇编语言是一种底层的机械语言,对时间控制精准下面我们以代码为例,讲解51汇编命令
延时函数
所用汇编语法:
子函数的格式:
<子函数名>:
....
RET//用于返回主函数
MOV类命令(数据传达):
格式:
MOV Rn,#data
功能:
常数data赋值给Rn
条件转移指令:
格式:
DJNZ direct,rel
功能:
direct减一
direct≠0 执行 rel标号处
direct=0 顺序执行
延时函数编写 :
程序的延时时间与两个因素有关
- 所用晶振
- 延时程序的循环次数
机器周期的计算
时钟周期= 1/fosc
机器周期=12*时钟周期
以12Mhz为例
时钟周期
机器周期
转换为 us 即为 1us
延时的计算:
延时时间= (2*X+1+2)*Y*T+1T+2T
注: 0<=X<=255 0<=Y<=255 (因为Rn为八位寄存器)
DELAY: MOV R1,#Y ;1周期
D1: MOV R0,#X ;1周期
D2: DJNZ R0,D2 ;2周期
DJNZ R1,D1 ;2周期
RET ;2周期
;NOP() ;如没办法达到想要时间,可用NOP来凑
led闪烁
所用汇编语法:
ORG命令:
格式:
ORG add16
功能:
设置程序起始地址
END命令:
格式:
END
功能:
结束指令,用在程序结尾
SETB命令:
格式:
SETB bit
功能:
寻址位置将bit的位置1
CLR命令:
格式:
CLR bit
功能:
寻址位置将bit的位置0
LCALL命令:
格式:
LCALL 函数名
功能:
调用函数
AJMP命令:
格式:
AJMP 函数名
功能:
无条件转移 (只能在2KB内范围内转移)
LED程序编写:
ORG 10 ;起始地址
START:SETB P1.0 ;端口置1
LCALL DELAY ;调用延时函数
CLR P1.0 ;端口置0
LCALL DELAY ;调用函数
AJMP START ;跳转到START
DELAY: MOV R7,#250 ;延时函数
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET ;返回主函数
END ;指令结束
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)