基于at89c52的实时时钟的秒定时信号的产生方法 30

基于at89c52的实时时钟的秒定时信号的产生方法急需... 基于at89c52的实时时钟的秒定时信号的产生方法急需 展开
 我来答
帐号已注销
2017-01-05 · TA获得超过2062个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:338万
展开全部
  利用单片机产生时钟信号,一般都是用定时器来完成

  先给定时器赋一个初始值,单片机每运行一次周期,则定时器初值改变一次

  定时功能,就是利用这种状态来完成的

  如果想输出秒信号,那就要计算好单片机的运行周期和定时器初值的关系

  具体方法如下:
  1 可以按定时时间的计算公式, 计算出定时器的时间常数X:
  定时时间T=(2的N次方-X)12/单片机晶振频率
  2 N为定时器的工作方式:
  方式0时,N=13 方式1时,N=16 方式2时,N=8
  3 根据定时时间和工作方式,计算出时间常数X
  把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了。
  例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ
  则定时时间T=(2的16次方-X)12/12MHZ 解出 X=64536=FC18

  晶振11.0592M
  11.0592MHz除12为921600Hz,
  就是一秒921600次机器周期, 10ms=9216次机器周期.
  65536-9216=56320(dc00) TH0=0xdc,TL0=0x00

  测试程序如下

  #include<reg51.h>
  unsigned int n;
  void main(void)
  {
  TH0=(65536-1000)/256; TL0=(65536-1000)%256;
  TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化
  while(1);//主循环,不做任何动作
  }

  void int1() interrupt 1 //定时器中断
  {
  TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;
  if(n>500)//如果达到半秒,1000为一秒
  {
  n=0;
  P1 = ~P1 ;//半秒位取反一次,达到一秒钟闪烁一次的效果
  }
  }
深圳市兴威帆电子技术有限公司
2023-06-12 广告
时钟模块有许多选择,这里为您提供几家广泛应用的模块,并询问一些普遍问题:1. Arduino - 这是一个非常受欢迎的选择,因为它易于使用,价格实惠,且能与多种传感器连接。此外,它也具有可编程功能和Wi-Fi /蓝牙功能。2. Raspbe... 点击进入详情页
本回答由深圳市兴威帆电子技术有限公司提供
暗棵遇到斡9Z
2017-01-01 · 超过26用户采纳过TA的回答
知道答主
回答量:425
采纳率:0%
帮助的人:65.4万
展开全部
基于at89c52的实时时钟的秒定时信号的产生方法具体可以和我谈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式