ret
Interrupts_Init: MOV IT01CF,#01H SETB IT0
;下降沿触发
mov IE,#001h ;使能外部中断0 ret
Initial_Init:
;初始化
;用于20分频
MOV R0,#14H MOV R4,#0AH MOV R5,#06H MOV R6,#0AH MOV R7,#06H MOV SEC1,#00H MOV SEC2,#00H MOV MIN1,#00H MOV MIN2,#00H MOV DOT,#00H
;用于时钟的进制转换
;时钟模式初始化
MOV KEYNUM,#04H;初始化键值不在使用键值范围内 CLR OVER ret
; Initialization function for device, ; Call Init_Device from your main program Init_Device: lcall PCA_Init lcall Timer_Init lcall Port_IO_Init lcall Interrupts_Init lcall Initial_Init ret end
;自动转换标志位清零
六、程序测试方法与结果
1.自动切换测试
下载好程序,运行程序蜂鸣器响了一声,同时数码管显示“0-5.0”,LED以5.0Hz的频率闪烁。这是模式0,如下图7:
21
图 7 模式0实测图片
20秒后,工作模式自动切换到模式1,数码管显示“1-1.0”,LED以1.0Hz的频率闪烁,如下图8:
图 8 模式1实测图片
22
20秒后,工作模式自动切换到模式2,数码管显示“2-0.5”,LED以0.5Hz的频率闪烁,如下图9:
图 9 模式2实测图片
再过20秒,蜂鸣器响一声,LED关闭不亮,数码管显示当前设备运行的时间。如下图10,数码管显示为“01.58”,表示系统运行了1分钟58秒。此后,模式不再自动切换
图 10 模式3实测图片
23
2. 中断按键切换模式测试
1) 功能测试 当前模式 按下中断键KINT后的模式 模式0 模式1 模式1 模式2 模式2 模式3 模式3 模式0
2) 性能测试 测试方法 测试结果 快速按中断按键 模式迅速切换不延迟 按住中断按键不松 切换正常,工作也正常
2.键盘按键测试 1) 功能测试 按下的按键 按下按键前的模式 按下按键后的模式 K0 任意某个模式 模式0 K1 任意某个模式 模式1 K2 任意某个模式 模式2 K3 任意某个模式 模式3
2) 性能测试 测试方法 测试结果 快速逐个按K0~K3 模式迅速切换且毫无延迟感 按住按键不松 切换正常,不影响之后的工作
3.计时模块测试 测试方面 测试方法 测试结果 进制测试 用按键选择模式3,观察进制没有错误,观察两分钟,检测是否严格时间内也没有发现误按照时钟进制进位,有码 无误码 精确度测试 用按键选择模式3,同时由于已经反复校准打开手机秒表,计时一过,一小时后肉眼已小时后比较误差 经很难辨别,可以肯定的是误差不会超过0.5秒,已经满足要求
24
七、思考题
1.若想实现3种闪烁方式的持续时间在5~5s-60s范围内可调,且每种方式的持续时间各不相同,应如何设计程序?
答:该程序是通过R0对定时1秒的定时器T1进行20分频产生20秒的。若R0初值改为5~60中的某个值,就可以实现持续时间的改变。题目又要求每种方式持续时间不同,故R0的初值是变化的。可以用三个参数,每种模式结束时刻将控制下一个模式的参数值作为R0的初值,这样便可以实现每种方式的持续时间各不相同,为了实现持续时间可调,可以用到键盘上三个按键,每检测到按键按下就对上述三个三说中的对应某参数减一,且要保证参数值是在5~60间循环变化的,这样就可以控制某个模式的持续时间。也可以用六个按键,一个模式对应两个按键,一个按键用来把持续时间加一秒,一个按键来把持续时间减一秒。
本人承诺: 本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校相关规定,如若违反,愿意承担其后果。
签字: 李胜军 2015 年 11 月 13 日 25