您好,欢迎访问三七文档
明德、博学、求实、创新2020年1月16日星期四7时3分54秒刘强单击此处编辑母版标题样式实验四软件延时程序设计明德、博学、求实、创新2020年1月16日星期四7时3分54秒刘强单击此处编辑母版标题样式明德、博学、求实、创新2020年1月16日星期四7时3分54秒刘强单击此处编辑母版标题样式延时设计方法1、软件延时---采用程序实现特点:灵活性,消耗CPU资源2、硬件延时—采用电路实现特点:时间比较准备,不占用CPU资源明德、博学、求实、创新2020年1月16日星期四7时3分54秒刘强单击此处编辑母版标题样式一、实验目的1、掌握循环程序(多重循环程序)的设计方法。2、掌握软件延时程序的时间计算方法和设计方法;3、学会如何利用KEIL来调试和观察时间。二、实验原理软件延时利用了指令的时间属性编制的一段循环子程序来空耗CPU的时间以达到延时的目的。明德、博学、求实、创新2020年1月16日星期四7时3分54秒刘强单击此处编辑母版标题样式三、相关知识1、时钟周期(振荡周期)、状态周期、机器周期和指令周期的关系1TM=12TOSC、1TS=2TOSC、1TI=(1、2、4)TOSC2、指令的执行时间(查询指令表)3、时间和频率单位换算1s=103ms=106us=109ns=1012ps1ms=10-3s,1us=10-6s1MHz=103KHz=106Hz4、循环程序结构明德、博学、求实、创新2020年1月16日星期四7时3分54秒刘强单击此处编辑母版标题样式三、实验内容(任选一)1、利用汇编指令编程实现5ms的延时子程序;2、利用汇编指令编程实现10ms的延时子程序;3、利用汇编指令编程实现15ms的延时子程序;4、利用汇编指令编程实现20ms的延时子程序;5、利用汇编指令编程实现1s的延时子程序。好参数,请记下来,以后享用!明德、博学、求实、创新2020年1月16日星期四7时3分55秒刘强单击此处编辑母版标题样式软件延时子程序(循环结构)单重循环延时子程序双重循环延时子程序三重循环延时子程序明德、博学、求实、创新2020年1月16日星期四7时3分55秒刘强单击此处编辑母版标题样式1、单重循环延时子程序voidDelay(void){unsignedchari;for(i=10;i0;i--);}DELAY:MOVR5,#10;1TMDL1:DJNZR5,DL3;2TMRET;2TM晶振为12MHz,500uS以内延时采用!t=(1+2*R5+2)*TM明德、博学、求实、创新2020年1月16日星期四7时3分55秒刘强单击此处编辑母版标题样式2、双重循环延时子程序voidDelay(void){unsignedchari,j;for(i=10;i0;i--)for(j=100;j0;j--);}DELAY:MOVR5,#10;1TMDL2:MOVR6,#100;1TMDL1:DJNZR6,DL1;2TMDJNZR5,DL2;2TMRET;2TM晶振为12MHz,130mS以内延时采用!t=[1+(1+2*R6+2)*R5+2]*TM明德、博学、求实、创新2020年1月16日星期四7时3分55秒刘强单击此处编辑母版标题样式3、三重循环延时子程序voidDelay(void){unsignedchari,j,k;for(i=100;i0;i--)for(j=200;j0;j--)for(k=248;k0;k--);}DELAY:MOVR5,#100;1TMDL3:MOVR6,#200;1TMDL2:MOVR7,#248;1TMDL1:DJNZR7,DL1;2TMDJNZR6,DL2;2TMDJNZR5,DL3;2TMRET;2TM晶振为12MHz,33S以内延时采用!t={1+[1+(1+2*R7+2)*R6+2]*R5+2}*TM明德、博学、求实、创新2020年1月16日星期四7时3分55秒刘强单击此处编辑母版标题样式已知STC89C51单片机使用的晶振频率为6MHz,请阅读下面这段程序,分别计算如下程序段总机器周期和总执行时间t。ORG0000HDELAY:MOVR5,#100;1TMDL3:MOVR6,#200;1TMDL2:MOVR7,#248;1TMDL1:DJNZR7,DL1;2TMDJNZR6,DL2;2TMDJNZR5,DL3;2TMRET;2TMSJMP$END明德、博学、求实、创新2020年1月16日星期四7时3分55秒刘强单击此处编辑母版标题样式∵fOSC=6MHz∵1TM=12TOSC,又∵TOSC=1/fOSC∴TM=12/fOSC=12/6MHz=2µs总TM=1+[1+(1+2×248+2)×200+2]×100+2=9980303∴t=9980303×2μs=19.960606S明德、博学、求实、创新2020年1月16日星期四7时3分55秒刘强单击此处编辑母版标题样式1、准备注意:建立工程文件夹。2、打开Keil新建工程(1)为工程指定路径(2)为工程命名(3)为工程指定CPU3、新建源代码文件并保存,添加到工程。注意:C语言文件(*.c)、汇编语言(*.asm)4、配置工程属性设定将默认的晶振33.0改为11.0592,将Creathexfile选项打勾。5、编译,改错(Build/RebuildAll)生成目标代码(*.Hex、*.Bin)6、调试(软件Debug、硬件Debug、Proteus仿真)Over!Keil软件操作步骤明德、博学、求实、创新2020年1月16日星期四7时3分55秒刘强单击此处编辑母版标题样式如果只是看代码,不实践操练的话,看过东西一下就忘了。一步一步走过的“脚印”将牢记于心。那么赶紧动手实践吧!明德、博学、求实、创新2020年1月16日星期四7时3分56秒刘强单击此处编辑母版标题样式voidDelay(void){unsignedchari,j,k;for(i=20;i0;i--)for(j=20;j0;j--)for(k=200;k0;k--);}分析以下C语言实现的延时程序明德、博学、求实、创新2020年1月16日星期四7时3分56秒刘强单击此处编辑母版标题样式Delay:C:0x00037F14MOVR7,#0x14C:0x00057E14MOVR6,#0x14C:0x00077DE6MOVR5,#0xC8C:0x0009DDFEDJNZR5,C:0009C:0x000BDEFADJNZR6,C:0007C:0x000DDFF6DJNZR7,C:0005C:0x000F22RET总TM=1+[1+(1+2×200+2)×20+2]×20+2=161263∴t=161263×2μs通过反汇编—转换为了汇编语言明德、博学、求实、创新2020年1月16日星期四7时3分56秒刘强单击此处编辑母版标题样式voidDelay(void){unsignedchari,j,k;for(i=0;i20;i++)for(j=0;j20;j++)for(k=0;k200;k++);}分析以下C语言实现的延时程序明德、博学、求实、创新2020年1月16日星期四7时3分56秒刘强单击此处编辑母版标题样式Delay:C:0x0003E4CLRAC:0x0004FFMOVR7,AC:0x0005E4CLRAC:0x0006FEMOVR6,AC:0x0007E4CLRAC:0x0008FDMOVR5,AC:0x00090DINCR5C:0x000ABDC8FCCJNER5,#0xC8,C:0009C:0x000D0EINCR6C:0x000EBE14F6CJNER6,#0x14,C:0007C:0x00110FINCR7C:0x0012BF14F0CJNER7,#0x14,C:0005C:0x001522RET通过反汇编—转换为了汇编语言明德、博学、求实、创新2020年1月16日星期四7时3分56秒刘强单击此处编辑母版标题样式如果只是看代码,不实践操练的话,看过东西一下就忘了。一步一步走过的“脚印”将牢记于心。那么赶紧动手实践吧!
本文标题:延时程序设计
链接地址:https://www.777doc.com/doc-3092410 .html