单片机C程序编程,10um的延时子程序
计时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,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。