51单片机中定时器初始值是怎样计算的呀?

我的单片机的机器周期是12MH,要求输出1ms的方波,使用定时器中断,请问给TH0和TL0赋值呀》?怎么算呀?最好使用定时器的工作方式0!谢谢!!
老大,能不能用C语言写呀?小弟我汇编还是比较菜呀~!!~!~谢谢!!!我的邮箱是:[email protected]

下面按外接,12MHz晶振算..在P1.0处输出1MS方波
ORG 00
AJMP MAIN
ORG 0BH
LALL T0INT
RETI
ORG 30H
MAIN:
LCALL T0INIT
AJMP $
T0INIT:
MOV TMOD,#01H
LCALL T0LOAD
SETB TR0
SETB ET0
SETB EA
RET
T0LOAD:
MOV TL0,#0F0H ;初值计算,65536US-1MS=D8F0H
MOV TH0,#0D8H
RET
T0INT:
LCALL T0LOAD
JB P1.0,NEXT
SETB P1.0
RET
NEXT:
CLR P1.0
RET
END
大概应该就是这样的..
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-10
/*w418781840 2008.6.10*/
#include <reg51.h>
sbit FangB0=P1^0;
main()
{FangB0=1;
EA=1;
ET0=1;//采用T0中断
TMOD=0;//工作方式0
TH0=(8192-500)/32;//0.5MS
TL0=(8192-500)%32;
TR0=1;//启动
for(;;)//等待
}
/////////////////////////////
void timer0(void)interrupt 1
{ TH0=(8192-500)/32;
TL0=(8192-500)%32;
FangB0=~FangB0;
}
第2个回答  2008-06-10
有个计算软件,不光能算定时值还能算波特率,等我回家后给你,现在在外地出差.
第3个回答  2008-06-10
机器周期是12MH???????
看清楚先。