单片机C程序编程,10um的延时子程序

供稿:hz-xin.com     日期:2025-01-13
单片机求一用C编写的延时1小时的子程序,要精确到秒级别

计时1小时差小于1秒,也就是误差要求小于1/3600普通的晶振很难有这个精度,使用外部时钟比较有把据。你要的是软件就给你一个吧,能不能达到精度要求就看单片机的时钟部分,跟软件没有关系。

/*****************************************/
/*广州一丁自动化设备有限公司020-28969088 */
/*****************************************/

#include

sbit led=P1^0;// led灯

unsigned int num=0;

unsigned int num1=0;



void time0() interrupt 1
{

TH0=(65536-50000)/256;//12M/6=2M,50000/2M=0.025秒(6M把50000改为25000)
TL0=(65536-50000)%256;
num++;//0.025秒加1

}


void main()
{

TMOD=0x01;//定时器0工作于方式1
TH0=(65536-50000)/256;//赋初值
TL0=(65536-50000)%256;

EA=1;//开总中断
ET0=1;//开定时器0
TR0=1;//运行定时器0

while(1)
{

if(num==40)//40个0.025秒等于1秒
{
num=0;
num1++;
if(num1==3600)//24M改7200
{
num1=0;
led=~led;//P1.0LED灯亮1小时灭1小时
}
}
}

不太懂你的意思,可以贴delay和delay_ms函数,还有你调用的代码出来吗?

void delay10us(void)   //误差 0us

{

    unsigned char a,b;

    for(b=1;b>0;b--)

        for(a=2;a>0;a--);

}

或者

#include <reg51.h>


void InitTimer0(void)

{

    TMOD = 0x01;

    TH0 = 0x0FF;

    TL0 = 0x0F6;

    EA = 1;

    ET0 = 1;

    TR0 = 1;

}

给你一个单片机小精灵,挺好用的,迅速方便自动计算



单片机C程序编程,10um的延时子程序
void delay10us(void) \/\/误差 0us { unsigned char a,b;for(b=1;b>0;b--)for(a=2;a>0;a--);} 或者 include <reg51.h> void InitTimer0(void){ TMOD = 0x01;TH0 = 0x0FF;TL0 = 0x0F6;EA = 1;ET0 = 1;TR0 = 1;} 给你一个单片机小精灵,挺好用的,迅速方便自...

求文档: AT89C2051-24PU中文资料
人体辐射的红外线中心波长为9~10--um,而探测元件的波长灵敏度在0.2~20--um范围内几乎稳定不变。在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为7~10--um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。