找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1201|回复: 2
收起左侧

用天问BLOCK做的时钟误差问题

[复制链接]
ID:1087920 发表于 2023-8-5 08:21 | 显示全部楼层 |阅读模式
时钟有误差,希望大神可以提出意见。
IMG_20230805_081029.jpg
IMG_20230805_081041.jpg
IMG_20230805_081156.jpg
IMG_20230805_081206.jpg

数码管.zip

4.24 KB, 下载次数: 8

回复

使用道具 举报

ID:401564 发表于 2023-8-8 12:34 | 显示全部楼层
第一次看到这种鸡肋编程
如果还想玩单片机,赶紧学C语言和KEIL吧
你学的这不叫单片机,叫"STC"
回复

使用道具 举报

ID:155507 发表于 2023-8-8 18:17 | 显示全部楼层
你应该贴这个给人家看。

  1. #define SOFTIIC_SCL P1_0
  2. #define SOFTIIC_SCL_OUT {P1M1|=0x01;P1M0|=0x01;}//P1_0开漏输出
  3. #define SOFTIIC_SDA P1_1
  4. #define SOFTIIC_SDA_IN {P1M1|=0x02;P1M0&=~0x02;}//P1_1高阻输入
  5. #define SOFTIIC_SDA_OUT {P1M1|=0x02;P1M0|=0x02;}//P1_1开漏输出

  6. #include <STC8HX.h>
  7. uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
  8. #include "mylib/TM1650.h"
  9. #include "lib/delay.h"

  10. uint8 shi = 23;
  11. uint8 fen = 59;
  12. uint8 miao = 50;
  13. uint8 lj_50ms = 0;
  14. void diaplay();

  15. void Timer0Init(void)        //2566微秒@24.000MHz
  16. {
  17.   AUXR &= 0x7f;                //定时器时钟12T模式
  18.   TMOD &= 0xf0;                //设置定时器模式
  19.   TL0 = 0xf4;                        //设定定时初值
  20.   TH0 = 0xeb;                        //设定定时初值
  21. }

  22. /*描述该功能...
  23. */
  24. void diaplay(){
  25.   TM1650_displayBit(fen % 10,1,0);
  26.   TM1650_displayBit(fen / 10,2,0);
  27.   TM1650_displayBit(shi % 10,3,1);
  28.   TM1650_displayBit(shi / 10,4,0);
  29. }

  30. void T_IRQ0(void) interrupt 1 using 1{
  31.   lj_50ms--;if(lj_50ms == 0){
  32.     miao++;if(miao >= 60){
  33.       fen++;miao = 0;
  34.       if(fen >= 60){
  35.         shi++;miao = 0;
  36.         fen = 0;
  37.         if(shi >= 24){
  38.           delay(160000);
  39.           miao = 0;
  40.           fen = 0;
  41.           shi = 0;
  42.         }
  43.       }
  44.     }
  45.   }
  46. }

  47. void setup()
  48. {
  49.   TM1650_Init();//TM1650初始化
  50.   Timer0Init();
  51.   EA = 1; // 控制总中断
  52.   ET0 = 1; // 控制定时器中断
  53.   TR0 = 1;// 定时器0开始计时
  54.   P3M1&=~0x08;P3M0|=0x08;//推挽输出
  55.   P3M1&=~0x04;P3M0|=0x04;//推挽输出
  56.   P3M1&=~0x80;P3M0|=0x80;//推挽输出
  57. }

  58. void loop()
  59. {
  60.   diaplay();
  61.   if(P3_2 == 0){
  62.     if(fen <= 58){
  63.       fen = fen + 1;
  64.       delay(150);
  65.     }
  66.     else{
  67.       fen = 0;
  68.     }
  69.   }
  70.   if(P3_3 == 0){
  71.     if(shi <= 23){
  72.       shi = shi + 1;
  73.       delay(150);
  74.     }
  75.     else{
  76.       shi = 0;
  77.     }
  78.   }
  79.   if((P3_3 == 0) && (P3_2 == 0)){
  80.     miao = 0;
  81.   }
  82. }

  83. void main(void)
  84. {
  85.   setup();
  86.   while(1){
  87.     loop();
  88.   }
  89. }
复制代码


为什么定时器是设置成这样?
2566微秒@24.000MHz
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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