[問題] 89S51 使用 C51 計時問題
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
→
06/07 17:59, , 1F
06/07 17:59, 1F
推
06/07 21:39, , 2F
06/07 21:39, 2F
推
06/08 05:50, , 3F
06/08 05:50, 3F
推
07/31 23:56, , 4F
07/31 23:56, 4F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章
23
69