欢迎哈哈哈3 发表于 2024-6-12 20:51:09

帮忙,我设置主时钟为11.0592M,12T模式,定时时间是不是1秒?

#include "main.h"
#include <intrins.h>

typedef   unsigned char   u8;
typedef   unsigned int    u16;
typedef   unsigned long   u32;

#define   MAIN_Fosc       11059200   //定义主时钟
#define Timer0_Reload   (65536UL -(MAIN_Fosc / 1105)) //定时10ms   

u16 B_ms=0;
code u8 SMG[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
u16 count;
void setinoutport()//
{
      P0M1=0X00;P0M0=0X00;
      P2M1=0X00;P2M0=0XFF;
      P1M1=0X00;P1M0=0X00;
      P3M1|=0XFC;P3M0|=0XFC;
}

void main()
{         
          setinoutport();
                        AUXR &= 0x7F;                        //定时器时钟12T模式
                        TMOD &= 0xF0;                        //设置定时器模式
                        TL0 = (u8)Timer0_Reload%256;                              //设置定时初始值
                        TH0 = (u8)Timer0_Reload/256;                              //设置定时初始值
                        ET0 = 1;                              //Timer0 interrupt enable
                        EA = 1;   //打开总中断
                        TR0 = 1;                              //定时器0开始计时

      for(;;)
      {
OutputPort0=SMG;
               
      }
}

/********************** Timer0 10ms中断函数 ************************/
void timer0 (void) interrupt 1
{   
    B_ms ++;      //10ms++
          if(B_ms>100)//满1S
                {
                        B_ms=0;
                        count++;
                        if(count>10)
                              count=0;
                }
}

soma 发表于 2024-6-12 21:37:47

可能有点误差

欢迎哈哈哈3 发表于 2024-6-12 22:03:22

soma 发表于 2024-6-12 21:37
可能有点误差
大佬再问下,程序中确定时钟主频率和定时器初值的计算,是这样计算嘛

soma 发表于 2024-6-12 22:21:04

11059200,12T模式一个周期相当于1.085us。10ms=10000us,=9216周期。换算是dc00.你的算出来是e800.

jwd 发表于 2024-6-12 22:42:41

有现成的工具可以使用

jwd 发表于 2024-6-12 22:46:43

没看见你调用定时,你现有的程序只是10ms中断一次

神农鼎 发表于 2024-6-12 23:30:01

楼主:主时钟为11.0592M,12T模式,定时时间要1秒





嵌入式之路 发表于 2024-6-13 00:19:12

用STC-ISP 直接复制粘贴

qike009 发表于 2024-6-13 06:05:23

你这个初值不对有误差还是官方软件计算吧

qike009 发表于 2024-6-13 06:07:43



这个才是零误差


页: [1] 2
查看完整版本: 帮忙,我设置主时钟为11.0592M,12T模式,定时时间是不是1秒?