导航:首页 > 操作系统 > 51单片机延时程序

51单片机延时程序

发布时间:2022-05-22 17:44:35

1. 51单片机中延时程序

1. sleep()是以毫秒计算的,延时5秒是sleep(5*1000);,延时5分是sleep(5*1000*60);

2.包含的头文件看你用的什么编辑软件。

3.我用的VC++是用包含在#include<windows.h>头文件中。

#include<stdio.h>#include<windows.h>//Sleep()的头文件 main() { int i;

int n=10;for(i=1;i<=n;i++) {printf("%d",i);Sleep(5*1000*60);} //

这里修改延时时间,

有些人说是用#include<dos.h>做头文件你自己试下吧。

还用Sleep的S是大写的,不是小写的。

2. 51单片机怎么用软件延时

以下是51单片机C语言精密延时程序:
voiddelayms(unsigned char t)
{
unsigned char j;
unsigned char i;

do
{
j=3;
do
{
i=165;
do
{
--i;
}
while(i!=0);
--j;
}
while(j!=0);
--t;
}
while(t!=0);
}
该程序延时时基为1ms,所以最大延时时间是255ms
下面是反编译的汇编程
C:0x0031 7E03 MOV R6,#0x03

C:0x0033 7DA5 MOV R5,#0xA5

C:0x0035 DDFE DJNZ R5,C:0035

C:0x0037 DEFA DJNZ R6,C:0033

C:0x0039 DFF6 DJNZ R7,delayms(C:0031)

C:0x003B 22 RET
延时时间计算公式如下:
((R5*2 + 2+1)*R6+2+1)R7
假设R7=1,上式为(165*2+3)*3+2+1=1002us!!!!!
以上程序使用的晶振是12MHz,如果使用的是其他频率的晶振只需计算出1ms的机器周期数,代入(R5*2 + 2+1)*R6+2+1,选择合适的R5,R6即I,j的值就行了。

3. 51单片机用定时器查新的方法编写一秒的延时程序,fosc=12MHZ

一、用定时器中断,50ms中断的1 次,20次就是1秒
#include <REG51.H>
#define uchar unsigned char
sbit LED =P1^1; //接一LED,1 秒钟亮或灭一次
uchar time;
void init_t0int()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init_t0int();
while(1);
}

void t0int() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
time++;
if(time==20)
{
time=0;
LED=~LED;
}
}

二、用循环延时可能程序更简单一点,但没实际意义 。单片机在这1 秒内只能循环而不能做其它事。
#include<reg51.h>
sbit LED=P1^0;
void delay_ms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<123;i++);
}
void main()
{
while(1)
{
delay_ms(1000);
LED=~P1^0; //P1.0接一LED,可看到LED每1S亮或灭一次
}
}
参考资料: LED

4. 用汇编怎么写51单片机的延时程序

和前两位的差不多,最简单的就是运用MOV赋值的,再用DJNZ递减的方式,计算出每条指令执行时间,再加上循环字数,延时时间按照你自己的时间编写循环次数和赋值大小;另外,你也可以用定时器编写,计算好你的延时时间,当时间达到时输出高电平,作为中断信号,返回主程序,执行设定延时后的目标程序。
汇编和C各有好处,就我个人而言,浮点数的计算最好用C编,汇编不好解决,而且需要的很多代码,C很容易就可以实现!

5. 51单片机延时程序

我以2ms为例说明一下:
单片机的晶振周期为12hz,则执行一条代码为一个机器周期,为1微妙(ua),所以2ms=10*200(ua),
对r2赋值200(4位二进制数最大值为256,所以只能取到200)即#c8h。再对r2循环20次就实现了2ms延时。至于100ms、
200ms、
1s等等方法类似,只是调整相应的初值。多设置几次循环就行。
程序代码如下:
delay:
mov
r1,#0ah
;赋值r1为10次
delay1:
mov
r2,#c8h
;赋值r2为200次
delay2:
djnz
r2,$
;r2自减到0,不到0继续等待
djnz
r1,delay1
;r2减到0后r1自减1,重新给r2赋初值后继续循环,直到r1到0为止,延时结束
ret

6. 51单片机怎么测试延时程序

不用测试,可以用软件仿真。像编译软件都有仿真功能,只要晶振频率设置正确,仿真结果与实际运行是一致的。

7. 51单片机C语言中delay函数是怎么定义和使用的

定义一个延时xms毫秒的延时函数

void delay(unsigned int xms) // xms代表需要延时的毫秒数

{

unsigned int x,y;

for(x=xms;x》0;x--)

for(y=110;y》0;y--);

}

使用:

void Delay10us(uchar Ms)

{

uchar data i;

for(;Ms》0;Ms--)

for(i=26;i》0;i--);

}

i=[(延时值-1.75)*12/Ms-15]/4

(7)51单片机延时程序扩展阅读

1、在C51中进行精确的延时子程序设计时,尽量不要或少在延时子程序中定义局部变量,所有的延时子程序中变量通过有参函数传递。

2、在延时子程序设计时,采用do…while,结构做循环体要比for结构做循环体好。

3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。

8. 帮忙写个简单的51单片机延时程序

用定时器做延时比较好实现。
#include<reg51.h>
#defineucharunsignedchar
sbitk=P1^0;
sbitled=P1^1;
ucharcnt,sec;
voidt0isr()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
if(cnt>=20)
{
cnt=0;
sec++;
}
}
voidmain()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(k==0)
{
cnt=0;
sec=0;
while(k==0)
{
if(sec>=3&&sec<=8)led=0;
elseled=1;
}
}
led=1;
}
}

9. 51单片机延时程序怎么写

你要想让他有一个延时的程序的话,一定要定一个int字节,然后让他进行一个巡回操作才可以,在读取操作一轮结束之后,让他循环进行一个复位,这样的话就可以了。

10. C51单片机延时

汇编的话,是可以精确的计算出来的,C就不然了,你可以用Keil看看相应的汇编程序,展开后程序较长,汇编指令很多,所以延时时间远远不是400us,大概齐在1.6ms左右吧。

阅读全文

与51单片机延时程序相关的资料

热点内容
云服务器建设原理 浏览:258
javajunit4for 浏览:845
华为服务器如何进阵列卡配置 浏览:435
apache服务器ip地址访问 浏览:718
如何买到安卓手机预装软件 浏览:537
冤罪百度云不要压缩 浏览:87
苏州云存储服务器 浏览:175
解压收纳原声 浏览:385
java注册验证 浏览:375
火花app怎么上推荐 浏览:980
什么app能游戏投屏到电视上 浏览:455
服务器托管到云端是什么意思 浏览:836
app保存草稿怎么用 浏览:808
安卓如何进入proumb 浏览:144
主机虚拟云服务器 浏览:619
删除分区加密的空间会不会恢复 浏览:706
京东app客户上门怎么看搜索量 浏览:741
怎么在农行app购买黄金 浏览:46
c型开发板和单片机 浏览:146
虚拟机建立用户的模板文件夹 浏览:905