. -
- -可修编-
实验一单片机延时程序实验
实验目的与要求:
在使用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的延时,显然是可以的,但是这样做浪费了整整一个页的程序存储器,得不偿失,而通过适当的循环构造,重复执行某些一样的程序是比拟合理的方法。
因此,软件延时程序一般采用以下方法:如果延时时间
单片机延时程序 来自淘豆网m.daumloan.com转载请标明出处.