1 / 8
文档名称:

单片机延时程序资料.doc

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

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

分享

预览

单片机延时程序资料.doc

上传人:q1188830 2016/4/27 文件大小:0 KB

下载得到文件列表

单片机延时程序资料.doc

相关文档

文档介绍

文档介绍:实验一单片机延时程序实验一、实验目的与要求: 在使用 4MH 在外部晶体振荡器的 PIC16F877A 上用软件设计一个 20ms 的软件延时子程序。另外,还要求用 MPLAB 的软件模拟器及其附带的软件工具窗口 stopwatch 观测延时程序执行的时间。二、实验内容: : 本实验中用的是软件延时,利用循环来实现延时功能。电路就用了单片机的原本电路。没有用到其他的功能模块,单片机与 ICD 3 相连接。 : 单片机软件延时的前提和基础是每条指令的执行时间是固定的,且大部分指令的执行时间是相同的。这要求对每条指令所花费的指令周期( Tcy )做到心中有数。指令集中 5 条无条件跳转指令 GOTO , ,RETLW 和 RETFIE ,由于它们必然引起程序跳转,造成流水线中断,因此肯定将占用 2个指令周期。而其他 4 条有可能引起程序跳转的条件跳转指令 DECFSZ,INCFSZ,BTFSC 和, BTFSS 的执行时间,需要占用 2 个指令周期,当条件为假不发生跳转时,仅占用 1个指令周期。其余所有指令都只用 1个指令周期。每个指令周期 Tcy的时间长度,计算方法:如果采用 4MH z 的外部晶体( fosc=4 MHz ),则 PIC 中档单片机的指令周期 Tcy 为 1us ,这是一个整数。而采用其他频率的外部晶体时,指令周期时间将反比于外部晶体频率。至于软件延时的结构和实现方法,其实可以采用任何指令和结构,因为只是通过执行指令耗费时间。但通常情况下有两个选择延时程序结构的原则: ( 1) 执行指令周期数计算方便。如果含有太多复杂的条件跳转循环等结构势必会造成指令周期的计算困难,甚至可能造成执行所造成的软件延时时间不等。( 2) 不能占用太多的程序空间。试想用 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+1 ”