设8031单片机使用6MHZ晶振,试设计延迟10s,20ms的延迟程序

如题所述

第1个回答  2014-12-18
用定时器就简单而且精确,你想用什么做?子程序还是定时器?追问

定时器呢?

追答

那就用20毫秒定时就可以了,
#include
#define uint unsigned int
uchar tick=0;
main
{
TMOD=0x01;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

//delay 20ms
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
//delay 10s

TR0=1;

while(tick>=500)

{
while(TF0==0);

TF0=0;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

tick++;

}

}

追问

如果写成类似这种格式呢?

追答

这是汇编,延时子程序,不是用定时器:
DLY20MS;
MOV R2,#10

DLY1:
MOV R3,#250

DJNZ R3,$

DJNZ R2,DLY1

RET

DLY10S:
MOV R2,#100

DLY1:
MOV R3,#100

DLY2:
MOV R4,#249

DJNZ R4,$

DJNZ R3,DLY2

DJNZ R2,DLY1

RET

本回答被提问者和网友采纳