汇编课程设计源程序(数字时钟).doc
- 文档编号:2494279
- 上传时间:2022-10-30
- 格式:DOC
- 页数:9
- 大小:74.50KB
汇编课程设计源程序(数字时钟).doc
《汇编课程设计源程序(数字时钟).doc》由会员分享,可在线阅读,更多相关《汇编课程设计源程序(数字时钟).doc(9页珍藏版)》请在冰豆网上搜索。
功能:
实现一个电子表
按‘A’换小时,按‘B’换小时按,‘C’换小时,按‘D’换小时,每次结束后要按‘F’键
;*********用两个74LS373进行数码管的动态显示;一个做段(要显示的笔画)选,一个做位选
PORTS EQU 211H ;数码管显示地址(选管)
PORTB EQU 210H ;数码管显示内容控制
;*********在8253的定时中断中,通过8255的8个PA口,3个PB口进行扫描
PA EQU 220H ;8255CS选择信号端
TC0 EQU 230H ;8253CS选择信号端
;*********数据段
DATA SEGMENT
COUNT1 DB 12 ;扫描键盘中断口标志CM读数码管
COUNT2 DB 13 ;延世13次中断标志
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!
",13,10,'$'
;无效时间提示字符串
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 DS,AX
MOV AL,11
MOV AH,25H
INT 21H ;重新写入原来的IRQ3的中断向量地址
MOV AH,4CH
INT 21H
;***********************中断子程序,进行键盘扫描及显示*********************
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
ROL AX,CL ;小时的低位处理,放入缓冲
MOV BL,AL
AND BL,0FH
MOV [DI],BL
INC DI
ROL AX,CL ;分钟的高位处理,放入缓冲区
MOV BL,AL
AND BL,0FH
MOV [DI],BL
INC DI
ROL AX,CL ;分钟的低位处理,放入缓冲区
MOV BL,AL
AND BL,0FH
MOV [DI],BL
INC DI
MOV AX,DX ;秒的高位处理,放入缓冲区
ROL AX,CL
MOV BL,AL
AND BL,0FH
MOV [DI],BL
INC DI
ROL AX,CL ;秒的低位处理,放入缓冲区
MOV BL,AL
AND BL,0FH
MOV [DI],BL
;**********键盘扫描
KSCAN:
MOV COUNT1,12 ;SMJPCXduan
MOV DX,PA+1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 课程设计 源程序 数字 时钟
![提示](https://static.bdocx.com/images/bang_tan.gif)