看板 ASM 關於我們 聯絡資訊
C_CPP 板問 51 相關問題的人好像比較少,所以就來這邊借問了... 今天試著做一下模擬 ms 計算的(高階語言 sleep 都喜歡以 1ms * n 為單位) 試著計時 60 秒後,發現每分鐘都會誤差五秒鐘(感覺有點大) 想請大家幫忙看一下是否有問題... 感謝<_ _) #include <AT89X51.h> int Timer1Ms = 0; //1ms * n int Timer1Value = 0; void main() { TMOD = 0x10; //7-2 tmod TL0 = ( 8192 - 5000 ) % 32; TH0 = ( 8192 - 5000 ) / 32; TL1 = ( 65536 - 1000 ) % 256; TH1 = ( 65536 - 1000 ) / 256; Timer1Value = 60000; Timer1Ms = Timer1Value; //TR0 = 1; TR1 = 1; EA = 1; ET0 = 1; ET1 = 1; //6-3 IE while (1) ; } void timer1_isr() interrupt 3 { TL1 = ( 65536 - 1000 ) % 256; TH1 = ( 65536 - 1000 ) / 256; Timer1Ms -= 1; if (Timer1Ms == 0) { Timer1Ms = Timer1Value; P1_2 = ~(P1_2); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.117.164 ※ 文章網址: http://www.ptt.cc/bbs/ASM/M.1402132721.A.5C9.html
ohm22k:int 改 unsigned int 不曉得有沒有用 06/07 17:59
sorkayi:震盪頻率 06/07 21:39
ruemann:請愛用AUTO-RELOAD 06/08 05:50
sopi:該算的都算好給他 ex TH1=252 然後用Mode2 07/31 23:56