您的当前位置:首页正文

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

来源:华佗健康网

目录


前言

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

延时函数

延时函数编写 :

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

机器周期的计算

        时钟周期= 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 ;指令结束

因篇幅问题不能全部显示,请点此查看更多更全内容