ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:390.78KB ,
资源ID:7827429      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7827429.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言数字时钟设计剖析.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言数字时钟设计剖析.docx

1、汇编语言数字时钟设计剖析福 建 工 程 学 院课程设计课 程: 微机原理及接口课程设计 题 目: 数字时钟 专 业: 软件工程 班 级: 1101 座 号: 3110305110 姓 名: 程康 2013 年 9 月 18 日 1、设计任务 数字时钟:实时显示时间于LED数码管,并可以修改时间,包括上调,下调,复位等。2、总体方案设计与方案论证 1、时钟,前提需要脉冲的产生,根据8253能产生稳定的方波,故时钟脉冲的产生将由8253芯片实现。 2、此实验只需要精确到秒,所以,产生的方波,将是频率为1HZ。 3、时间显示采用实验箱上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。 3

2、、因为涉及到时钟显示和控制两大功能,还有对到来的时钟脉冲接收和处理,在这里,将选用8255芯片,作为中间介质,对用户要求和接收到的脉冲信号进行处理,设置时间通过开关产生单脉冲8255的PC0PC2输入 ,通过PC0控制时间的暂停与继续,通过PC1控制时加1,通过PC2控制分加1,通过PC4控制秒加1,通过PC5控制复位。最终产生达到用户要求的数字时钟,在微机接口实验台上模拟调试实现24小时走时的时钟,并将时间以HH.MM.SS显示在6位数码管上。 系统硬件设计主要利用微机实验箱上的电路模块,硬件电路主要有按键电路,单脉冲产生单元、8253定时计数、8255并行接口单元、LED显示电路。3、总框

3、图及总体软件设计说明 4、接口电路逻辑图及硬件设计说明,或系统资源使用说明1、硬件整体电路图5、局部程序框图及其设计说明1、主入口 2、时钟运行正常流程图 6、源程序清单CODE SEGMENT ASSUME CS:CODE,DS:CODESTART: MOV AX,CS MOV DS,AX MOV DX,20BH ;8253 MOV AL,36h ;0号定时器,方式3,二进制 OUT DX,AL MOV DX,208H MOV AX,1000 ;1000 分频 OUT DX,AL ;0号数据口 MOV AL,AH OUT DX,AL MOV DX,20BH ;8253 MOV AL,76h

4、;1号定时器,方式3,二进制 OUT DX,AL MOV DX,209H MOV AX,1000 ;1000 分频 OUT DX,AL ;1号数据口.3 MOV AL,AH OUT DX,AL MOV AL,89H ;A.B口方式0输出,PC0-3输入,PC4-7输入 MOV DX,203H OUT DX,AL ;写8255工作方式控制字 go: CALL BEGIN ;时间走动 CALL SET ;修改时间 JMP go;对时间拆字split PROC LEA DI,RES MOV DX,00H;时间的小时位 MOV DL,H MOV CL,4 SHR DL,CL ;通过移位获取时的高位 M

5、OV BX,DX MOV DL,BUFBX ;查定义好的数据段获取对应数字数码管的值 MOV DI,DL ;保存到RES对应单元 INC DI MOV DL,H AND DL,0FH ;获取时的低位 ADD DL,0AH ;小时和分钟低位都是加点数 MOV BX,DX MOV DL,BUFBX ; 查定义好的数据段获取对应数字数码管的值 MOV DI,DL;时间的分钟高位,无点存储 INC DI MOV DL,M SHR DL,CL MOV BX,DX MOV DL,BUFBX MOV DI,DL; 时间的分钟低位,有点存储 INC DI MOV DL,M AND DL,0FH ADD DL,

6、0AH MOV BX,DX MOV DL,BUFBX MOV DI,DL;时间的秒位,高低位都按无点存储 INC DI MOV DL,S SHR DL,CL MOV BX,DX MOV DL,BUFBX MOV DI,DL INC DI MOV DL,S AND DL,0FH MOV BX,DX MOV DL,BUFBX MOV DI,DL RETsplit ENDP;判断k0是否按下并弹起,暂停ISK0 PROC MOV DX,202H ;判断K0按下,且放开 IN AL,DX ;把c口数据写入AL AND AL,01H ;判断K0是被按下 CMP AL,01H JNZ DOWN JMP R

7、ETURN;被按下DOWN: MOV DX,202H IN AL,DX AND AL,01H ;被按下是否弹起 CMP AL,01H JZ UP JMP DOWN ;按下之后又弹起,K0不等于0UP: INC K0 MOV AH,00H MOV AL,K0 MOV BL,03H DIV BL MOV K0,AHRETURN:RETISK0 ENDPDELAY PROC NEAR PUSH CX MOV CX,65535 LOOP $ POP CX DELAY ENDP;以按下为准,进行时间的递增ISK1 PROC MOV DX,202H ;判断K1按下,且放开 IN AL,DX AND AL,

