1、接口与通信课程设计解析接口与通信电子钟学 号:4080522姓 名:龚敏提交日期:2010-12-9成 绩: 东北大学秦皇岛分校第1章 设计部分1.1 设计目的1、 熟练掌握TND86/88教学系统的基本操作和调试程序的各种指令。2、熟悉编程及调试程序的方法。3、掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。4、掌握8255的各种工作方式及其应用编程。5、掌握8253定时/计数器的工作原理、工作方式及其应用编程。6、练习LED-KEYBOARD UNIT的使用方法和数码管的显示编程方法。1.2 设计要求1、用微机原理实验箱提供的数码管和按键做。2、电子时钟具有二十四小
2、时循环记时功能,走时要准。要有时钟对时功能并方便操作1.3 设计思路 电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。其中对时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。第2章 实现部分2.1 分析论证1、显示模块利用数码管的显示功能来设计。数码管是由八个条形发光二极管组成的,这些发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这八个发光二极管的阳极加+5 V或0 V的电压使不同的二极管发光,形成不同的字符和数字。电子时钟用到的是0到9十个
3、数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。该模块主要是将时钟运算模块和对时模块运算出来并存放在内存单元里的十六进制表示的时位和分位数据转化为十进制,并通过四个数码管显示出来。该模块实现的硬件是TND86/88的LED-KEYBOARD UNIT。2、时钟运算模块该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现,可以选择TND
4、86/88实验箱中的8253定时/计数器来提供,但又因为8253所能提供的信号的周期时毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。中断信号是8253的通道2工作方式为方式3时,产生一个40ms的脉冲信号。运算模块负责时、分、秒的计算,该模块主要通过8259的IRQ7号中断来实现,首先将秒定时模块提供的中断信号为8259的IRQ7中断请求信号。但由于每40ms一次中断请求。所以在中断服务程序必须利用已申请内存单元count来统计中断请求的次数,只有当count的值为25时,才能让秒单元内的数值加1。另外,在中断服务程序里,必须
5、对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1 、秒清零;当分加到60时,时加1、分清零。当时加到24啊,直接清零。3、对时模块该模块主要功能是修改时、分内存单元的数值。在对时的时候,秒应停止不变,并且在对分进行调整的时,时单元内的数值不变。由以上分析可见,对时、分的调整用两个优先级高于IRQ7的中断来完成。因此,可以用8259的IRQ2中断来实现,两个中断源的中断请求信号只需直接接在两个按键即可起到对时作用。2.2设计电路图 电子时钟的完整电路图如下:2.3 原理说明 电子时钟主要由8259A中断控制器、8253定时/计数器、8255A接口芯片、LED数码显示管和两个按键组成
6、。主要用8259A的IRQ7的中断服务程序完成秒、分、时的运算即计时功能,IRQ6的中断服务程序完成调时、调分功能。8253用来产生50ms的脉冲信号作为IRQ7的中断请求信号。按键KK1+和KK2+分别作为IRQ2和IRQ6的中断请求信号。按键KK1+启动/关闭对时功能。它决定是否屏蔽IRQ7和IRQ6中断源。8255A负责将内存里的时位和分位值输出到数码管2.4 元件功能说明8259A的主要功能:(1)每片8259A可管理8级优先级中断源,通过开关,最多可管理64级优先权的中断源。(2)对任何一个级别的中断源都可单独进行屏蔽,使该级中断请求暂时被挂起,直到取消屏蔽时为止。(3)能向CPU提
7、供可编程的标识码。(4)具有多种中断优先权管理方式。有完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式五种。这些管理方式均可通过程序动态地进行变化。在本设计中用到了这四种功能,电子时钟的灵活调时功能就是通过对级别的屏蔽或开启来实现的。8255A的主要功能:可编程外设接口芯片可由程序改变其功能,通用性强、使用灵活。通过8255A,CPU可直接同外设相连接,其负责CPU和外设之间的数据传送。8253的主要功能:可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,设定后与CPU并行工作,不占用CPU的时间。通道2工作在3方式下,提供计算一秒的中断请求信号。2.5 程序框图2.6
8、 调试结果分析 将编写好的源程序输入,编译后出现很多错误,经过反复修改直到程序运行通过。将生成的可执行程序装入TND86/88的内存里,在监控状态下运行程序,可是数码管显示的数字并不与理论计算值相符合,并且显示的数字不停地闪动,经过反复分析源程序发现问题出现在内存单元里时位和分位在转化为十进制时,存储转化的结果的地址空间的顺序弄混了。数字闪动的原因应该出在显示子程序里,经过分析问题出在显示子程序里缺少延时程序。编写延时子程序,并在显示子程序调用它;编译源程序,装入生成的可执行文件,并运行。数码管显示的数字与理论值相符合,并能正常计时,但当按动KK1+键时,却不能启动对时功能,按动KK2+时,也
9、不能调时、调分。问题很可能出在两键控制的中断源上,检查源程序也找不出错误,当把IRQ5换成IRQ2后,在进行调试,结果成功。2.7 程序清单 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDSDATA SEGMENT H DW 000CH M DW 0000H S DW 0000HCOUNT DW 0000HOFF DW 0000HTABLE DB 3FH,06H,5BH,4FH,66H,6DH, 7DH,07H ,7FH,6FHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MO
10、V DS,AX PUSH DS MOV AL,81H OUT 63H,AL MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ2 ADD AX,2000H MOV SI,0028H MOV SI,AX MOV AX,0000H MOV SI,002AH MOV SI,AX MOV AX,OFFSET IRQ6 ADD AX,2000H MOV SI,0038H MOV SI,AX MOV AX,0000H MOV SI,003AH MOV SI,AX MOV AX,OFFSET IRQ7 ADD AX,2000H MOV SI,003CH MOV SI,AX MO
11、V AX,0000HMOV SI,003EH MOV SI,AX MOV AL,0B6H OUT 43H,AL MOV AL,68H OUT 42H,AL MOV AL,0BAH OUT 42H,AL POP DS MOV AL,7BH OUT 21H,ALBEGIN: CALL DIS STI JMP BEGINIRQ7: INC COUNT CMP COUNT,25 JNZ RETURN MOV AX,0 MOV COUNT,AX MOV AX,S INC AX MOV S,AX CMP AX,003CH JNZ RETURN MOV AX,0 MOV S,AX MOV BX,M INC
12、BX MOV M,BX CMP BX,003CH JNZ RETURN MOV BX,0 MOV M ,BX MOV DX,H INC DX MOV H,DX CMP DX,0018H JNZ RETURN MOV DX,0 MOV H,DXRETURN: MOV AL,7BH OUT 21H,AL MOV AL,20H OUT 20H,AL IRETIRQ6: MOV AX,OFF CMP AX,0001H JNZ HR MOV BX,M INC BX MOV M,BX CMP BX,003CH JNZ R0 MOV BX,0 MOV M ,BX JMP R0HR: CMP AX,0002H
13、 JNZ R0 MOV BX,H INC BX MOV H,BX CMP BX,0018H JNZ R0 MOV BX,0 MOV H ,BXR0: MOV AL,0BBH OUT 21H,AL MOV AL,20H OUT 20H,AL IRET IRQ2: INC OFF MOV BX,OFF CMP BX,0003H JZ R1 CMP BX,0001H JZ R2 CMP BX,0002H JZ R2R1: MOV BX,0000H MOV OFF,BX MOV AL,7BH OUT 21H,AL MOV AL,20H OUT 20H,AL IRETR2: MOV AL,0BBH OU
14、T 21H,AL MOV AL,20H OUT 20H,AL IRET DIS: PUSH AXMOV SI,3000H MOV AX,M MOV BL,10 DIV BL MOV SI,AH MOV SI+1,AL MOV AX,H MOV BL,10 DIV BL MOV SI+2,AH MOV SI+3,AL MOV DL,0F7H MOV AL,DLAGAIN: OUT 60H,AL MOV AL,SI MOV BX,OFFSET TABLE AND AX,00FFH ADD BX,AX MOV AL,BX OUT 61H,AL CALL DALLY INC SI MOV AL,DL
15、TEST AL,01H JZ OUT ROR AL,1 MOV DL,AL JMP AGAINOUT: POP AX RETDALLY: PUSH CX MOV CX,000FHT1: MOV AX,0020HT2: DEC AX JNZ T2 LOOP T1 POP CX RETCODE ENDS END START第三章 电子时钟使用说明 本电子时钟可以24小时循环计时,并且具有调时功能,操作方法如下:开机运行后,即显示初始时间12:00整。按动一下KK1+按键即可启动调分,此时每按动一下KK2+按键分位数字加1,完成对分的调整;再按动一下KK1+按键启动调分,此时每按动一下KK2+按键时
16、位加1,完成对时的调整。再按一下KK1+按键即关闭功能,正常计时。第四章 心得体会 短短的一周半就这么过去了,通过这次短暂的课程设计,不仅使我加深了对接口程序设计的认识,对接口各部件的工作原理也有了进一步的了解,也增强了分析故障的能力.上课的时候对什么8255A,8259A的工作方式就一知半解,通过的这次课程设计,通过设计,看书,终于有了比较深刻地了解. 通过这次课程设计,虽然花费了很多时候,效果做得也不是很好,但却加深对汇编程序结构,指令,中断,调用等基础知识的认识。在过程中,我深刻体会到汇编语言的难度是比较高的,要求非常严密的逻辑思维能力,中断运用是整个汇编语言的核心,离开了中断,整个汇编大厦将会墙倒楫倾。同时明白在程序的设计时,互相交流学习和讨论,将会开拓视野,启迪灵感。当然还要有坚持不懈的精神!参考文献:1、微型计算机技术2、TDN86/88实验指导书 阎有运、郭顺京编
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1