单片机震荡频率是12MHZ,请编写1MS的延时程序,拜托啦

单片机震荡频率是12MHZ,请编写1MS的延时程序,拜托啦,第1张

void delay()

{

unsigned char i;

for(i=0; i<120; i++);

}

这个程序差不多就是1ms的时间, 不过没有定时器准,最好用定时器好点

6M晶振,方式2定时1mS的时间太长,不能直接实现,(最大定时应该是512uS)下面是500uS定时示例程序,可在中断函数中计数每2次得1S。

void Timer1Init(void) //500微秒@6000MHz

{

AUXR &= 0xBF; //定时器时钟12T模式

TMOD &= 0x0F; //设置定时器模式

TMOD |= 0x20; //设置定时器模式

TL1 = 0x06; //设置定时初值

TH1 = 0x06; //设置定时重载值

TF1 = 0; //清除TF1标志

TR1 = 1; //定时器1开始计时

}

单片机的延时程序通过执行指令来达到延时效果,这个时间等于执行的指令需要的时间,而一个指令需要的时间叫做指令周期,这个时间等于若干个机器周期。

扩展资料:

1丶指令周期,是每种运算需要的时间,如加法、逻辑等,是每一步进行这种指令运算需要的时间,是机器周期的整数倍,这种周期不定。

2丶51单片机12M晶振,晶振周期1/12微妙,一个机器周期包含12个晶振周期,所以12M晶振时机器周期=12x(1/12)微妙=1微妙。

3丶1个毫秒延时子程序如下:

void delay1ms(uint ms)

{

uint  i,j;

for(i=0;i<ms;i++)

{

for(j=0;j<110;j++);

}

}

猜想你问的是1ms

下面为你写出1ms的程序:

用的是110592M的,你如果真的需要是12M的,那自己直接修改成12M就可以了。调用的时候直接把uinsigned int ms改成1就是1ms

void ConfigTimer0(unsigned int ms)

{

unsigned long tmp;

tmp = 11059200/12;

tmp = (tmp ms)/1000;

tmp = 65536 - tmp;

tmp = tmp + 18;

T0RH = (unsigned char)(tmp >> 8);

T0RL = (unsigned char)tmp;

TMOD &= 0xF0;

TMOD |= 0x01;

TH0 = T0RH;

TL0 = T0RL;

ET0 =1;

TR0 = 1;

}

以上就是关于单片机震荡频率是12MHZ,请编写1MS的延时程序,拜托啦全部的内容,包括:单片机震荡频率是12MHZ,请编写1MS的延时程序,拜托啦、设单片机系统采用6M晶振,写出用定时器1方式2实现1ms的延时程序、单片机延时程序的延时时间怎么算的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9266510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存