欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

单片机设置12分频c语言,AT89C51单片机,如何实现延迟一秒

发布时间:2024/4/14 编程问答 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 单片机设置12分频c语言,AT89C51单片机,如何实现延迟一秒 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

满意答案

爱在身边lovely

2013.09.07

采纳率:59%    等级:12

已帮助:7408人

其实可以用C语言实现的,先要定义好定时器的初值

不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期

机器周期=12/n(n指晶振频率),假设你要定时的时间为M

那么定时的初值为:

M/机器周期=初值;

TH0=(65536-初值)%256;

TL0=(65536-初值)/256;

将(65536-初值)所得的值化成16进制,其高位就是TH0的值,低位为TL0的值

例如用12M晶振做1ms定时计算如下:

机器周期=12/12*10^6=1us(微秒)

定时初值=(1*10^-3)/(1*10^-6)=1000;

所以:TH0=(65536-1000)%256;

TL0=(65536-1000)/256;

将65536-1000=64536化为16进制为:0xFC18

TH0=0xFC;

TL0=0X18;

定好初值后要延迟一秒就定一个延时参数,这里使用1000就行了(定时为1ms)中断程序为:

timer0() interrupt 1 // 1ms延时(12.0MHz)

{

TR0=0;

ET0=0;

TH0=0xfc;

TL0=0x18;

if(delayTimes1!=0) delayTimes1--;

TR0=1;

ET0=1;

}

调用程序大致为:

if(delay_flag==0)

{

delay_flag=1;

delayTimes1=1000;

}

if(delayTimes1==0)

{

delay_flag=0;

这里写定时到的操作就行了;

}

(在主程序中使用delay_ms()这样的程序会影响程序运行速度的,使用中断就不会)

00分享举报

超强干货来袭 云风专访:近40年码龄,通宵达旦的技术人生

总结

以上是生活随笔为你收集整理的单片机设置12分频c语言,AT89C51单片机,如何实现延迟一秒的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。