《延时程序设计.ppt》由会员分享,可在线阅读,更多相关《延时程序设计.ppt(19页珍藏版)》请在第壹文秘上搜索。
1、单击此处编辑母版标题样式单击此处编辑母版标题样式实验四实验四软件延时软件延时程序设计程序设计单击此处编辑母版标题样式单击此处编辑母版标题样式单击此处编辑母版标题样式单击此处编辑母版标题样式延时设计方法延时设计方法1、软件延时、软件延时-采用程序实现采用程序实现特点:灵活性,消耗特点:灵活性,消耗CPU资源资源2、硬件延时、硬件延时采用电路实现采用电路实现特点:时间比较准备,不占用特点:时间比较准备,不占用CPU资源资源单击此处编辑母版标题样式单击此处编辑母版标题样式一、实验目的 1、掌握循环程序(多重循环程序)的设计方法。、掌握循环程序(多重循环程序)的设计方法。 2、掌握软件延时程序的时间计
2、算方法和设计方法;、掌握软件延时程序的时间计算方法和设计方法; 3、学会如何利用学会如何利用KEIL来调试和观察时间来调试和观察时间。 二、实验原理 软件延时利用了指令的时间属性时间属性编制的一段循环子程序循环子程序来空耗CPU的时间以达到延时的目的。单击此处编辑母版标题样式单击此处编辑母版标题样式 三、相关知识 1、时钟周期(振荡周期)、状态周期、机器周期和指令周期的关系时钟周期(振荡周期)、状态周期、机器周期和指令周期的关系 1TM=12TOSC、1TS=2TOSC、1TI=(1、2、4)TOSC 2、指令的执行时间(查询指令表)、指令的执行时间(查询指令表) 3、时间和频率单位换算、时间
3、和频率单位换算 1s= 103ms = 106us = 109ns = 1012ps 1ms=10-3s,1us=10-6s 1MHz=103 KHz=106Hz 4、循环程序结构、循环程序结构单击此处编辑母版标题样式单击此处编辑母版标题样式 三、实验内容(任选一)1、利用汇编指令编程实现、利用汇编指令编程实现5ms的延时子程序;的延时子程序;2、利用汇编指令编程实现、利用汇编指令编程实现10ms的延时子程序;的延时子程序;3、利用汇编指令编程实现、利用汇编指令编程实现15ms的延时子程序;的延时子程序;4、利用汇编指令编程实现、利用汇编指令编程实现20ms的延时子程序;的延时子程序;5、利用
4、汇编指令编程实现、利用汇编指令编程实现1s的延时子程序。的延时子程序。 好参数,请记下来,以后享用!好参数,请记下来,以后享用!单击此处编辑母版标题样式单击此处编辑母版标题样式软件延时软件延时子程序子程序(循环结构)(循环结构) 单单重循环延时子程序重循环延时子程序双重循环延时子程序双重循环延时子程序三三重循环延时子程序重循环延时子程序单击此处编辑母版标题样式单击此处编辑母版标题样式1、单重循环延时子程序、单重循环延时子程序void Delay(void) unsigned char i; for (i=10; i0; i-);DELAY: MOV R5, #10 ;1TMDL1: DJNZ
5、R5, DL3 ;2TM RET ;2TM晶振为晶振为12MHz,500uS以内延时采用!以内延时采用!t=( 1+2*R5+2)*TM单击此处编辑母版标题样式单击此处编辑母版标题样式2、双重循环延时子程序、双重循环延时子程序void Delay (void) unsigned char i, j; for (i=10; i0; i-) for (j=100; j0; j-) ;DELAY: MOV R5, #10 ;1TMDL2: MOV R6, #100 ;1TMDL1: DJNZ R6, DL1 ;2TM DJNZ R5, DL2 ;2TM RET ;2TM晶振为晶振为12MHz,130
6、mS以内延时采用!以内延时采用!t=1+(1+2*R6+2)*R5+2*TM单击此处编辑母版标题样式单击此处编辑母版标题样式3、三重循环延时子程序、三重循环延时子程序void Delay(void) unsigned char i, j, k; for (i=100; i0; i-) for (j=200; j0; j-) for (k=248; k0; k-) ;DELAY: MOV R5, #100 ;1TMDL3: MOV R6, #200 ;1TMDL2: MOV R7, #248 ;1TMDL1: DJNZ R7, DL1 ;2TM DJNZ R6, DL2 ;2TM DJNZ R5
7、, DL3 ;2TM RET ;2TM晶振为晶振为12MHz,33S以内延时采用!以内延时采用!t=1+1+(1+2*R7+2)*R6+2*R5+2*TM单击此处编辑母版标题样式单击此处编辑母版标题样式 已知已知STC89C51单片机使用的晶振频率为单片机使用的晶振频率为6MHz,请阅读下,请阅读下面这段程序,分别计算如下程序段面这段程序,分别计算如下程序段总机器周期总机器周期 和和总执行时间总执行时间t。ORG 0000H DELAY: MOV R5, #100 ;1TMDL3: MOV R6, #200 ;1TMDL2: MOV R7, #248 ;1TMDL1: DJNZ R7, DL1
8、 ;2TM DJNZ R6, DL2 ;2TM DJNZ R5, DL3 ;2TM RET ;2TMSJMP $END单击此处编辑母版标题样式单击此处编辑母版标题样式 fOSC=6MHz 1TM=12TOSC, 又 TOSC=1/fOSC TM=12/fOSC=12/6MHz=2s总总TM = 1+1+(1+2248+2)200+2100+2 =9980303t=99803032s=19.960606S单击此处编辑母版标题样式单击此处编辑母版标题样式1、准备、准备 注意:注意:建立工程文件夹。建立工程文件夹。2、打开、打开Keil新建工程新建工程 (1)为工程指定路径)为工程指定路径 (2)为
9、)为工程工程命名命名 (3)为工程指定)为工程指定CPU3、新建源代码文件并保存,添加到工程。新建源代码文件并保存,添加到工程。 注意:注意:C语言文件(语言文件(*.c)、汇编语言()、汇编语言(*.asm)4、配置工程属性、配置工程属性 设定将默认的设定将默认的晶振晶振33.0改为改为11.0592,将,将Creat hex file选项打勾。选项打勾。5、编译,改错、编译,改错(Build / Rebuild All) 生成目标代码(生成目标代码(*.Hex、*.Bin)6、调试、调试(软件(软件Debug、硬件、硬件Debug、 Proteus 仿真)Over!Keil软件操作步骤软件
10、操作步骤单击此处编辑母版标题样式单击此处编辑母版标题样式 如果只是看代码,不实践操练的话,看过东西如果只是看代码,不实践操练的话,看过东西一下就忘了。一步一步走过的一下就忘了。一步一步走过的“脚印脚印”将牢记于将牢记于心。心。 那么赶紧动手实践吧!那么赶紧动手实践吧!单击此处编辑母版标题样式单击此处编辑母版标题样式void Delay(void) unsigned char i, j, k; for (i=20; i0; i-) for (j=20; j0; j-) for (k=200; k0; k-);分析以下分析以下C语言实现的延时程序语言实现的延时程序单击此处编辑母版标题样式单击此处编
11、辑母版标题样式 Delay:C:0 x0003 7F14 MOV R7,#0 x14C:0 x0005 7E14 MOV R6,#0 x14C:0 x0007 7DE6 MOV R5,#0 xC8C:0 x0009 DDFE DJNZ R5,C:0009C:0 x000B DEFA DJNZ R6,C:0007C:0 x000D DFF6 DJNZ R7,C:0005C:0 x000F 22 RET 总总TM = 1+1+(1+2200+2)20+220 +2 = 161263t=1612632s通过反汇编转换为了汇编语言单击此处编辑母版标题样式单击此处编辑母版标题样式void Delay(v
12、oid) unsigned char i, j, k; for (i=0; i20; i+) for (j=0; j20; j+) for (k=0; k200; k+);分析以下分析以下C语言实现的延时程序语言实现的延时程序单击此处编辑母版标题样式单击此处编辑母版标题样式 Delay:C:0 x0003 E4 CLR AC:0 x0004 FF MOV R7,AC:0 x0005 E4 CLR AC:0 x0006 FE MOV R6,AC:0 x0007 E4 CLR AC:0 x0008 FD MOV R5,AC:0 x0009 0D INC R5C:0 x000A BDC8FCCJNE R5,#0 xC8,C:0009C:0 x000D 0E INC R6C:0 x000E BE14F6 CJNE R6,#0 x14,C:0007C:0 x0011 0F INC R7C:0 x0012 BF14F0 CJNE R7,#0 x14,C:0005C:0 x0015 22 RET 通过反汇编转换为了汇编语言单击此处编辑母版标题样式单击此处编辑母版标题样式 如果只是看代码,不实践操练的话,看过东西如果只是看代码,不实践操练的话,看过东西一下就忘了。一步一步走过的一下就忘了。一步一步走过的“脚印脚印”将牢记于将牢记于心。心。 那么赶紧动手实践吧!那么赶紧动手实践吧!