1.
学习如何使用定时器
2. 任务要求
用可重定位汇编代码完成1s为周期的闪灯实验;
画出程序流程图;
验证程序的正确性;
3. 实验器材
单片机PIC16F886一片、LED灯一只、电阻任选、下载器(及相关的线)一个
4. 实验方案
图
图
计算过程:选择Timer0,内部振荡器频率31KHz,要达到周期为1s,则0.5s翻转一次,则0.5s中需要执行的指令数是0.5*31k/4=3875,则若使TMR0由0加到溢出,预置数为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,软件实测发现15比16更加接近,故取15.
调试方法:debug
5. 实验现象分析
最初由于代码错误LED一直处于亮的状态,由于调试时改动的代码太多不知道是具体由哪一步引起,或者可能是很多错误一起造成的。
我们似乎没有地方可以用到可重用代码,所以最后没有采用。(也有可能是因为对可重用代码不理解。)
实验最终结果:
1,LED正常亮灭,亮灭时间相同,没有奇怪现象
2,软件仿真时T=0.9999483s,误差较小。
附:
#INCLUDE
__config
ORG
NOP
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
ANDWF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
LP
BANKSEL
BTFSS
GOTO
GOTO
LED
BANKSEL
BCF
BANKSEL
COMF
BANKSEL
MOVLW
MOVWF
GOTO
END
下一个实验:http://www.51hei.com/mcu/3996.html