设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 596|回复: 0
收起左侧

C51/STC 单片机 62.5ms/62500us 12T 定时器0中断实现输出高精度1Hz方波(秒信号)的方法

[复制链接]
发表于 2022-8-23 16:43:57 | 显示全部楼层 |阅读模式
1.png
  1. #include "STC12C5A60S2.h"                                        //单片机型号:STC任意 (根据型号更改对应的头文件)
  2. #include "intrins.h"
  3. #define feed_dog()        WDT_CONTR |= 0x10        //看门狗喂狗                       
  4. #define T62500us 0x0BDC                                        //12Mhz 62500us 12T定时器初值 (根据晶振频率修改)
  5. sbit hz1 = P1 ^ 0;                                                //1HZ信号输出 (连接示波器或逻辑分析仪测量)
  6. void InitTimer0(){
  7.     TMOD = 0x01;
  8.     TH0 = T62500us >> 8;
  9.     TL0 = T62500us;
  10.         PT0 = 1;
  11.     EA = 1;
  12.     ET0 = 1;
  13.     TR0 = 1;
  14. }

  15. void main(){
  16.         WDT_CONTR = 0x27;        //开看门狗
  17.     InitTimer0();
  18.         while (1) {
  19.                 _nop_();_nop_();
  20.                 feed_dog();
  21.                 _nop_();_nop_();
  22.         }
  23. }

  24. void Timer0Interrupt() interrupt 1{                //12Mhz@62.5ms 定时器0中断 (1ms误差较大,使用62.5ms产生秒信号)
  25.         static unsigned char i = 0;
  26.         TH0 = T62500us >> 8;
  27.         TL0 = T62500us;
  28.         if(++i >= 8){
  29.                 i = 0;
  30.                 hz1 = !hz1;
  31.         }
  32. }
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-24 22:54 , Processed in 1.203069 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表