求一个51单片机延时1秒的程序,用汇编!!

我是初学者,不太会!求一个51单片机延时1秒的程序,用汇编!用软件的方法... 我是初学者,不太会!求一个51单片机延时1秒的程序,用汇编!用软件的方法 展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
MAIN: MOV SP,#50H MOV DPTR,#TAB;读入字模指针 MOV 30H,DPL; 存起来 ;堆栈低8位 MOV 31H,DPH ;堆栈高8位 MOV 32H,30H;再记录指针,留作移动了多少位的判断 用。 MOV 3H,31H ;3H记录字模数据的高位地址 INC 3H;3H高位地址+5,表示数据有5X256列之多。 ROL: MOV R2,#01H;设扫描次数 INI1: MOV DPL,30H;这段是扫描一次32列 MOV DPH,31H MOV R4,#32 MOV R3,#0 LOP1 P1,R3 CLR A MOVC A,@A+DPTR MOV P0,A INC DPTR CLR A MOVC A,@A+DPTR MOV P2,A INC DPTR CAL DELAY INC R3 DJNZ R4,LOP1 DJNZ R2,INI1;这条预留扫描次数用可以调整速度 MOV DPL,3…
fml003
推荐于2017-11-23 · TA获得超过1324个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:136万
展开全部
DEL1S:MOV R7,#10
D1: MOV R6,#200
D2: MOV R5,#250
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
RET

说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等
2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5
意法半导体(中国)投资有限公司
2021-01-14 广告
void delay(unsigned int x) //延时 x ms { unsigned int i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } 延时1m... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
chzhq2009
2010-06-09 · TA获得超过262个赞
知道答主
回答量:33
采纳率:100%
帮助的人:39.7万
展开全部
时钟频率为12MHz的一秒延时汇编代码(8051):机器周期T=(1/12M)*12=1us
因为一个机器周期=6个接拍、1个节拍=2个时钟周期,这是机器周期的定义。
ORG 1000H
MOV R5, #4
L3: MOV R6, #250 ;1T
L2: MOV R7, #200 ;1T
L1: NOP ;1T
NOP ;1T
NOP ;1T
DJNZ R7, L1 ;(1+1+1+2)*200T=1ms
DJNZ R6, L2 ;{1+2+(1+1+1+2)*200}*250T=250750us
DJNZ R5, L3 ;(3+250750)*4=1003012us=1.003012s
RET
END
仅供参考,期中R7可以设成256,误差会小点,这为了好算就设成200。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f274689
2010-06-09 · 超过16用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:0
展开全部
如果用6M晶振的话,一个机器周期为2*10(-6)s
那么1s=2*500000
2*500000=250*200*10

DELAY: mov r5,#10 ;延时子程序
D1: mov r1,#200
D2: mov r2,#250
djnz r2,$
djnz r1,d2
djnz r5,r1
ret
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式