用定时器T11定时不准怎么解决
如题,下面是代码,void main()
{
P_SW2 |= 0x80; //使能访问XFR寄存器
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
//********** 配置I/O口状态,I/O口必须先配置好以后才能使用
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
time11_Init();
P2 = 0x0f;
while(1)
{
if(a>=1000)
{
a=0;
P2=~P2;
}
}
}
void time11_Init() //T11定时器只有16位自动重装模式,定时1毫秒
{
T11CR = 0x10; //1T模式
T11PS = 0x00; //预分频:不分频
T11H = (65536-(MAIN_Fosc/1000))/256; //
T11L = (65536-(MAIN_Fosc/1000))%256; //
T11CR |= 0x82;
EA = 1; //打开总中断
}
void time11() interrupt 13 // T11定时器入口为13
{
a++;
}
请教大神们,
重定向定时器11的中断的汇编指令写了吧。 soma 发表于 2024-12-30 00:40
重定向定时器11的中断的汇编指令写了吧。
写了,重定向不写,定时器不工作,现在定时器工作,但是定时不准 不准,,适合你预期的差多少。。如果使用内部晶振,,差个1% 千分之几都是正常的,,,如果是差距很大再检查一下是否是下载设置系统频率有问题,,因为我看你用到了 这个MAIN_Fosc宏定义。。 原因找到了,就是在下载的时候,把下载软件中的设置成与单片机运行的频率一致,现在不明白为什么我在系统中选择的是系统时钟,
在下载软件上面还要设置IRC的频率呢
_奶咖君_ 发表于 2024-12-30 09:05
不准,,适合你预期的差多少。。如果使用内部晶振,,差个1% 千分之几都是正常的,,,如果是差距很大再检 ...
谢谢,我把下载软件设置程序允许时的IRC频率那里改成单片机允许的频率就正常了 嗯
页:
[1]