延时程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题:当循环计数器初值为0,循环次数有多少? 习题:当循环计数器初值为0 循环次数有多少?
例:本单片机的晶振频率为8MHz,编写一段延时程序约 的子 本单片机的晶振频率为 ,编写一段延时程序约1s的子 程序。 程序。
delay: mov r7,#70 loop0: mov r6,#100 loop1: mov r5,#100 djnzБайду номын сангаасr5,$ djnz r6,loop1 djnz r7,loop0 nop ret end
• 3) 三重循环延时: • DELAY:MOV R7,#10 • DL2: MOV R6,#200 • DL1: MOV R5,#250 • DJNZ R5, $ • DJNZ R6, DL1 • DJNZ R7, DL2 • • △t=(((2us×250+2+1) • ×200)+2+1) • ×10+1 • = 1006031µs • ≈1秒
系统中, 在MCS-51系统中,通常用 系统中 通常用DJNZ指令来构造 指令来构造 循环结构,实现重复处理。 循环结构,实现重复处理。
循环结构包括 初始化 循环体 控制变量的修改 循环次数的控制 循环控制方法: 循环控制方法: 计数控制; 计数控制; 特征标志控制。 特征标志控制。
• • • • • • • • • • • •
例:利用DJNZ指令设计循环延时程序,已知fosc=12MHz。 1) 单循环延时: DELAY: MOV R7,#10 ;1T DJNZ R7,$ ;2T △t=2×1µs×10+1×1µs=21µs 2) 双重循环延时: DELAY: MOV R7,#0AH ;1T DL: MOV R6,#64H ;1T DJNZ R6,$ ;2T DJNZ R7,DL ;2T △t=(2µs×100+2+1)×10+1=2031µs T=12/12MHz=1µs
3.减1不为零转移指令 . 不为零转移指令 这种指令是先减1后判断 若不为零则转移。 后判断, 这种指令是先减 后判断,若不为零则转移。 指令有两条: 指令有两条: DJNZ Rn,rel 字节指令, 周期指令 周期指令) , (2字节指令,2周期指令) 字节指令 中的内容减1, ;先Rn中的内容减 , 中的内容减 再判断Rn中的内容是否等于零 中的内容是否等于零, 再判断 中的内容是否等于零, 若不为零,则转移。 若不为零,则转移。 DJNZ direct,rel ( 3字节指令,2周期指令) 字节指令, 周期指令 周期指令) , 字节指令 ;先(direct)中的内容减 , )中的内容减1, 再判断( 再判断(direct)中的内容是否等于零,若不为 )中的内容是否等于零, 则转移。 零,则转移。
T=12/8 MHz=1.5µs t≈70*100*100*1.5us ≈ 1s
N N
Y
Y
N
Y
例:设单片机的晶振频率为6MHz,编写一段延时程序约 设单片机的晶振频率为 ,编写一段延时程序约100ms 的子程序。 的子程序。 Delay: MOV R7,#64H 1T;设循环计数器初值 设循环计数器初值(100次) , 次 LOOP: MOV R6,#0FAH 1T ;循环 循环250次(250×4=1ms) : , 次 × DJNZ R6,$ ,$ 2T ;循环控制 DJNZ R7,LOOP 2T , RET 2T T=12/6 MHz=2µs t=2µs+100×(2µs+1ms+2×2µs)+4µs × × =100.606 ms
相关文档
最新文档