第1个回答 2008-11-14
假定你的晶体是12mhz的,如果不是12mhz请自己计算TH0,TL0,和R7需要赋的值。呵呵
-------------------------------
ORG 0000H
JMP START
ORG 000BH
JMP TIMER
START: MOV TMOD,#01H
MOV TH0,#0BDH
MOV TL0,#0C0H
MOV IE,#82H
MOV R7,#16
SETB TR0
LOOP: SJMP LOOP
TIMER: DJNZ R7,RETURN
MOV TH0,#0BDH
MOV TL0,#0C0H
MOV R7,#16
RETURN: RETI
END
第3个回答 推荐于2017-09-16
51下 晶振 12m延时1s的程序,定时器中断方式0
#include<reg51.h>
int s,ms;
void main()
{
TMOD = 0x00; // 方式0
TH0 = (8192-4607) /32;
TL0 = (8192-4607) %32;
EA = 1; // 总中断
ET0 = 1; // 定时器0 中断
TR0 = 1; // 启动定时器中断
P1 = 0xff;
while(1)
{
if(s == 60)
{
s = 0;
}
}
void timer(void) interrupt 1
{
TH0 = (8192-4607) /32;
TL0 = (8192-4607) %32;
if(ms == 1000)
{
s++;
ms = 0;
}
ms++;
}