晶振6MHZ和12MHZ的51单片机延时程序的编写

[复制链接]
查看11 | 回复3 | 2009-6-11 18:12:13 | 显示全部楼层 |阅读模式
各位高手好
我用12MHZ的晶振做1S的延时程序这样些不吗?

MOV R7,#50
D3 MOV R6,#50
D2 MOV R5,#200
D1 DJNZ R5,D1

DJNZ R6,D2

DJNZ R7,D3

RET
计算是:50*50*200*2=1000000=1S
如果用6MHZ的做1S的又怎么写呀
谢谢!

回复

使用道具 举报

千问 | 2009-6-11 18:12:13 | 显示全部楼层
这个程序你写的太不规范了。改你的程序.DELAY MOV R7,#50 ;2 2代表机器周期D3: MOV R6,#50 ;2D2: MOV R5,#200;2D1: DJNZ R5,D1 ;2
DJNZ R6,D2 ;2
DJNZ R7,D3 ;2
RET
;2
其实这个程序来做延迟程序是有误差的,而且很大。实际延迟时间 t=2us+((2us*200+2us)*60)*50+2us= ...自己算吧 反正比1S延迟要高,仔细看看计算式子的顺序。以基本2重循环思路来解决3重循环。如果要求不高的话,用它来做...
回复

使用道具 举报

千问 | 2009-6-11 18:12:13 | 显示全部楼层
R7的50改成25 ,楼上MOV是双字节单周期指令,如果要精确算的话:DELAY:
MOV R7,#50 D3: MOV R6,#50 D2: MOV R5,#200 D1: DJNZ R5,D1
DJNZ R6,D2
DJNZ R7,D3
RET
T...
回复

使用道具 举报

千问 | 2009-6-11 18:12:13 | 显示全部楼层
MOV R7,#50 D3 MOV R6,#50 D2 MOV R5,#100 D1 DJNZ R5,D1
DJNZ R6,D2
DJNZ R7,D3
RET...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行