8、02H CMP AL,02H JNZ UP1 JMP RETURN1UP1: ;CALL SHOW MOV DX,202H IN AL,DX AND AL,02H CMP AL,02H JZ DOWN1 JMP UP1DOWN1: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K1 ADD AL,01H DAA MOV K1,AL MOV AH,00H MOV BL,24H DIV BL MOV K1,AHRETURN1:RETISK1 ENDP;分钟调节 上升ISK2 PROC MOV DX,202H ;判断K2按下,且放开 IN AL,DX AND AL

9、,04H CMP AL,04H JNZ UP2 JMP RETURN2 UP2: MOV DX,202H IN AL,DX AND AL,04H CMP AL,04H JZ DOWN2 JMP UP2 DOWN2: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K2 ADD AL,01H DAA MOV AH,00H MOV BL,60H DIV BL MOV AL,AH ADD AL,00H DAA MOV K2,AL RETURN2: RETISK2 ENDP;秒调节 上升ISK5 PROC MOV DX,202H ;判断K4按下,且放开 IN AL,D

10、X AND AL,10H CMP AL,10H JNZ UP5 JMP RETURN5 UP5: MOV DX,202H IN AL,DX AND AL,10H CMP AL,10H JZ DOWN5 JMP UP5 DOWN5: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K4 ADD AL,01H DAA MOV AH,00H MOV BL,60H DIV BL MOV AL,AH ADD AL,00H DAA MOV K4,AL RETURN5: RETISK5 ENDP ;以按下为准,进行时间的递减 小时ISK3 PROC MOV DX,202H

11、;判断K1按下,且放开 IN AL,DX AND AL,02H CMP AL,02H JNZ UP3 JMP RETURN3UP3:MOV DX,202H IN AL,DX AND AL,02H CMP AL,02H JZ DOWN3 JMP UP3DOWN3: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K1 CMP AL,00H JA JIAN3 JMP BIAN3JIAN3: SUB AL,01H ;ADD AL,00H DAS MOV K1,AL RETBIAN3: MOV AL,23H MOV K1,ALRETURN3: RETISK3 ENDP

12、;分钟调节下降ISK4 PROC MOV DX,202H ;判断K2按下,且放开 IN AL,DX AND AL,04H CMP AL,04H JNZ UP4 JMP RETURN4UP4: MOV DX,202H IN AL,DX AND AL,04H CMP AL,04H JZ DOWN4 JMP UP4 DOWN4: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K2 CMP AL,00H JA JIAN4 JMP BIAN4JIAN4: SUB AL,01H DAS MOV K2,AL RETBIAN4: MOV AL,59H MOV K2,ALRE

13、TURN4: RET ISK4 ENDP;秒调节下降ISK6 PROC MOV DX,202H ;判断K2按下,且放开 IN AL,DX AND AL,10H CMP AL,10H JNZ UP6 JMP RETURN6UP6: MOV DX,202H IN AL,DX AND AL,10H CMP AL,10H JZ DOWN6 JMP UP6 DOWN6: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,K4 CMP AL,00H JA JIAN6 JMP BIAN6JIAN6: SUB AL,01H DAS MOV K4,AL RETBIAN6: MOV

14、 AL,59H MOV K4,ALRETURN6: RET ISK6 ENDP;以按下为准,对时分秒进行初始化的操作ISK7 PROC MOV DX,202H ;判断K5按下,且放开 IN AL,DX AND AL,20H CMP AL,20H JNZ UP7 JMP RETURN7UP7:MOV DX,202H IN AL,DX AND AL,20H CMP AL,20H JZ DOWN7 JMP UP7DOWN7: CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动 MOV AL,00H MOV H,AL MOV K1,AL MOV M,AL MOV K2,AL MOV S

15、,AL MOV K4,ALRETURN7:RETISK7 ENDPSHOW PROC ;8255显示时间子程序 LOP2:CALL split LEA DI,RES MOV CX,6 MOV AL,K ;AL=DFH 1101 1111 控制 Y1Y5 循环点亮 MOV X1,AL LOP: MOV DX,201H MOV AL,0FFH OUT DX,AL MOV DX,200H ;A口输出段码 MOV AL,DI OUT DX,AL INC DI MOV AL,X1 MOV DX,201H ;B口输出 OUT DX,AL ROR X1,1 ;循环右一位 LOOP LOP RETSHOW E

16、NDP;修改时间的子程序SET PROC MOV AL,H MOV K1,AL MOV AL,M MOV K2,AL MOV AL,S MOV K4,ALDU5: CALL SHOW MOV DX,201H MOV AL,7FH OUT DX,AL CALL ISK0 MOV AL,K0 CMP AL,0 JA ZHIZONG JMP JIE1 ZHIZONG: CMP AL,1 JA ZHI1 JMP ZHIZHI1: CALL ISK3 CALL ISK4 CALL ISK6 CALL ISK7 MOV AL,K1 MOV H,AL MOV AL,K2 MOV M,AL MOV AL,K4

