一个单片机晶振为12MHZ,要让单片机延时100ms怎么计算
展开全部
写个 delay函数 能实现软件延时
void delay(int ms)
{
int z,a;
for(z=ms;z>0;z--)
for(a=110;a>0;a--);
}
要延时多长时间 ms 赋值多少就OK了 当然 软件延时只是大概算出来的 不可能非常准确 要是需要很准确用定时器 也很简单 不过一般应用 软件延时就够了
void delay(int ms)
{
int z,a;
for(z=ms;z>0;z--)
for(a=110;a>0;a--);
}
要延时多长时间 ms 赋值多少就OK了 当然 软件延时只是大概算出来的 不可能非常准确 要是需要很准确用定时器 也很简单 不过一般应用 软件延时就够了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
广州晶晟电子
2023-10-12 广告
2023-10-12 广告
OSC有源晶振是一种电子元件,它需要接电源才能工作,一般有四个引脚,其中有两个是电源输入引脚,有正负极之分。它是石英晶体震荡器的简称,英文名为Crystal。石英晶体震荡器的应用范围非常广,包括通讯系统、时钟电路、显卡、网卡、主板等配件的各...
点击进入详情页
本回答由广州晶晟电子提供
展开全部
指令周期T=4*时钟周期=4*1/12=1/3us
采用2重循环比较好,以下是程序
DELAY100MS
MOVLW
D'44'
MOVWF
20H
LOOP1
MOVLW
D'251'
MOVWF
21H
LOOP2
DECFSZ
21H,1
GOTO
LOOP2
DECFSZ
20H,1
GOTO
LOOP1
RETURN
采用2重循环比较好,以下是程序
DELAY100MS
MOVLW
D'44'
MOVWF
20H
LOOP1
MOVLW
D'251'
MOVWF
21H
LOOP2
DECFSZ
21H,1
GOTO
LOOP2
DECFSZ
20H,1
GOTO
LOOP1
RETURN
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
12MHZ晶振的机器周期是1MS,延时100MS,就是初始值为65536-100是65436.你可以用10进制,也可以化成16进制的.这是MCS51单片机的定时方法.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f=12MHZ时,一个机器周期为1us
DEL:
MOV
R7,#X
;1us
1
DEL1:
MOV
R6,#Y
;1us
X
DJNZ
R6,$
;2us
X×Y
DJNZ
R7,DEL1
;2us
X
RET
;2us
全部指令执行时间为
1+X+2XY
+2X+2=3+3X+2XY个机器周期。
对于延时时间为100ms的延时程序,可以选择X=200,Y=250。这样,这个子程序的全部执行时间为(2+3×200+2×200×250)=100.62ms。
当然X、Y值选择恰当,能更好地满足精度要求。
DEL:
MOV
R7,#X
;1us
1
DEL1:
MOV
R6,#Y
;1us
X
DJNZ
R6,$
;2us
X×Y
DJNZ
R7,DEL1
;2us
X
RET
;2us
全部指令执行时间为
1+X+2XY
+2X+2=3+3X+2XY个机器周期。
对于延时时间为100ms的延时程序,可以选择X=200,Y=250。这样,这个子程序的全部执行时间为(2+3×200+2×200×250)=100.62ms。
当然X、Y值选择恰当,能更好地满足精度要求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我举得用2的溢出计数计时是比较好的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询