微机原理与接口技术课程设计秒表课程设计报告内容摘要:

有键按下则跳置 GETKEY2 JMP BEGIN。 否则跳回开始继续循环 GETKEY2: MOV CH,0FEH MOV CL,00H。 设置当前检测的是第几列 COLUM: MOV AL,CH。 选取一列,将 X1~ X4 中一个置 0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C。 读 Y1~ Y4,用于判断是哪一行按键闭合 IN AL,DX L1: TEST AL,01H。 是否为第 1 行 JNZ L2。 不是则继续判断 MOV AL,00H。 设置第 1 行第 1 列的对应的键值 JMP KCODE L2: TEST AL,02H。 是否为第 2 行 JNZ L3。 不是则继续判断 MOV AL,04H。 设置第 2 行第 1 列的对应的键值 JMP KCODE L3: TEST AL,04H。 是否为第 3 行 JNZ L4。 不是则继续判断 MOV AL,08H。 设置第 3 行第 1 列的对应的键值 JMP KCODE L4: TEST AL,08H。 是否为第 4 行 JNZ NEXT。 不是则继续判断 MOV AL,0CH。 设置第 4 行第 1 列的对应的键值 20202020 学年第二学期 微机原理与接口技术课程设计 2402070413/2402070417 KCODE: ADD AL,CL。 将第 1 列的值加上当前列数,确定按键值 CMP AL,STARTKEY JNE STOPKEYTAG CMP ISRUNING,0 JNE STARTISRUNING MOV ISRUNING,1 STARTISRUNING: JMP TIMESTART STOPKEYTAG: CMP AL,STOPKEY JNE CLEARKEYTAG MOV ISRUNING,0 CLEARKEYTAG: CMP AL,CLEARKEY JNE LAST CMP ISRUNING,0 JNE LAST CALL CLEARCLOCK LAST: JMP KEYSCANEND MYNEXT: PUSH AX KON: CALL DIS。 显示刷新 CALL CLEAR。 清屏 CALL CCSCAN。 扫描按键,判断按键是否弹起 JNZ KON。 未弹起则继续循环等待弹起 POP AX NEXT: INC CL。 当前检测的列数递增 MOV AL,CH TEST AL,08H。 检测是否扫描到第 4 列 JZ KERR。 是则跳回到开始处 ROL AL,1。 没检测到第 4 列则 准备检测下一列 MOV CH,AL JMP COLUM KERR: JMP BEGIN CCSCAN PROC NEAR。 扫描是否有按键闭合子程序 MOV AL,1H MOV DX,MY8255_A。 将 4 列全选通, X1~ X4 置 0 OUT DX,AL MOV DX,MY8255_C 20202020 学年第二学期 微机原理与接口技术课程设计 2402070413/2402070417 IN AL,DX。 读 Y1~ Y4 NOT AL AND AL,0FH。 取出 Y1~ Y4 的反值 RET CCSCAN ENDP CLEAR PROC NEAR。 清除数码管显示子程序 MOV DX,MY8255_B。 段位置 0 即可清除数码管显示 MOV AL,00H OUT DX,AL RET CLEAR ENDP DIS PROC NEAR。 显示键值子程序 PUSH AX。 以缓冲区放键值为键偏移找到键值并显示 MOV SI,OFFSET TIMETABLE MOV CX,SI ADD CX,3 ADD SI,5 MOV DL,0DFH MOV AL,DL AGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL。 设置 X1~ X4,选通一个数码管 MOV AL,[SI]。 取出缓冲区中存放键值 MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,AX MOV BL,[BX] CMP SI,CX JNE COMER OR BL,80H。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。