17、 MOV S,AL CALL SHOW MOV DX,201H MOV AL,7FH OUT DX,AL ;CALL ISK7 JMP DU5 ZHI: CALL ISK2 CALL ISK1 CALL ISK5 CALL ISK7 MOV AL,K1 MOV H,AL MOV AL,K2 MOV M,AL MOV AL,K4 MOV S,AL CALL SHOW MOV DX,201H MOV AL,7FH OUT DX,AL ;CALL ISK7 JMP DU5JIE1:RETSET ENDP; 时间开始走动的子程序 BEGIN PROC DU: CALL SHOW MOV DX,201H

18、 MOV AL,0FFH OUT DX,AL CALL ISK7 CALL ISK0 MOV AL,K0 CMP AL,0 JZ XIAN JMP JIE ;没有按k0XIAN: MOV DX,202H IN AL,DX AND AL,08H CMP AL,00H JZ DU ADD S,01H MOV AL,S DAA MOV S,AL CMP S,60H JNZ DU1 MOV S,00H ADD M,01H MOV AL,M DAA MOV M,AL CMP M,60H JNZ DU1 MOV M,00H ADD H,01H MOV AL,H DAA MOV H,AL CMP H,24H

19、 JNZ DU1 JMP LOP1 ;时等于24时DU1:CALL SHOW MOV DX,201H MOV AL,0FFH OUT DX,AL MOV DX,202H IN AL,DX AND AL,08H CMP AL,00H JNZ DU1 JMP DULOP1:MOV H,00H JMP DUJIE:RETBEGIN ENDPCLOCK PROC RETCLOCK ENDPBUF DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;不加点的数 DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;加点

20、的数 RES DB 6 DUP(?) ;定义时分秒的存储单元,用于显示 ;存放时钟的时分秒, H DB 00H ;时 M DB 00H ;分 S DB 00H ;秒 K DB 0DFH ;循环移位的控制 X1 DB 00H K0 DB 0 ;暂停开关,标志位 K1 DB 0 ;调整时的开关,标志位 K2 DB 0 ;调整分钟的开关,标志位 K4 DB 0 ;调整秒的开关,标志位 CODE ENDS END START7、系统功能及操作说明 功能:实现24小时制的时钟的显示,暂停和调整 操作说明:当接通电源,编译运行后,会从默认时间00:00:00开始,以秒为单位计时。在计时当中,拨动开关K0一

21、次,进入调整时间块,为上调。拨动两次,进入调整时间块,为下调。此时,通过拨动K1(小时),K2(分钟),K4(秒)实现在不同状态下的时间的调整。K5为复位键,在任何时间,按下复位键,可以将时间置0,在这个基础上继续实现时间的显示或者调整。 8、调试记录及调试结果 1、在时钟正常走动时,因为满60S,分要进1, 秒置0,所以涉及到除法操作,因为,在整个编码中,用来保存时,分,秒的控制LED显示数字都是以BCD码保存,所以开始,忘记相除后,对其进行二进制到BCD码的转换,导致显示错误,后将要得到的结果进行一次加0法操作,再进行DAA转换,以BCD码保存,便消除了这个问题。 2、输出时,时间逐位显示

22、,没有在LED上给人以连续的效果,后来通过8255的B口(PB0-PB5 )加上了循环移位法控制,因为一个循环执行的时间很短,所以,会给人以连续,好像同时显示六位时间的效果,因此,消除此问题。 3、小时,分钟,秒的状态在保存的时候,直接以能把对应数字用LED灯点亮的编码存放在一块连续的区内,再通过类似数组的直接定位法,可有效快速地进行时间数据的存取,但是开始以二进制保存,取出后,还要再进行转码,比较麻烦。 4、开始6个数码管每位数都后面都是没有点的处理,后来,将其分为两组,小时和分钟的最后一位后面要按照点的方式来处理,其它的则以没有点的方式来处理。 5、开始调整显示时间和设置时间的K0键是以上

23、下为两种状态的处理方式来处理,后考虑到统一性,都以上下为一种状态来实现,且在处理当中,累加拨动次数,因这个按键只要三个功能,故将其除以3,取余数来作为第个功能的状态标志。(0:显示时间1:调整时间 上调 2:调整时间 下调)6、经检测,各功能没有问题,都可以正常运行,并且在15分钟内,时间误差在1秒之内,肉眼观看不出。9、课程设计总结本次实验,注要有以下几个方面的收获:1、 类似其它编程语言一样的程序的模块化的设计,便于修改和维护。2、 对于一个要完成的任务,应该先对其确定需要实现的基本功能,并且找到各个功能之间的联系,然后分别完成各个功能,再组合。最后通过一个主程序来调用入口即可。3、 任何东西,包括这次的时钟设计,都是可以改进和完善的,在不断的深入研究和学习下,可以让一个已经把基本功能实现的代码,向着加合理,更加全面,更加多功能的方向实现。不足之处: 时钟只是简单实现的正常计时,和设置时间,复位,没有实现可以添加的倒计时,以及闹钟等其它更多功能。

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

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