求单片机C语言延时程序(延时10s)

供稿:hz-xin.com     日期:2025-01-14
求一个1ms的单片机C语言延时程序

void delay(char x)
{
unsigned char a,b,c;
for(c=x;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
学过标准C就知道了,char 和 int 是可以相互转换的,char的取值范围是-128~+127
unsigned char 的是0~255
可以用unsigned int啊,我一般都是用char的,用unsigned int的话占的字节比较多,运行速度也没char那么快,计算机会麻烦点,建议使用char

C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。
void delay_ms(unsigned int ms_number) // ms延时函数 (AT89C51 @ 11.0592MHz)
{
unsigned int i;
unsigned char j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}
void Delay()
{
unsigned char a,b,c;
for(a=0;a<?;a++)
for(b=0;b<?;b++)
for(c=0;c<?;c++);
}
void delay_ms(unsigned int ms)
{
unsigned int i;
unsigned char j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}

拓展资料
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

用定时器做吧,DELAY了不能做别的事情,效率太低了。做一个1ms的定时程序,再到计数10000次的时候执行一次你要的程序(比如说置位某个变量),这样就可以了。51就那么几个寄存器,看一下就可以了设定了,TH和TL只要记住计数到0的时候,会产生中断就可以了

void delay(void) //12MHz 误差 0us
{
unsigned char a,b,c;
for(c=191;c>0;c--)
for(b=189;b>0;b--)
for(a=137;a>0;a--);
_nop_; //if Keil,require use intrins.h
}

分少,,不注释

delay10s(10000);//10秒
void
delay10s(uint
pp)//12mhz
uchar
i,j;
for(i=0;i<pp;i++)
{
for(j=0;j<125;j++)
{
;
}
}

sleep(10000);

delay10s(10000);//10秒

void delay10s(uint pp)//12mhz
uchar i,j;
for(i=0;i<pp;i++)
{
for(j=0;j<125;j++)
{
;
}
}

...函数形式写出10毫秒延时程序。该怎么写啊?用C语言写。
在单片机编程中,延时程序是常用的,特别是在需要控制执行时间的任务中。以12MHz晶振为例,这里提供了一些基于C语言的延时子程序。首先是10毫秒延时子程序,其代码如下:void delay10ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); } ...

求单片机C语言延时程序(延时10s)
用定时器做吧,DELAY了不能做别的事情,效率太低了。做一个1ms的定时程序,再到计数10000次的时候执行一次你要的程序(比如说置位某个变量),这样就可以了。51就那么几个寄存器,看一下就可以了设定了,TH和TL只要记住计数到0的时候,会产生中断就可以了 ...

求一个10ms的单片机C语言延时程序《p1按键按下p1-1灯亮延时10秒p1-1灭...
10ms 用晶振频率换算一下10ms的延时 用定时器 65536减一下 就可以设计10秒的 循环次数 然后将p1键连一个单片机I\/0口 设置 此口有按下信号 便做让 p1-1端口 所连另一个I\/0口亮灯10s的流程 便可以 实现

单片机中延迟10sC语言程序可以这样写吗,如果不可以哪儿错了?_百度知 ...
这样倒是也行啊。。一个是你要按照你的时钟周期算好循环次数,在一个for循环嵌套也可以 不过你单片机就不用干别的了。。光在这循环进行延时了。。很浪费MCU的说 一般超过10ms都建议用定时器中断。开个定时器中断设置比如设定定时器0,计数方式1,即16位定时器。如果是12MHZ外部晶振的话,1个时钟是...

用C语言怎么在单片机AT89C51上编写一个延时10秒的程序?
1、十秒对于单片机来说是很长很长的时间了,单片机十秒的时间什么事都不能做,只在跑这延时程序,那是什么概念,用中断的话,单片机正常运行其他程序,只是时间到了才过来处理延时以后的程序,效率不知道高了多少 。2、例程:\/\/假设晶振12MHZ include "reg51.h"unsigned int YSJS=0;void main(void...

52单片机C语言中“Delay”是什么意思,怎么用?
一般延时1ms的程序是:void Delay(uint x){ uchar i; while(x--) { for(i=120;i>0;i--); }} 那么当你在别的函数中用到Delay(10000);就是延时10000ms,也就是10S

求c8051f310定时器 定时10s的c语言程序.急急急!!!
先来个完整的程序 定时十秒只要把 50毫秒*tt=10秒。即把tt改为200。参考一下这个,肯定会懂的。include<reg52.h> define uint unsigned int define uchar unsigned char sbit WL=P2^0;sbit DL=P2^1;sbit K=P2^7;uchar tt,aa,bb,cc;uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x...

麻烦高手指点一二,单片机(C语言)当一开关按下并持续10秒后,LED亮并保...
{ delay(100); \/\/假设这是1s的延时,嵌套10个就是10秒的~~if(key==0){ delay(100);if(key==0){ flag=1; \/\/标志位改变 } } } if(flag==1){ led=1; \/\/灯点亮 } if(key==1){ flag=0; \/\/标志位还原 } if(flag==0){ led=0; \/\/灯熄灭 } ...

...单片机的晶振频率为12MHZ,试编写10ms的延时程序(要求误差不超过0.003...
C语言程序:include void main (void){ TMOD = 0x10;TH1 = (-50000>>8);TL1 = -50000;TCON = 0x40;IE = 0x88;while(1);} void T1_int (void) interrupt 3 { TH1 = (-50000>>8);TL1 = -50000;} 汇编程序如下:ORG 0000H AJMP MAIN ORG 001BH AJMP T1INT ORG ...

单片机延时程序
在进入delayms();函数后,i=xms即i=10,然后做for循环,根据系统的时钟周期做出相应时间的延时。如果没有xms,你的延时函数只能写成固定延时的,即在delayms内部确定好i的值,很不方便。有了入口参数,就能像上面说的那样随意延时了(数值范围要在uint定义内,即小于65536)。