电子钟综合性实验微机原理汇编语言

电子钟综合性试验(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 ;取出高位