您的位置:

延迟100ms程序c语言代码,编写延迟20ms的子程序

本文目录一览:

单片机,C语言写的一小段程序,高手帮看看

这是一个简单的流水灯实验,前面的void

delay(uint)是一个函数申明,你这一段里面没有给delay函数,给的程序不够清晰。

如果是延迟100ms的话,delay函数应该是这样的:

void

delay(unsigned

int

x)

{

unsigned

int

i,j;

for(

i

=0;i

x;i++

)

{

for(

j

=0;j3;j++

);

}

}

给定delay(100)即延迟100ms。

设单片机的晶振频率为6MHZ编写一段延时程序约延时100ms的子程序

机器周期=12/6MHz=2μs

定时100ms的计数值 =100ms/2μs =50000

设T1工作于方式1(16位计数器)

计数初值 =2^16 -50000=65536=15536=3CB0H

MOV TMOD,#10H ;; T1工作方式1、定时模式

MOV TH1,#3CH ;; 写入计数初值高8位

MOV TL1,#B0H ;; 写入计数初值低8位

SETB TR1 ;; 启动T1,开始计时

SETB ET1 ;; 允许T中断

SETB EA ;; CPU开中断

SJMP $ ; ; 等待T1计时溢出中断

单片机中延时100毫秒的程序

汗!问这个问题说明你对时钟周期、机器周期、定时器周期都不太了解吧。

延时100毫秒的程序可以是一个函数,也可以是利用定时器的一段代码。

如果是用汇编延时那么你要把单片机指令周期表翻一下了,看看整个循环语句用了哪些指令,每个指令多少个机器周期,然后计算每个机器周期耗时多少时长,你就知道循环多少次了。

如果用C语言延时,那么就要借助仪器了,你同样要估算一下机器周期和循环次数,然后要精确到100ms就需要把这个延时时间作为频率从单片机IO口输出,用仪器来辅助测量,最后得出叫准确的100ms的循环次数的值。

如:

void delay_100ms(uint8 n)

{

uint16 i;

while(n)

{

for(i=0;ixxx;i++)//此循环应为运行100ms,用仪器辅助得到xxx的值。不够就再在FOR一次。

}

}

用for循环 和while 循环分别完成延时100毫秒的延时函数 假设晶振为12m

最好直接利用定时器延时,定时1毫秒,程序中调用延时函数就行了,Delay(100): uint count; //定义外部变量 Delay( uint k) // 延时函数 { count = k; while(count!=0) ; } TIME0() interrupt 1 // 定时器0中断函数 { TH0 = 0XFC; TL0 = 0X18; count--; }

用C语言编写一段循环100次的延时程序。

 #include stdio.h

int main()

{    

    int i;

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

    return 0;

}

哈 你想多了把

额,你如果是说sleep那种形式的延时,可以在头上加#include windows.h

然后

#include stdio.h

#include windows.h

int main()

{    

    int i,a=(1000);

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

    {

        sleep(a);

    }

    return 0;

}

想看一下延时效果的话,可以这样:

#include stdio.h

#include windows.h

int main()

{    

    int i,a=(1000);

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

    {

        sleep(a);

        printf("%d\n",i);

    }

    return 0;

}