单片机晶振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
_nop_(); // 产生一条NOP指令。
该函数的作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。