@水石頭草
老大能不能舉個例,寫個小程序說明一下呢?
XX: PUSH PSW ;計時中斷
MOV PSW,#8 ;設置工作寄存器1區
PUSH ACC
CLR TR0 ;停止定時器計數,以防止操作過程中定時器低位向高位進位.
MOV A,#DSL ;讀出定時數據低八位
ADD A,TL0 ;加上定時器中低八位數據
MOV TL0,A ;寫入定時器低八位
MOV A,#DSH ;讀出定時數據高八位
ADDC A,TH0 ;加上定時器中低八位數據,帶低八位相加后的進位
MOV TH0,A ;重置定時數高八位
SETB TR0 ;重啟定時器計數
……
……
RETI
因這這段操作也要占用時間,但只要把定時器中斷定為最高級,這段時間是固定的,只要調整一下計算所得的定時數據就行了.
用51的定時器計時精度還是有限的,取決于晶振頻率,頻率越低精度越差,但用此方法可以在此限制下最大限度地提高計時精度.