资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C语言延时函数8086,c语言延时函数delay延时一秒

C语言中 delay 函数如何运用?

1、delay函数是一般自己定义的一个延时函数。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站制作、成都做网站、衢州网络推广、成都微信小程序、衢州网络营销、衢州企业策划、衢州品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供衢州建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

2、C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。

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

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

{

unsigned int x,y;

for(x=xms;x0;x--)

for(y=110;y0;y--);

}

单片机c语言delay函数for语句

这是一个双重嵌套循环写法, 外面的循环从0开始递增 ,循环500下, 里面一个循环从0开始递增,循环121下, i和j是自定义的变量, 和数学中设定x,y,z 一样, 但同一函数内不可定义两个名称一样的变量,编译器会报错, 取值范围不一样是根据你的业务需要定的, {;}这个分号为什么写在这里我不大清楚,我学java的,个人感觉你应该还是个新手, 花括号里面是写 你要循环的动作 for(i=0;i500;i++){ for(j=0;j121;j++){ // to do something.. } }

如何计算C语言中的延时函数

的程序有问题额。

void

daly()

{unsigned

char

j;

for(j=60;j〈=0;j--)

}

你可去看看单片机的时钟信号产生电路中的有关

节拍:指振荡脉冲周期

状态:振荡脉冲尽过2分频后,就是单片机时钟信号的周期,定义为状态,一个状态等于两个节拍

机器周期:单片机采用定时控制方式,有固定的机器周期,一个机器周期等于6个状态,

机器周期=6个状态=12个节拍

当振荡脉冲频率为12mhz时,一个机器周期为1微秒,振荡脉冲频率为6mhz,一个机器周期为2微秒

数据类型中unsigned

char为无符号字符型值域是在0~~~255范围里

在上面我设的是60次的循环,且晶振是约在12mhz,那么可以看出我们的算值是用60x1微秒,即可得到我们所要的延时值啊

关于C语言for循环延时函数

for循环实现C语言精确延时

(晶振12MHz,一个机器周期1us.)

一. 500ms延时子程序

程序:

void delay500ms(void){

unsigned char i,j,k;

for(i=15;i0;i--)

for(j=202;j0;j--)

for(k=81;k0;k--);

}

产生的汇编:

C:0x0800 7F0F MOV R7,#0x0F

C:0x0802 7ECA MOV R6,#0xCA

C:0x0804 7D51 MOV R5,#0x51

C:0x0806 DDFE DJNZ R5,C:0806

C:0x0808 DEFA DJNZ R6,C:0804

C:0x080A DFF6 DJNZ R7,C:0802

C:0x080C 22 RET

计算分析:

程序共有三层循环

一层循环n:R5*2 = 81*2 = 162us DJNZ 2us

二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值 1us = 3us

三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值 1us = 3us

循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us

延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms

计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5

二. 200ms延时子程序

程序:

void delay200ms(void){

unsigned char i,j,k;

for(i=5;i0;i--)

for(j=132;j0;j--)

for(k=150;k0;k--);

}

产生的汇编

C:0x0800 7F05 MOV R7,#0x05

C:0x0802 7E84 MOV R6,#0x84

C:0x0804 7D96 MOV R5,#0x96

C:0x0806 DDFE DJNZ R5,C:0806

C:0x0808 DEFA DJNZ R6,C:0804

C:0x080A DFF6 DJNZ R7,C:0802

C:0x080C 22 RET

三. 10ms延时子程序

程序:

void delay10ms(void){

unsigned char i,j,k;

for(i=5;i0;i--)

for(j=4;j0;j--)

for(k=248;k0;k--);

}

产生的汇编

C:0x0800 7F05 MOV R7,#0x05

C:0x0802 7E04 MOV R6,#0x04

C:0x0804 7DF8 MOV R5,#0xF8

C:0x0806 DDFE DJNZ R5,C:0806

C:0x0808 DEFA DJNZ R6,C:0804

C:0x080A DFF6 DJNZ R7,C:0802

C:0x080C 22 RET

四. 1s延时子程序

程序:

void delay1s(void){

unsigned char h,i,j,k;

for(h=5;h0;h--)

for(i=4;i0;i--)

for(j=116;j0;j--)

for(k=214;k0;k--);

}

产生的汇编

C:0x0800 7F05 MOV R7,#0x05

C:0x0802 7E04 MOV R6,#0x04

C:0x0804 7D74 MOV R5,#0x74

C:0x0806 7CD6 MOV R4,#0xD6

C:0x0808 DCFE DJNZ R4,C:0808

C:0x080A DDFA DJNZ R5,C:0806

C:0x080C DEF6 DJNZ R6,C:0804

C:0x080E DFF2 DJNZ R7,C:0802

C:0x0810 22 RET

在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响.

C语言延时函数

C语言的延迟函数一般是利用无意义程序运行来控制时间从而达到延时的目的

举个例子:

for(i=0;ix;i++)

for(j=0;j120;j++);

这是延时x毫秒的for循环语句。

值得注意的是记得最后的;一定得记得写。


文章题目:C语言延时函数8086,c语言延时函数delay延时一秒
分享链接:http://cdkjz.cn/article/phihss.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220