徐州工程学院 微机原理与微机接口技术课程设计
附录Ⅰ:
图4-2 硬件连接图
图4-6 译码器其引脚图
24
徐州工程学院 微机原理与微机接口技术课程设计
图4-8 系统总电路图
25
徐州工程学院 微机原理与微机接口技术课程设计
附录Ⅱ
主程序:
PUSH DS MOV AX,0000H MOV DS,AX
MOV AX,OFFSET IRQ7 ADD AX,2000H MOV SI,003C
MOV W[SI],AX MOV AX,0000H MOC SI,003EH
MOV W[SI],AX POP DS IN AL,21H
AND AL,7F H
OUT 21H,AL
MOV AL,39H ;8253OUT 43H,AL ;MOV AL,00H OUT 42H,AL MOV AL,10H OUT 42H,AL MOV AL,81H ;8255OUT 63H,AL CALL FIRST BEGI: HLT
;保存数据段
;数据段清零
;取中断程序入口地址 ;加装时IP=2000地址
;填8259中断7中断矢量 ;填偏移量矢量 ;段地址CS=0000H
;填段地址矢量 ;弹栈 ;读8259中断屏蔽字 ;开8259中断7
的计数器0为方式2,采用BCD码计数,先写低
8位,后写高8位。方式控制字为00110101
写入方式控制字到控制字寄存器 ;计数初值低8位
;写入计数初值低8位到通道0 ;计数初值高8位
;写入计数初值高8位到通道0
的A口位方式0输出,B口为方式0输出,C
口下部输入1000 0001
;写方式控制字 ;调用first子程序,赋计数初值 延时等待
26
; 徐州工程学院 微机原理与微机接口技术课程设计
STI INT 16H JZ BEJI
;开中断
;检测是否按了键
MOV AH,01H
MOV AH,00H INT 16H
;读键值
CMP AL,0DH ;是否按了KEY2 JNZ A1 MOV SI,4000H NOT [SI+04H] JMP BEGI
A1:CMP AL,1BH ;是否按了KEY1键 JNZ A2
CALL FIRST ;重新赋初值,相当于清零 A2: JMP BEGI 中断程序: IRQ7:CAKK DIS
;调用DISP子程序,用来在数码管显示数据
MOV SI 4000H JE A4
CALL ADDN ;调用ADDN子程序,用来计数 OUT 20H,AL CLI IRET
;关中断 ;返回
;偏移地址为4004H的内存单元内容取反
CMP [SI+04H],00H ;判断是否按了第2次回车键
A4:MOV AL,20H
ADDN程序: ADDN:MOV SI,4000H
ADD [SI+05H],01H ;百分之一秒加1 CMP [SI+05H],0AH ;判断是否大于10 JZ A5 JMP A11 A5:MOV [SI+05H],00H
ADD [SI+04H],01H ;十分之一秒加1 CMP [SI+04H],0AH ;判断是否大于10
27
徐州工程学院 微机原理与微机接口技术课程设计
JZ A6 JMP A11
A6:MOV [SI+04H],00H
ADD [SI+03H],01H ;秒位加1 CMP [SI+03H],0AH JZ A7 JMP A11 A7:MOV [SI+03H],00H
ADD [SI],01H ;十秒位加1 A8:MOV [SI+02H],00H
ADD [SI+01H],01H ;分位加1 CMP [SI+01H],0AH JZ A7 JMP A9
A9:MOV [SI+01H],00H
ADD [SI],01H ;十分位加1 CMP [SI],06H JZ A8 JMP A9
A10:MOV [SI],00 ;大于60:00重新开始 A11: RET 显示程序: DSP: PUSH AX
;保存AX ;指向数据缓冲区
;1111 0111 指向数码管
;写端口A
MOV SI,4000H MOV DL,F7H
;判断是否大于6 ;判断是否大于10 ;判断是否大于10
MOV AL,DL ;AL=1111 0111 AGAIN:OUT 60H,AL MOV AL,[SI] MOV BX,4100H ADD BX,AX MOV AL,[BX] OUT 61H,AL CALL DELAY
;写端口B
:调用延时程序DELAY
;指向数码缓冲区 BX=0100 0001 0000 0000
AND AX,00FFH ; BX=0000 0000 al
;得到显示代码 BX=0100 0001 al
28
徐州工程学院 微机原理与微机接口技术课程设计
INC SI MOV AL,DL TEST AL,01H JZ OUT ROR AL,1 MOV DL,AL JMP AGAIN OUT: POP AX
RET
LEDMAP: ;数码管显示代码:
DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH.07H,7FH,6FH DELAY: PUSH CX
PUSH AX
MOV CX,0010H T1:MOV AX, 0010H T2 :DEC AX JNZ T2 LOOP T1 POP AX POP CX
RET
;延时程序
;弹出AX
;指向下一个数码管
29