STC8H8K64U內部晶振精度 | 已解决
各位同学,我用T0定时器,设置2us中断一次,计数位加1,中断250次后计数位清零再次开始计数,内部晶振产生24M时针。想以此方法产生2KHz的信号,怎么产生出来的信号是1.5KHz左右的?不可能,一定是你程序错,方法错
看懂这个 T0在P3.5/T0CLKO,
直接对 CPU时钟分频输出,不需要允许 T0中断
不除 12, 重装数如下,无需中断,实际测试下
用中断是严重的不看权威数据手册
用5楼程序试试, 神农鼎 发表于 2024-1-19 12:44
谢谢管理员百忙中回复这么多,主要代码见下面,完整代码见附件。以前用同一块板,基本上相同的代码是可以产生2KHz信号的,但现在编译过后,24MHz设置下载后就是在Ptest脚得不到2Khz信号。我也呐闷了,我现在就想着,会不会是电脑或者单片机出问题了
AUXR |= 0x80; //?????1T??
TMOD &= 0xF0; //???????
TL0 = 0xD0; //???????
TH0 = 0xFF; //???????
TF0 = 0;
ET0 = 1;
EA = 1;
TR0 = 1;
void T0_Isr() interrupt 1
{
us2count++;
if(us2count == 250) //us2count back to 1 per 500us(2us x 250)
{
us2count = 0;
}
if (us2count < 246)
{
off_cur(3);
Ptest = 0;
// P0M0 &= 0xdf; //high_resistor mode, no current output
// DIS1 = 1;
}
else //get current charging pulse
{
out_cur(3);
Ptest = 1;
// DIS1 = 0;
// P0M0 |= 0x20; //open_drain mode, continue current
}
}
wangxiangtan 发表于 2024-1-19 13:35
用5楼程序试试,
对,怀疑时钟变了,可以想个办法测量时钟。有空试下,谢谢! 直接在P3.5,T0 对系统时钟分频输出 T0CLKO,看系统时钟是多少
神农鼎 发表于 2024-1-19 21:41
直接在P3.5,T0 对系统时钟分频输出 T0CLKO,看系统时钟是多少
按照您提供的方法,在T0CLKO可以得到250K(TH0:0xff,TL0: 0xd0,1T模式,24M时针)的频率,说明了系统时针频率正常。
最后经过分析发现是,T0中断程序中代码过多,可能出现一个中断服务程序还未完成时,下一个中断又来了,从而出现此现象。
最后谢谢您的指导。
页:
[1]
2