利用计时器的计时误差就是一个系统周期,请明白计时误差和测量误差的概念,测量误差我不敢说,因为这个和探头有关。单片机使用的不是51系列,不存在分频一说。同时程序又不是基于中断来写来的,判断只需要两条语句,显然没有你说的保护性操作。程序是精心设计的,写法是考虑到延时的,因此不会按照经典的T2-T1公式来得到时间差,正是通过这种方式来达到消除误差的目的。系统时钟是经过标准时钟校正,不是一般简单的校正,在室温下震荡频率误差小于15kHz,毫无夸张。 至于你想说的定时程序本身的误差,如下分析 定时器的计时和停止就是用了以下几句话,这是c语言对应的汇编代码: 判断 +00000815: 999D SBIC 0x13,5 Skip if bit in I/O register cleared A +00000816: CFFE RJMP PC-0x0001 Relative jump B 开始计时 +00000817: E081 LDI R24,0x01 Load immediate +00000818: BD8E OUT 0x2E,R24 Out to I/O location 判断时间结束否 +0000081C: 99B3 SBIC 0x16,3 Skip if bit in I/O register cleared C +0000081D: CFFE RJMP PC-0x0001 Relative jump D 停止计时 +0000081E: 2422 CLR R2 Clear Register +0000081F: BC2E OUT 0x2E,R2
200字以内,仅用于支线交流,主线讨论请采用回复功能。