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:50 编辑
数据手册中有个时钟系统结构图,根据图,判断应该是4分频了。但是实际没有分频。是否还有别的设置不对?
1.25ms中断是用示波器测量的。 把CLKDIV改为8分频试试。 su33691 发表于 2018-5-30 22:45
把CLKDIV改为8分频试试。
没有效果,还是1.25ms
你用这个试试:P_SW2 = 0x80;
CLKDIV = 0x04;
P_SW2 = 0x00; 你程序里频率是1.3824 少了P_SW2 = 0x80 咨询梁工,说STC8F2K16S2内部的IRC频率是24M或者22.1184M,ISP下载时,如果设置为5.5296,用22.1184M来4分频。所以如果设置为1.3824M时,需要16分频。 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]