汇编课程设计源程序(数字时钟)Word文件下载.doc

上传人:b****3 文档编号:15410995 上传时间:2022-10-30 格式:DOC 页数:9 大小:74.50KB
下载 相关 举报
汇编课程设计源程序(数字时钟)Word文件下载.doc_第1页
第1页 / 共9页
汇编课程设计源程序(数字时钟)Word文件下载.doc_第2页
第2页 / 共9页
汇编课程设计源程序(数字时钟)Word文件下载.doc_第3页
第3页 / 共9页
汇编课程设计源程序(数字时钟)Word文件下载.doc_第4页
第4页 / 共9页
汇编课程设计源程序(数字时钟)Word文件下载.doc_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

汇编课程设计源程序(数字时钟)Word文件下载.doc

《汇编课程设计源程序(数字时钟)Word文件下载.doc》由会员分享,可在线阅读,更多相关《汇编课程设计源程序(数字时钟)Word文件下载.doc(9页珍藏版)》请在冰豆网上搜索。

汇编课程设计源程序(数字时钟)Word文件下载.doc

KREP DB 0 ;

防止连击标志,krep=0:

无键按下

KSHAKE DB 0 ;

键盘防抖

KFLAG DB 0 ;

功能键标志位kflag=1,2,3--key(A\B\C)pressed,4--key(F)pressed

SYMBL DB 0 ;

显示标志位0--displaybufer,1--displaytemp

FIRST DB 0 ;

修改标志位check2digit0--hight,1--low

ENTER DB 0 ;

在缓冲区里有新的数字?

有则为1

TABL DW 57FH,5BFH,5DFH,5EFH,5FEH,5FDH,5FBH,5F7H

DW 67FH,6BFH,6DFH,6EFH,6FEH,6FDH,6FBH,6F7H

DW 37FH,3BFH,3DFH,3EFH,3FEH,3FDH,3FBH,3F7H

;

键盘扫描码

ASCI DB "

0123456789ABCDEFGMPRWXYS"

;

键盘顺序码

MASEG DB "

THEKEY_PREESEDISERROR!

"

13,10,'

$'

按键出错提示字符串

NUMERRDB 13,10,"

THEENTEREDDIGITISERROR,INPUTAGAIN!

无效时间提示字符串

LED8 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H

DB 77H,7CH,39H,5EH,79H,71H,80H,76H,38H,05CH

显示编码表

POINT DW ?

ORDER DW 0

BUFER DB 11H,0EH,12H,12H,0H,13H

hh:

mm:

ss;

'

HELLOo'

-atstarts;

LED初始显示状态

TEMP DB 6DUP(0) ;

时间缓存区

SELECT DB 1,2,4,8,10H,20H

OLDSEG DW 0 ;

保持初始中断向量段地址

OLDOFF DW 0 ;

保存偏移地址

DATA ENDS

**************代码段********************

CODE SEGMENT

ASSUME CS:

CODE,DS:

DATA,ES:

DATA

MAIN:

MOV AX,DATA

MOV DS,AX

MOV DX,PORTB

MOV AL,00

OUT DX,AL ;

熄灭所有数码管

MOV AH,35H ;

保存原来的中断向量

MOV AL,11

INT 21H

MOV OLDSEG,ES

MOV OLDOFF,BX

MOV AX,SEGKEYLED ;

写入新的中断向量

MOV DS,AX

LEA DX,KEYLED ;

取偏移地址

MOV AL,11 ;

IRQ3中断向量类型号

MOV AH,25H

INT 21H ;

写入IRQ3中断向量

STI

MOV AX,DATA ;

CSH数据段

MOV DS,AX

MOV ES,AX ;

CSH堆栈段(inHDYmovsb要重新设定堆栈段)

MOV DX,PA+3 ;

8255控制字

MOV AL,10010000B ;

PA口输入,PB口输出

OUT DX,AL

MOV POINT,OFFSETTEMP ;

输入HCQ

IN AL,21H ;

读8259中断寄存器

AND AL,0F7H ;

11111011b

OUT 21H,AL ;

开IRQ3

MOV DX,TC0+3 ;

8253定时寄存器初始化

MOV AL,01010110B ;

xuanTD1,xieyigediZJ,gongzuofangshi3

OUT DX,AL

MOV DX,TC0+1 ;

TD1,weidingshiqifuchuzhi

MOV AL,5 ;

LS393OUT8M/8K,T1OUT200HZ

OUT DX,AL ;

tc1low8=10

STEP:

MOV AH,1 ;

按任意键退出

INT 16H

JZ STEP

MOV DX,OLDOFF ;

恢复IRQ3中断向量

MOV AX,OLDSEG

MOV AL,11

INT 21H ;

重新写入原来的IRQ3的中断向量地址

MOV AH,4CH

***********************中断子程序,进行键盘扫描及显示*********************

KEYLED PROC FAR ;

每72ms进入一次键盘扫描程序

PUSH AX ;

寄存器A压栈

STI ;

开中断

DEC COUNT1 ;

-1,到72ms的话要扫描键盘

JZ SCANK;

到72ms的话进行键盘扫描

JMP DISP ;

否则进行显示

SCANK:

MOV COUNT1,12 ;

72ms初始化数字,为下次扫描键盘准备

DEC COUNT2 ;

72*13ms=1s?

N扫描

JNZ KSCAN ;

去扫描键盘

MOV COUNT2,13 ;

恢复count2,为下次读实时时间准备

*******通过BIOS功能调用读系统时间,并处理后的ASCII数值放入BUFER缓冲区

READT:

MOV AH,2 ;

读BIOS中系统的时间

INT 1AH ;

(CH:

CL)=时:

分,(DH:

DL)=秒:

1/100秒

MOV AX,CX ;

放到AX中,

MOV DI,OFFSETBUFER ;

DI指向时间缓冲区

MOV CL,4

ROL AX,CL ;

循环左移,使得小时高位现在为最低位

MOV BL,AL ;

保存到BL中

AND BL,0FH ;

处理,得到小时的高位

MOV [DI],BL ;

将小时的高位放入缓冲区中

INC DI

小时的低位处理,放入缓冲

MOV BL,AL

AND BL,0FH

MOV [DI],BL

分钟的高位处理,放入缓冲区

MOV BL,AL

AND BL,0FH

MOV [DI],BL

分钟的低位处理,放入缓冲区

MOV AX,DX ;

秒的高位处理,放入缓冲区

ROL AX,CL

MOV [DI],BL

秒的低位处理,放入缓冲区

**********键盘扫描

KSCAN:

MOV COUNT1,12 ;

SMJPCXduan

MOV DX,PA+1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1