单片机编写一个能延时1秒的子程序

单片机为AT89S52晶振12M,在以下程序上修改ORG0000HMOVSP,#60HMOVA,#00HLoop:MOVP1,AACALLDELAY100msCPLASJ... 单片机为AT89S52 晶振12M,在以下程序上修改
ORG 0000H
MOV SP, #60H
MOV A,#00H
Loop: MOV P1, A
ACALL DELAY100ms
CPL A
SJMP Loop
DELAY100ms: MOV R6, #199 ; 1×1=1us
Dly1: MOV R7, #250 ; 1×1×199=199us
DJNZ R7, $ ; 2×1×250×199=99.5ms
DJNZ R6, Dly1 ; 2×1×199=398us
RET ; 2×1=2us
END
展开
 我来答
意法半导体(中国)投资有限公司 2020-01-15
展开全部
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
siduestc
推荐于2017-09-14 · TA获得超过527个赞
知道小有建树答主
回答量:655
采纳率:100%
帮助的人:178万
展开全部

通用办法,可以类推:

DELAY1s:
        MOV   R5,#08H           ; ∵ 1s=1000000us 
        MOV   R6,#0A2H          ; ∴ 1000000/2=500000
        MOV   R7,#20H           ; 500000用16进制表示为: 07A120
                                ; 所以 R5=07H+1=08H
                                ;     R6=0A1H+1=0A2H
                                ;     R7=20H
loop:   DJNZ  R7,$              ; 延时时间≈2×[(R5-1)×256+R6-1]×256+R7
        DJNZ  R6,loop           ; 当R5、R6等于0,相当于256参与运算
        DJNZ  R5,loop           ; 当R5、R6等于0,相当于256参与运算
        RET
意法半导体(中国)投资有限公司
2020-01-15 广告
void delay(unsigned int x) /延时 x ms { unsigned int i,j; for(i=x;i>0;i-) for(j=10;j>0;j-); } 延时1ms 即为使x=1; 这程序延时约1ms(x=1时... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
he_123456
推荐于2017-09-21 · TA获得超过2892个赞
知道大有可为答主
回答量:3162
采纳率:58%
帮助的人:1545万
展开全部
一些写代码的唯美主义者看不起以下答案,其实现实主义者大都这么干。很实用,最重要的是可靠性好,开发速度快。
ORG 0000H
MOV SP, #60H
MOV A,#00H
Loop: MOV P1, A
ACALL DELAY100ms
ACALL DELAY100ms
ACALL DELAY100ms
ACALL DELAY100ms
ACALL DELAY100ms
ACALL DELAY100ms
ACALL DELAY100ms
ACALL DELAY100ms
ACALL DELAY100ms
ACALL DELAY100ms

CPL A
SJMP Loop
DELAY100ms: MOV R6, #199 ; 1×1=1us
Dly1: MOV R7, #250 ; 1×1×199=199us
DJNZ R7, $ ; 2×1×250×199=99.5ms
DJNZ R6, Dly1 ; 2×1×199=398us
RET ; 2×1=2us
END
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yang112233
2013-10-14 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:98.5万
展开全部
DELAY1MS: ;
MOV R7,#01H
DL1:
MOV R6,#8EH
DL0:
MOV R5,#02H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET

void delay1ms(void)
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式