求单片机程序:要求延时为1秒,采用定时器T1定时方式1实现50ms*20次中断
3个回答
展开全部
#include "reg51.h"
uchar i=0;
uchar msflag=0;
void initTimer(void)
{
TMOD=0x10;
TH1=0x3c;
TL1=0xb0;
}
void timer1(void) interrupt3
{
TH1=0x3c;
TL1=0xb0;
//add your code here.
if(++i>20){ i = 0; msflag =1;}
}
void main(void)
{
initTimer();
TR1=1;
ET1=1;
//EA=1;
while(1)
{
if(msflag==1)
{ //1s到了
msflag =0;
}
}
uchar i=0;
uchar msflag=0;
void initTimer(void)
{
TMOD=0x10;
TH1=0x3c;
TL1=0xb0;
}
void timer1(void) interrupt3
{
TH1=0x3c;
TL1=0xb0;
//add your code here.
if(++i>20){ i = 0; msflag =1;}
}
void main(void)
{
initTimer();
TR1=1;
ET1=1;
//EA=1;
while(1)
{
if(msflag==1)
{ //1s到了
msflag =0;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假设:晶振=12M
ORG 0000H
LJMP MAIN
ORG 001BH
LJMP T1ISR
ORG 0030H
MAIN:
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
SETB ET1
SETB EA
MOV R2,#20
SJMP $
T1ISR:
CLR TR1
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
DJNZ R2,T1E
MOV R2,#20
CPL P1.0
T1E:
RETI
END
ORG 0000H
LJMP MAIN
ORG 001BH
LJMP T1ISR
ORG 0030H
MAIN:
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
SETB ET1
SETB EA
MOV R2,#20
SJMP $
T1ISR:
CLR TR1
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
DJNZ R2,T1E
MOV R2,#20
CPL P1.0
T1E:
RETI
END
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询