专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

pic单片机采用查询定时器的闪灯实验报告

作者:佚名   来源:互联网   点击数:  更新时间:2014年08月14日   【字体:

1.  实验目的

学习如何使用定时器

2.  任务要求

用可重定位汇编代码完成1s为周期的闪灯实验;

画出程序流程图;

验证程序的正确性;

3.  实验器材

单片机PIC16F886一片、LED灯一只、电阻任选、下载器(及相关的线)一个

4.  实验方案

 

 

图 1 硬件设计图

 

 


图 2 软件流程图

计算过程:选择Timer0,内部振荡器频率31KHz,要达到周期为1s,则0.5s翻转一次,则0.5s中需要执行的指令数是0.5*31k/4=3875,则若使TMR00加到溢出,预置数为0,则3875/256=15.136.那么分频比可选1:16,1:32,1:64,1:128,1:256.我们选择了最接近的1:16.

预置数的计算:

3875/16=256-T+2

T=15.8,软件实测发现1516更加接近,15.

调试方法:debug 单步调试和断点调试结合。先确保程序正确,再调整预置数提高精度。

5.  实验现象分析

最初由于代码错误LED一直处于亮的状态,由于调试时改动的代码太多不知道是具体由哪一步引起,或者可能是很多错误一起造成的。

我们似乎没有地方可以用到可重用代码,所以最后没有采用。(也有可能是因为对可重用代码不理解。)

 

实验最终结果:

1LED正常亮灭,亮灭时间相同,没有奇怪现象

2,软件仿真时T=0.9999483s,误差较小。

 

 

 

附:

#INCLUDE p16f886.inc  

__config _CONFIG1, _LP_OSC _PWRTE_OFF _WDT_OFF _CP_OFF

ORG 0x00

NOP

CLRF TMR0

BANKSEL OPTION_REG;BANK3

MOVLW B'000011'

MOVWF OPTION_REG

BANKSEL INTCON;

MOVLW B'00000111'

ANDWF INTCON,F

BANKSEL OSCCON

MOVLW B'00000011'

MOVWF OSCCON

BANKSEL ANSEL

CLRF ANSEL

BANKSEL TRISA;BANK1

MOVLW B'00000000'

MOVWF TRISA

LP

BANKSEL INTCON

BTFSS INTCON,2

GOTO LP

GOTO LED

LED

BANKSEL INTCON

BCF INTCON,2

BANKSEL PORTA

COMF PORTA,1

BANKSEL TMR0

MOVLW B'00001111'

MOVWF TMR0

GOTO LP

END

 

下一个实验:http://www.51hei.com/mcu/3996.html

关闭窗口