51单片机——汇编语言 1(延时函数与led闪烁)

目录

前言

延时函数

所用汇编语法:

延时函数编写 :

led闪烁

所用汇编语法:

LED程序编写:


前言

汇编语言是一种底层的机械语言,对时间控制精准下面我们以代码为例,讲解51汇编命令

延时函数

所用汇编语法:

子函数的格式:

<子函数名>:
....

RET//用于返回主函数

MOV类命令(数据传达):

格式:

MOV Rn,#data

功能:

常数data赋值给Rn


条件转移指令:

格式:

DJNZ  direct,rel

功能:

direct减一

direct≠0 执行 rel标号处

direct=0 顺序执行

延时函数编写 :

程序的延时时间与两个因素有关

  1. 所用晶振
  2. 延时程序的循环次数

机器周期的计算

        时钟周期= 1/fosc

        机器周期=12*时钟周期

        以12Mhz为例

          时钟周期

           1/12000000 \approx 0.00000008s    

         机器周期

         0.00000008*12\approx 0.000001s

        转换为 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 ;指令结束

  • 18
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白变形计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值