电子钟综合性试验(CLOCK)
1、实验目的与要求
进一步熟悉8253、8259、8279
2、实验设备
STAR系列实验仪一套、PC机一台
3、实验内容
1、使用8253定时功能,产生0.5S的定时中断给8259
2、在F4区的数码管上显示时间
3、允许设置时钟初值
proteus运行
有没有类似的实验代码和运行结果呢
电子钟综合性试验(CLOCK)
1、实验目的与要求
进一步熟悉8253、8259、8279
2、实验设备
STAR系列实验仪一套、PC机一台
3、实验内容
1、使用8253定时功能,产生0.5S的定时中断给8259
2、在F4区的数码管上显示时间
3、允许设置时钟初值
proteus运行
有没有类似的实验代码和运行结果呢
只是一个参考:
ORG 100h ;程序入口
;初始化
MOV AL, 10110110B ;设置8253为工作方式3
OUT 043h, AL
MOV AL, 10100000B ;设置8253定时器0为1.19318MHz
OUT 040h, AL
MOV AL, AH
OUT 040h, AL ;设定8253计数初值
MOV AL, 20h ;设置8259中断控制器,开启时钟中断
OUT 021h, AL
IN AL, 020h ;开启CPU中断
OR AL, 00100000B
OUT 020h, AL
;主程序
START:
CALL SET_TIME ;获取时间
CALL UPDATE_LED ;更新LED显示
JMP START
;获取时间
SET_TIME:
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV DX, 0040h ;获取系统计数器中的时间
MOV BX, 006Ch
MOV CX, [BX]
MOV BX, 0070h
MOV AX, [BX]
CMP CX, [BX]
JE END_SET_TIME
MOV AX, CX
INC CX
CMP CX, 100h
JNE UPDATE_TIME
MOV CX, 0
INC AX
UPDATE_TIME:
MOV [BX], CX
MOV [BX+2], AX
END_SET_TIME:
POP DX
POP CX
POP BX
POP AX
RET
;更新LED显示
UPDATE_LED:
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH, 0Bh ;显示时间
MOV CX, 0Fh ;显示位置
CALL SHOW_TIME
MOV AH, 04h ;设置时钟初值
MOV DX, 01h ;小时
INT 21h
MOV DX, 30h ;十位
INT 21h
MOV DX, 00h ;个位
INT 21h
POP DX
POP CX
POP BX
POP AX
RET
;显示时间
SHOW_TIME:
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX, 0B800h ;显存地址
MOV CX, 0003h ;黑底白字
MOV DX, 0Fh ;显示位置
MOV AX, DS
MOV ES, AX ;ES=DS
ADD BX, DX ;移动指针
MOV DX, WORD PTR [DS:006Ch] ;小时
AND DX, 0FFh
DIV 10
ADD DL, 30h ;转换为ASCII码
MOV BH, 0 ;页码
MOV BYTE PTR [ES:BX], DL ;显示十位
ADD BX, 2 ;移动指针
MOV DL, CL ;保存原始属性值
MOV CL, CH ;取出高位