阅读 65

单片机晶振12mhz软件延时,用单片机汇编一个100ms的延时程序

想必现在有很多小伙伴对于什么是单片机晶振12mhz软件延时都比较想要了解,那么今天小编就为大家收集了一些关于用单片机汇编一个100ms的延时程序知识,现在开始吧!

DELAY:

MOV R3,#100 ;2

DLY0:

MOV R2,#249 ;2*100

DLY1:

DJNZ R2,DLY1 ;249*2*100

MOV R2,#248 ;2*100

DLY2:

DJNZ R2,DLY2 ;248*2*100

DJNZ R3,DLY0 ;2*100

RET ;2

以上假设12M晶振,延时共2+(249*2+2+248*2)*100+2=100004微妙=100.004毫秒

MAIN:MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

MOVR0,#20

SETBEA

SETBTR0

SETBET0

SJMP$

DJNZR0,ZDFH

MOVR0,#20

SJMP$

ZDFH:MOVTH0,#3CH

MOVTL0,#0B0H

RETI

1.

可以用_nop_( )函数来实现微秒级的延时。

2.

_nop_(); // 直接当成一条语句使用,产生一条NOP指令NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。

3.

注:使用该函数时,需要将头文件#include包含进源文件中

1000Hz 的周期 T=1ms,定时为 半周期 0.5ms=500us,12MHz晶振,机械周期为 1us,定时器初值=65536-(500us/1us)=65036=0xFE0C;

若是想问定时时间,就为500us,若是想问定时器初值,就为 0xFE0C;

在单片机c语言中直接调用库函数即可,具体如下:

#include // 声明了void _nop_(void);

_nop_(); // 产生一条NOP指令。

该函数的作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