单片机定时器最高可以延时多少,你好 我刚开始学习单片机 请教你个问题 51单片机定时器0最大可以定
来源:整理 编辑:亚灵电子网 2023-09-12 15:40:34
1,你好 我刚开始学习单片机 请教你个问题 51单片机定时器0最大可以定
51单片机定时器0最大定时时间由晶振决定,如果是12M晶振,最大可以定时时间是65.536ms,也就是初始为0。12m晶振下,51单片机的定时器最多只能65.535ms。你可设定时50ms中断一次,20次 就是1 秒。以1 秒为基础,8 秒和22秒不会难的了。
2,单片机定时器延时
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar tt;
void timer0() interrupt 1
void init()
void main()

3,单片机延时最好能延时多久怎么算的
理论上说,可以无限的。用的是循环嵌套, 比如 定时器1 延时了5000ms 产生中断 可以计数。 a++ 到a到你的制定值就可以了,a装不下的话 到了比如说50000 可以计数b++ a=0 以此类推4.3应该是一个寄存器内整数自减耗费的ns 纳秒 。一般从晶振和数据手册可以推算到时钟周期,然后一个基本操作的机器周期会消耗一定的时钟周期,而一个指令周期可能耗费多个时钟周期。一般查数据手册可以计算出来的。
4,单片机延迟多少时间12M
MOV R7,#10;1微妙MOV R6,#50;R7*1=微妙DJNZ R6,$;R7*R6*2=微妙MOV R6,#100;R7*1=微妙DJNZ R6,$;R7*R6*2=微妙DJNZ R7,DELAY_DISP_LOOP;R7*2=微妙RET ;2微妙再加调用子程序的ACALL=2微妙所以1+10+1000+10+2000+20+2+2=3045微妙假设MOV、DJNZ指令周期为2个,10×(54+154)+ 10×2 +2= 2100个指令周期;每个指令周期1us,则共有2.1ms。这部分包含了硬件及软件上的变化因素.软件上, 建议输出汇编, 依照datasheet确认指令所用周期. (可能会有: a=i; inc a; i=a;....)硬件上, 依照硬件规格书, 可以知道晶振与单片机运行周期时间的关系. 标准应该是/12, 也有不同的.
5,单片机这个程序延迟多少秒运行多少机器周期
TIMER:
MOV R3,#04H ; 1
MOV R4,#00H ; 1
MOV R5,#00H ; 1
TIMERLOOP:
DJNZ R5,TIMELOOP ; 2 第一个循环
DJNZ R4,TIMELOOP ; 2 第二个循环
DJNZ R3,TIMELOOP ; 2 第三个循环
RET ; 2
执行第一个循环花费机器周期:2*256;
执行第二个循环(包括第一个循环)花费机器周期:(2*256+2)*256;
执行第三个循环(包括前两个循环)花费机器周期:((2*256+2)*256+2)*4;
所以总共运行机器周期:1+1+1+((2*256+2)*256+2)*4+2 =
(前面三个1是mov指令,后边一个2是ret指令,结果自己算算就知道了)
对不对可以在keil或者其他软件仿真一下,我以前做延时都这样按指令计算,和仿真结果是一样的,这个结果应该是对的。
6,51单片机他要求延时60毫秒但是100200够吗100200不是才20
要看你的晶振了,如果是12M的话,这100*200大概能延时160毫秒左右这些是非精准延时,可以用软件仿真来模拟得到所需时间,精准延时的话,可以用定时器 100*200 并不是时间,而是单片机运行100*200次运算所需的时间最好不要使用这种循环延迟,这种方法延迟仅仅只是让芯片,一直在高速的做着空运算。在这段时间如果还要做另一事是不行了。51单片机应该有计时器中断功能,应该是在timer.c里,有一个函数delayMs()是计时中断。这个是毫秒为单位的,20毫秒是delayMs(0,20),值0是以0号计时器计时。我也在学习,不知道能不能帮你。你看一下有关中断的资料,中断挺重要的。你这是51(12t)的程序吧,stc12le5608ad是1t的要要差10倍左右,当然不到1秒了delay(5000);也就0.5秒delay(50000);应该是5秒左右可以参照这个,这是个较精确的毫秒延时程序。void DelayMS(uint x) uchar i; while(x--) for(i=120;i>0;i--); }}
7,单片机延时问题下面的程序延时大约是多少
如果选用标准单片机,12振荡一个机器周期,正常模式,12M晶振,采用内部直接寻址寄存器(data),其它编译控制项为缺省设置时,一句while( --num ) 的执行时间是8us,Delay函数的执行时间就是num * 8us。详细说明如下:这段程序的延时与选用的单片机型号(有12振荡一个机器周期和单振荡一个机器周期的芯片)、工作方式(正常还是倍频模式)、晶振、编译模式(变量选择内部寄存器还是外部寄存器及优化模式),num初值等都有关系。另外多说一句,num参数数据类型也是一个因素,选择ulong、uint、uchar时间是不一样的,long时间最长,char最短ulong:40usuint:8usuchar:2us差别很大的。和选用的单片机、晶振、编译器有关。这个的话12M,stc单片机 不到1us很少的机器周期耗费了一点时间,单时间增大的时候,它把损耗的时间减小了,所以后来就变小了其实就好比一个分数一样,当分子分母同时增加的时候的那种意思差不多楼主可以好好理解一下你要是知道汇编的话,你就知道为什么这样的建议你去看下汇编的延时计算,你就很清楚 了初学一般都用的12M的晶振,以上是一个带形参的函数,写程序调用是应写成void Delay(1) 括号里面任写一数 延时时间为1.6us乘以括号里的数。一般我们认为void Delay(3)为5微妙延时。在不需要精确度的时候可以这样用延时函数,精准度高的时候必须用定时器。
文章TAG:
单片机定时器最高可以延时多少单片机 定时 定时器