




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京信息科技大学信息管理学院实 验 报 告课程名称 微机原理课程设计 实验项目 实验2-(4) 投票仪设计 实验仪器 PC、TDN86/88教学实验系统、Wmd86联机软件专 业 班级/学号 学生姓名 实验日期 实验地点 成 绩 指导教师 一、实验目的1熟练掌握8253、8255、8259和其他设备的连线,同时考察程序整体思路的严谨性二、实验内容设计四人投票仪,按下复位键后开始投票,每人用两个开关表示赞成和反对,投票时间为1秒,到时间两开关都未动作表示弃权,统计赞成、反对和弃权的人数并在数码管上显示出来。三、流程图是否投票结束时间到是否K0=K1=1读取开关状态,进行投票统计,显示结果开始是开关状态全0并且KK1按下否设置中断向量,设置7波段码值四、连线及设计思路 要实现投票仪,需要四个步骤 1、按复位键 2、开始投票 3、统计结果 4、显示结果我通过8255的B口显示LED灯,A口读取开关状态,K0,K2,K4,K6为赞成,K1,K3,K5,K7为反对,C口的高四位用来控制LED灯的显示顺序,C口的低四位连接8253的OUT口,达到定时的效果。8253的CLK连接CPU时钟。KK1连接8259的7号中断,起到复位键的作用。四、实验过程CODE SEGMENT ASSUME CS:CODESTART: MOV AX,0000H ;初始化DS段 MOV DS,AX MOV AX,OFFSET IRQ7 ;设置中断向量表 MOV SI,003CH ;设置偏移地址 MOV SI,AX MOV AX,CS MOV SI,003EH ;设置CS段地址 MOV SI,AX CLI ;关中断 MOV AL,10010001B ;8255控制字,A口输入,B口输出,C口高四位输出,低四位输入 OUT 63H,AL MOV SI,3008H ;设置7波段码值 MOV SI,3FH MOV SI+1,06H MOV SI+2,5BH MOV SI+3,4FH MOV SI+4,66H STI ;开中断 AA: MOV AL,0FFH ;屏蔽中断 OUT 21H,AL IN AL,60H ;判断开关是否都为0 TEST AL,0FFH JNZ AA ;如果不为0,循环检测 MOV AL,7FH ;如果为0,取消7号中断屏蔽 OUT 21H,AL JMP AA ;继续循环检测 IRQ7: MOV DI,3000H ;设置投票结果存储地址 MOV DI,0 MOV CX,64H ;设置投票时间 MOV AL,0FFH ;LED灯全开 OUT 61H,AL ARR: MOV AL,10110110B ;8253延时 OUT 43H,AL MOV AL,0H OUT 42H,AL MOV AL,0H OUT 42H,AL AR: IN AL,62H MOV BL,00H AND AL,0CH SUB BL,AL JNZ AR LOOP ARR MOV DL,04H ;设置循环次数,因为有四个人 MOV DH,01H ;设置判断赞成人数向量 RESULT:IN AL,60H ;读取A口状态,即投票结果,存入内存 MOV DI,AL INC DI ;指针加一,用来存放赞成人数 MOV DI,0 ;赞成人数清零 PDZC: TEST AL,DH ;判断是否赞成 JNZ ZCGOON1: ROL DH,2 ;判断向量循环左移2位 DEC DL ;循环次数减一 JNZ PDZC ;不为0,检测下一个人是否赞成 INC DI ;指针加一,用来存放反对人数 MOV DI,0 ;反对人数清零 MOV DH,02H ;设置判断反对人数向量 MOV DL,04H ;设置循环次数 JMP PDFD ZC: INC DI ;赞成人数加一 JMP GOON1 ;继续检测 PDFD: TEST AL,DH ;同上 JNZ FD GOON2: ROL DH,2 DEC DL JNZ PDFD MOV AL,0 JMP QQ FD: INC DI JMP GOON2 QQ: MOV AL,DI ;取反对人数 ADD AL,DI-1 ;加上赞成人数 MOV AH,4H SUB AH,AL ;用总人数减去反对加赞成,即为弃权人数 MOV DI+1,AH ;把弃权人数存到内存 DEC DI LED: MOV CX,2H ;设置时间向量 MOV AL,70H ;设置亮第一盏灯 OUT 62H,AL MOV BX,DI-1 ;取出赞成人数 MOV BL,BH AND BX,0FH ;BX存赞成人数 MOV AL,SI+BX ;从内存取7波段码值 OUT 61H,AL MOV AH,01H WAI1: MOV AL,10110110B ;8253计时 OUT 43H,AL MOV AL,0FH OUT 42H,AL MOV AL,0FH OUT 42H,ALWAIT1: IN AL,62H MOV BL,00H AND AL,0CH SUB BL,AL JNZ WAIT1 LOOP WAI1 CMP AH,01H JE FLA2 CMP AH,02H JE FLA3 JMP FI FLA2: MOV AL,0B0H ;亮第二盏灯 OUT 62H,AL MOV BX,DI MOV BL,BH AND BX,0FH ;BX存反对人数 MOV AL,SI+BX ;从内存取7波段码值 OUT 61H,AL MOV CX,2H MOV AH,02H JMP WAI1 FLA3: MOV AL,0D0H ;亮第三盏灯 OUT 62H,AL MOV BX,DI+1 MOV BL,BH AND BX,0FH ;BX存弃权人数 MOV AL,SI+BX ;从内存取7波段码值 OUT 61H,AL MOV CX,2H ;设置计时向量 MOV AH,03H ;设置跳转判断向量 JMP WAI1 FI: IN AL,60H ;检测8253的C口低4位状态 AND AL,3H CMP AL,03H ;判断是否为1 JNZ LED ;不是则继续循环 MOV AL,0H ;是则灭灯 OUT 61H,AL MOV AL,10010001B ;8255控制字 OUT 63H,AL MOV AL,20H OUT 20H,AL CLI IRET CODE ENDS END START 五、实现结果及分析运行程序,按下复位键(KK1)后,所有灯亮,提示计时开始,可以投票。大约5秒后,时间到,三盏灯循环显示赞成、反对和弃权人数。因为间隔时间很短,肉眼无法察觉,所以感觉上是三盏灯同时亮。这是如果把K0和K1置1,则灯灭,系统重新等待复位键被按下。六、实验总结:一开始编完程序,觉得不太智能。如果一开始就把开关推上去的话也可以显示结果,但这样显然不是计时投票要达到的效果。所以我设置了只有在所有开关都置0的前提下才能投票。并且一开始我是设了一个计时,来显示结果。但是感
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论