实测35MHz和40MHz IRC工作频率下都很正常,没有上述问题,下面是代码和测试视频:
144 ...
晚点我试试你的 晓飛飛 发表于 2024-5-30 16:44
实测35MHz和40MHz IRC工作频率下都很正常,没有上述问题,下面是代码和测试视频:
144 ...
话说你这是几mhz的代码呀😳 本帖最后由 晓飛飛 于 2024-5-30 20:15 编辑
大哲老师 发表于 2024-5-30 19:10
你可以试试我的代码不,把输出脚改了就行,反正我单独跑就24mhz是稳的😔,35,40都不对 ...
用你的代码跑35MHz测试了,完全没有任何问题,另外特意用你的代码原封不动的测试了一下P2.0,也没任何问题
145
#include <STC8H.H>
void Timer0_Isr(void) interrupt 1
{
static unsigned int T0Count1;
T0Count1++;
if(T0Count1 >= 1000)
{
P45 = !P45;
T0Count1 = 0;
}
}
//定时器0(16位自动重载)
void Timer0_Init(void) //1毫秒@35MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x48; //设置定时初始值
TH0 = 0x77; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
}
void main(void)
{
//测试引脚 P20:系统版载LED01P21:系统板载按键SW01
P4M0 = 0x00; P4M1 = 0x00;
P_SW2 |= 0x80;
Timer0_Init();
EA=1;
while(1)
{
}
}
晓飛飛 发表于 2024-5-30 20:09
用你的代码跑35MHz测试了,完全没有任何问题,另外特意用你的代码原封不动的测试了一下P2.0,也没任何问题 ...
好了好了谢谢你,真的玄学了{:cry:} 本帖最后由 大哲老师 于 2024-5-31 12:23 编辑
大哲老师 发表于 2024-5-30 21:03
好了好了谢谢你,真的玄学了
我还是个新手,第一次玩这个单片机,之前就玩过C51,这个问题我都不知道他咋好的,上午还不行,单独用这个代码跑的,下午睡个觉回来再试就好了,而且上午的时候出现这个情况的时候我的PWM波的频率也不对了,跟计算值不符合差了一大截,几乎一半,然后下午回来再试,两边都好了,奇奇怪怪{:sweat:} 不大可能误差会这么大的。 一般情况下,我是把
if(T0Count1 >= 1000)
{
P20 = !P20;
T0Count1 = 0;
}
放到大循环中的。
xxkj2010 发表于 2024-5-31 13:35
一般情况下,我是把
if(T0Count1 >= 1000)
{
已经莫名奇妙的好了哈哈哈
有时是因为烧录失败而没有去注意它,以为是别的原因。
页:
1
[2]