1 / 9
文档名称:

单片机延时程序.doc

格式:doc   大小:52KB   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

单片机延时程序.doc

上传人:63229029 2017/7/25 文件大小:52 KB

下载得到文件列表

单片机延时程序.doc

文档介绍

文档介绍:实验一单片机延时程序实验

实验目的与要求:
在使用4MH在外部晶体振荡器的PIC16F877A上用软件设计一个20ms的软件延时子程序。另外,还要求用MPLAB的软件模拟器及其附带的软件工具窗口stopwatch观测延时程序执行的时间。
实验内容:
硬件电路设计:
本实验中用的是软件延时,利用循环来实现延时功能。电路就用了单片机的原本电路。没有用到其他的功能模块,单片机与ICD3相连接。
软件设计思路:
单片机软件延时的前提和基础是每条指令的执行时间是固定的,且大部分指令的执行时间是相同的。这要求对每条指令所花费的指令周期(Tcy)做到心中有数。指令集中5条无条件跳转指令GOTO,,RETLW和RETFIE,由于它们必然引起程序跳转,造成流水线中断,因此肯定将占用2个指令周期。而其他4条有可能引起程序跳转的条件跳转指令DECFSZ,INCFSZ,BTFSC和,BTFSS的执行时间,需要占用2个指令周期,当条件为假不发生跳转时,仅占用1个指令周期。其余所有指令都只用1个指令周期。
每个指令周期Tcy的时间长度,计算方法:如果采用4MHz的外部晶体(fosc=4 MHz),则PIC中档单片机的指令周期Tcy为1us,这是一个整数。而采用其他频率的外部晶体时,指令周期时间将反比于外部晶体频率。
至于软件延时的结构和实现方法,其实可以采用任何指令和结构,因为只是通过执行指令耗费时间。但通常情况下有两个选择延时程序结构的原则:
执行指令周期数计算方便。如果含有太多复杂的条件跳转循环等结构势必会造成指令周期的计算困难,甚至可能造成执行所造成的软件延时时间不等。
不能占用太多的程序空间。试想用20000个NOP指令来实现20ms的延时,显然是可以的,但是这样做浪费了整整一个页的程序存储器,得不偿失,而通过适当的循环结构,重复执行某些相同的程序是比较合理的方法。
因此,软件延时程序一般采用下列方法:如果延时时间短(微妙级别),可以连续插入几条NOP指令;如果延时时间长(几个毫秒级别),则可以使用双嵌套循环的方法来实现。
实验的流程图:
实验的源程序:
#INCLUDE “”
ORG 0000H
NOP
BSF STATUS,5
CLRF TRISD
BCF STATUS,5
CLRF PORTD
LOOP
BCF PORTD,0
CALL DELAY
BSF PORTD,0
CALL DELAY
GOTO LOOP
DELAY MOVLW D’131’
MOVWF i
LOOP1 MOVLW D’50’
MOVWF j
LOOP2 DECFSZ j,f
GOTO LOOP2
DECFSZ i,f
GOTO LOOP1
RETURN
END
执行上述延时子程序所需要的指令周期个数等于(1+1)+[(1+1)+(1+2)×(j-1)+2+(1+2)]×(i-1)+2+2。当i等于131,j等于50是指令周期数约为20000个。在4HMz外部晶振条件下,这个延时程序将花费大约20ms。
程序说明如下:
上述等式中,第一个括号中的“1+1”对应两条向i中放入初值131的两条搬运指令。
中括号中的“1+1”对应两条向j中