实验一设计数码管电子表
实验一 设计数码管电子表
一. 实验要求:
使用8253的两个计数器串连,作为微机系统的外扩定时源,以数码管电路作为外扩输出设备,采用中断方式编程,实现数码管电子表“具体要求如下:
1.六位数码管分别显示时,分,秒。 2.初始时间由主机键盘输入。
3.主机按任意键停止计时返回DOS。
二:实验电路
CS 200H-207H
(*注意:A1,A0用来选择8253内部三个计数器中的一个,它们分别与计算机地址线的低两位相连。RD,WR 用来控制8253的读写,它们分别与计算机的IOR,IOW相连)
电路分析:
从Q2出来的时钟频率为1MHZ,为实现一秒钟调用一次中断,必须要每1000000次时钟调用一次中断。我们同时将计数器0和计数器1的初值都设为1000,并将计数器0的输出OUT0作为计数器1的时钟,并将计数器1的输出OUT1连到B4端子上,这样就实现了每1000×1000=1000000次时钟调用一次中断。
三.8253控制字格式
四.程序清单:
TITLE DISPTIME DSEG SEGMENT
INPUT_TIM DB 'Please input the current t ime.',13,10,'$'
SHOW_TIM DB 'Time is as the follow.Press Ctr-C to exit.',13,10,'$'
BAD_DATA DB 'Digits mush be between 0 and 9',13,10,'$'
BAD_HRS DB 'Hour must be between 0 and 23',13,10,'$'
BAD_MINS DB 'Minutes mush be between 0 and 59',13,10,'$'
BAD_SECS DB 'Seconds mush be between 0 and 59',13,10,'$' CRLF DB 13,10,'$'
ASK_HRS DB 'Hour(0-23):$' ASK_MINS DB 'Minute(0-59):$' ASK_SECS DB 'Second(0-59):$' USER DB 3,3 DUP(?) TIME DB 3 DUP(?) COUNT DW 1 OLD0A DD ? TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H DSEG ENDS
SSEG SEGMENT STACK 'STACK' DB 256 DUP(?) SSEG ENDS
CSEG SEGMENT ASSUME
CS:CSEG,SS:SSEG,DS:DSEG,ES:DSEG START PROC FAR
MOV AX,DSEG MOV DS,AX
CALL GET_TIME CLI
CALL I8253 (初始化8253) CALL I8259 (初始化8259) CALL RD0A
(读入原0A中断向量)
CALL WR0A(写入新中断向量) ROTATE: CALL DISPLAY(只要不按键,
就不断调用DISPLAY显示TIME变量中的时间)
MOV AH,1 INT 16H JZ ROTATE
(按键输入后退出。) CALL RESET MOV AH,4CH INT 21H RET START ENDP
;************************************ (SERVICE为新的中断程序) SERVICE PROC NEAR PUSH AX PUSH DS
MOV AX,DSEG MOV DS,AX
CALL CHANGE_TIME
(函数CHANGE_TIME用以将时间增加一秒)
MOV AL,20H
OUT 20H,AL(送应答信号) POP DS POP AX IRET SERVICE ENDP ;************************************ (此函数将保存在TIME变量中的时间显示在数码管上。)
DISPLAY PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI
MOV SI,OFFSET TIME MOV BX,OFFSET TABLE MOV CL,4 MOV AL,[SI] MOV AH,AL SAR AL,CL
AND AH,00001111B
XLAT
MOV DX,201H OUT DX,AL MOV DX,200H MOV AL,01H OUT DX,AL MOV AL,0 OUT DX,AL MOV AL,AH XLAT
MOV DX,201H OUT DX,AL MOV DX,200H MOV AL,02H OUT DX,AL MOV AL,0 OUT DX,AL
MOV AL,[SI+1] MOV AH,AL SAR AL,CL
AND AH,00001111B XLAT
MOV DX,201H OUT DX,AL MOV DX,200H MOV AL,04H OUT DX,AL MOV AL,0 OUT DX,AL MOV AL,AH XLAT
MOV DX,201H OUT DX,AL MOV DX,200H MOV AL,08H OUT DX,AL MOV AL,0 OUT DX,AL
MOV AL,[SI+2] MOV AH,AL SAR AL,CL
AND AH,00001111B
XLAT
MOV DX,201H OUT DX,AL MOV DX,200H MOV AL,10H OUT DX,AL MOV AL,0 OUT DX,AL MOV AL,AH XLAT
MOV DX,201H OUT DX,AL MOV DX,200H MOV AL,20H OUT DX,AL MOV AL,0 OUT DX,AL
POP SI POP DX POP CX POP BX POP AX RET DISPLAY ENDP
;************************************ I8253 PROC NEAR
MOV AL,00110100B MOV DX,20BH OUT DX,AL (设定8253的计算器0,写入时先低字节后高字节,方式2,二进制计数)
MOV AX,1000
MOV DX,208H OUT DX,AL
MOV AL,AH
OUT DX,AL
(计数器0的初值设为1000。) MOV AL,01110100B MOV DX,20BH OUT DX,AL (设定8253的计算器1,入时先低字节后高字节,方式2,二进制计数)
MOV AX,1000
OUT DX,AL MOV AL,AH OUT DX,AL
(计数器1初值设为1000。) RET I8253 ENDP
;********************************** I8259 PROC NEAR IN AL,21H
AND AL,11111011B OUT 21H,AL IN AL,0A1H
AND AL,11111101B OUT 0A1H,AL RET I8259 ENDP
;******************************** RD0A PROC NEAR
MOV AX,350AH INT 21H
MOV WORD PTR OLD0A,BX MOV WORD PTR OLD0A+2,ES RET RD0A ENDP
WR0A PROC NEAR PUSH DS
MOV AX,CSEG MOV DS,AX
MOV DX,OFFSET SERVICE MOV AX,250AH INT 21H POP DS RET WR0A ENDP
;******************************** RESET PROC NEAR
MOV DX,WORD PTR OLD0A MOV DS,WORD PTR OLD0A+2 MOV AX,250AH
INT 21H (恢复原来的中断向量) IN AL,0A1H
OR AL,00000010B
OUT 0A1H,AL (屏蔽用户中断) RET RESET ENDP
;*********************************** (函数GET_TIME的作用是接受用户输入的时间,并把它保存在6字节变量TIME中。 为了保证程序的严谨,如果输入的时间非法,则显示出错信息并要求重输。) GET_TIME PROC NEAR
LEA DX,INPUT_TIM MOV AH,9
INT 21H (提示输入时间) HOUR: LEA DX,ASK_HRS MOV AH,9
INT 21H (提示输入小时) CALL INPUT_TIME
(函数INPUT_TIME的功能是把用户输入的字符转化为时间值并存放在BL中如果输入的不是数字,那么让标志寄存器CF=1) JC HOUR (输入不是数字,重输) CMP BL,23H JNA HRS2
(如果输入的数字比24小,那么跳到HRS2去执行下面的内容;如果输入的数字大于等于24, …… 此处隐藏:13249字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




