jqfsjt 发表于 2018-5-30 20:34:08

STC8F2K16S2分频后频率不对

我用STC8F2K16S2做设计,下载时设置为5.5296,程序用CLKDIV = 0x04;但是定时器0中断5MS,但是实际测试是1.25MS
//下载程序时,在ISP软件中设置为5.5296MHz

#include "STC8F.H"

sbit LED_L = P2^5;
sbit LED_R = P5^5;
void main()
{
        /********** IO ***************/
    P0M0 = 0x00;P0M1 = 0x00;
        P1M0 |= 0XFF; P1M1 |= 0X00;                //设置P1为推挽输出
        P2M0 = 0x00;P2M1 = 0x00;
        P3M0 = 0x00;P3M1 = 0x00;
    P4M0 = 0x00;P4M1 = 0x00;
    P5M0 = 0x00;P5M1 = 0x00;
    P6M0 = 0x00;P6M1 = 0x00;
    P7M0 = 0x00;P7M1 = 0x00;

        //系统时钟为内部R/C振荡时钟/4       5.5296/4=1.3824
        CLKDIV = 0x04;   

        //5毫秒@1.3824MHz
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0x00;                        //设置定时初值        5毫秒@1.3824MHz
        TH0 = 0xE5;                        //设置定时初值        5毫秒@1.3824MHz
        TF0 = 0;                        //清除TF0标志
        TR0 = 1;                        //定时器0开始计时

        ET0 = 1;                        //开定时器0
    EA = 1;                    //开总中断        
        while(1);
}       

//-------------- 定时器中断0程序----------------------------------------------------
void time0() interrupt 1                          //5毫秒@1.3824MHz               
{       
LED_R = ~LED_R;               
}

jqfsjt 发表于 2018-5-30 20:36:03

本帖最后由 jqfsjt 于 2018-5-30 20:50 编辑

数据手册中有个时钟系统结构图,根据图,判断应该是4分频了。但是实际没有分频。是否还有别的设置不对?

1.25ms中断是用示波器测量的。

su33691 发表于 2018-5-30 22:45:03

把CLKDIV改为8分频试试。

jqfsjt 发表于 2018-5-30 23:03:07

su33691 发表于 2018-5-30 22:45
把CLKDIV改为8分频试试。

没有效果,还是1.25ms

takashiki 发表于 2018-5-31 06:17:28


你用这个试试:P_SW2 = 0x80;
CLKDIV = 0x04;
P_SW2 = 0x00;

饭桶 发表于 2018-5-31 08:17:02

你程序里频率是1.3824

modbus 发表于 2018-5-31 10:20:16

少了P_SW2 = 0x80

jqfsjt 发表于 2018-5-31 12:00:01

咨询梁工,说STC8F2K16S2内部的IRC频率是24M或者22.1184M,ISP下载时,如果设置为5.5296,用22.1184M来4分频。所以如果设置为1.3824M时,需要16分频。

小李非刀 发表于 2018-6-1 16:43:03

jqfsjt 发表于 2018-5-31 12:00
咨询梁工,说STC8F2K16S2内部的IRC频率是24M或者22.1184M,ISP下载时,如果设置为5.5296,用22.1184M来4分 ...

设置为16分频,正常了吧? 主振荡器是24MHZ的,内部控制参数可以调整范围为18MHZ~28MHZ左右,更低的频率,就会使用分频。
比如你要5.5296MHZ,振荡器会调整到22.1184MHZ,然后4分频,你读分频系数会读到4。如果你再写4分频,则依旧是5.5296MHZ。
例外的,当你写分频系数为0或读出为0时,等同于分频系数1.
页: [1]
查看完整版本: STC8F2K16S2分频后频率不对