创新设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京科技⼤学计算机与通信⼯程学院创新设计实验报告
实验题⽬: 定时炸弹计时器
学⽣姓名:_____________xxx_____________
专业:________计算机科学与技术_______
班级:____________xxx _____________
学号:___________xxx_____________
指导教师: 郑 榕 实验成绩:________________________________实验地点:___________机电楼301___________
实验时间:___2017___年__12__⽉__6__⽇
⼀一、实验⽬目的
学习各接⼜芯⽚功能及应⽤特性,能够组合多个接⼜芯⽚,完成设计实验。
⼆二.实验设备(环境)
微机接⼝口实验系统,32位win7系统,8255\8254\8259芯⽚片\8位数码管\蜂鸣器器
三、实验要求
根据已学习各接⼜芯⽚的应⽤特性,参考本讲义前述实验接线图及代码,⾃⼰设计完成综合设计实验。要求所选多个芯⽚或模块的加权值总和≥2.5,权值列表见实验讲义的表3-1。并且,所选芯⽚或模块中必须包含8259或8254芯⽚的其中⼀个作为功能模块部分。
特别要求:
1、2017年创新实验不得设计交通灯或简单流⽔灯(流⽔模式≤4种)。
2、⾄少要实现实验箱的多模块创新设计。
3、同时实现实验箱设计与Proteus仿真设计,获得相应分数,如果仅实现实验箱设计,则⽆法得到仿真设计部分的分数。
四、实验结果与分析
1.设计应⽤场景及实现功能
定时炸弹启动后,计时器开始35秒计时,8位输⼊开关全部打开,其中仅有⼀个开关可以让定时器停⽌计时,当拨动这个正确的开关后,定时器停⽌计时,表⽰炸弹成功解除,当拨动错误的开关时,定时器倒计时速度加快10倍,当归0后炸弹爆炸(蜂鸣器响),若不拨任何开关,则定时器每秒减1,等到归0后炸弹爆炸(蜂鸣器响)
2.设计思路
使⽤8254计数器的两个⼜串联,每⼀秒钟输出⼀次脉冲到8259芯⽚作为其中断源,8259芯⽚采⽤查询⽅式⼯作,每次收到中断启动中断程序,将数码管输出的数
字减1,开始⼯作后通过循环让8位数码管中的两位分别输出3和5,每次循环⼊⼜处检测8位开关是否正确拨动,循环结束时查询8259是否收到了新的中断.若收到则调⽤函数将数码管的显⽰值减⼀.若减为0后则启动爆炸程序,若检测到正确的开关被关闭则启动取消程序
3.设计接线图
4.程序流程图
5.仿真设计实现
⽆
6.实验源代码
I8259_1 EQU 2B0H
I8259_2 EQU 2B1H
I8259_3 EQU 2B1H
I8259_4 EQU 2B1H
O8259_1 EQU 2B1H
O8259_2 EQU 2B0H
O8259_3 EQU 2B0H
IO8255_MODE EQU 28BH
IO8255_A EQU 288H
IO8255_B EQU 289H
IO8255_C EQU 28AH
IO8254_MODE EQU 283H
IO8254_COUNT0 EQU 280H IO8254_COUNT1 EQU 281H IO8254_COUNT2 EQU 282H DATA SEGMENT
ONE EQU 110B
TWO EQU 1011011B
THREE EQU 1001111B
FOUR EQU 1100110B
FIVE EQU 1101101B
SIX EQU 1111101B
SEVEN EQU 111B
EIGHT EQU 1111111B
NINE EQU 1101111B
ZERO EQU 111111B
TIME1 DB 1001111B
TIME2 DB 1101101B
CXX DW 1H
AXX DW 1H
DATA ENDS
STACKS SEGMENT
DB 100 DUP(?)
STACKS ENDS
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACKS, ES:DATA
.386
START: MOV AX,DATA
MOV DS, AX
MOV ES, AX
MOV AX, STACKS
MOV SS, AX
MOV DX,IO8255_MODE
MOV AL,89H
OUT DX,AL
MOV DX,IO8254_MODE
MOV AL,27H
OUT DX,AL
MOV AL,67H
OUT DX,AL
MOV DX,IO8254_COUNT0
MOV AL,10H
OUT DX,AL
MOV DX,IO8254_COUNT1
MOV AL,20H
OUT DX,AL
MOV DX, I8259_1
MOV AL, 12H
OUT DX,AL
MOV DX,I8259_2
MOV AL,0B0H
OUT DX,AL
MOV AL,03H
OUT DX,AL
MOV DX, O8259_1
MOV AL, 00H
OUT DX,AL
DISPLAY1: ;程序开始运⾏行行时使⽤用DISPLAY1显示
MOV DX,IO8255_C
IN AL,DX
CMP AL,11111111B ;判断是否有开关按下
JNZ JUDGE
MOV AL,1B
MOV DX,IO8255_B ;⽤用来轮流输出个位和⼗十位上的数字