㈠ 怎么在单片机中时钟延时两秒
可以根据单片机的时钟和指令执行时间延时
void
delay
(int
m)
{
while(m--)
{_NOP();}
}
也可以用单片机的定时器延时,设置timer的时钟源,设置溢出计数,然后再中断里处理。
如果延迟2秒,最好用定时中断。
㈡ 单片机 延迟一秒程序怎么写延迟2秒我是初学者,想请教一下。
你好!
你要先写一个延时基准(50毫秒),在延时1秒就是做20次基准,2秒就是40个基准!
也可以用定时器,定时50毫秒,定时器中断计数,计数20就是1秒,计数40次就是2秒(推荐用定时器!)
仅代表个人观点,不喜勿喷,谢谢。
㈢ 89C51单片机,假定单片机晶振频率6MHz,试编写延时2ms的程序
单片机晶振频率6MHz的时钟周期是0.166uS,89C51的指令周期是12个时钟周期,约等于2uS。
以下是例程:
汇编
DELAY: MOV Rn,#200 循环200次 *10uS = 2mS
LOOP: NOP 一个指令周期
NOP
NOP
DJNZ Rn,LOOP 二个指令周期,一次循环总共5个指令周期耗时10uS
RET
C语言 #define NOP _nop_(),_nop_(),_nop_()
for(int i = 200;i!=0;i-- )NOP;
㈣ 跪求MSP430单片机在32768晶振下的精准延时2ms的方法
32768和500的最大公约数是4,所以将定时器设为计数4次中断一次,同时在中断里把一个计数用的全局变量加1.当这个变量增加到125,将其清零同时执行你想以2ms周期执行的任务。中断服务如下
int cnt=0;
void interrupt_hadler(void){
cnt++;
if(cnt>125){
cnt=0;
do_your_task();
}
}
㈤ 如何利用单片机汇编指令编程实现延时10ms利用汇编指令设计多重循环编程实现20ms延时
这是调用一个延时10毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了
DELAY10MS:
MOV R2,#20
DELAY10MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY10MS1
RET
这是调用一个延时20毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了
DELAY20MS:
MOV R2,#40
DELAY20MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY20MS1
RET
RETRET的作用是子程序返回。调用一个子程序,当单片机执行到RET语句的时候,单片机就会返回到调用的地方并继续向下执行。
下面给你一个例程:
闪烁灯
ORG 00H
AJMP START
ORG 30H
START:
MOV P0,#00H
LCALL DELY;调用延时子程序
MOV P0,#0FFH
LCALL DELY;调用延时子程序
AJMP START
DELY:
MOV R7,#250
DL1:MOV R6,#250
DJNZ R6,$
DJNZ R7,DL1
RET
㈥ 请教一个51单片机C语言的延时时间问题
应该是1-2ms,因为中断来临的时间不确定,有可能count刚被清零中断就来了,这时其实延时最接近1ms。然而如果在count清零之前刚执行过中断的话,那么延时最接近2ms。
㈦ 请帮忙在51系列单片机系统中,编写一个延时1ms的子程序。谢谢。。
1、首先,在电脑中打开keil软件,创建好工程,然后添加c文件,如下图所示。