




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术课程设计课题:电子时钟的设计与实现 完成时间:2004年9月12日实验代码硬件连线:8254硬件连线: 片选CS300H A0A2 A1A3 T0:GATE0+5V CLK047KHZ OUT0IR0 T1:GATE1PC0 CLK1OUT2 OUT1蜂鸣器 8255硬件连线:CS_1CS1CS_2CS2CS_3CS3CS_4CS4PC0GATE18259硬件连线: CS23A0H INT2INTR SP/2+5V INT_AINTA IRQ08254的OUT074系列模块硬件连线: Q_0Q0 Q_1Q1 Q_2Q2 Q_3Q3 P_0P0 P_1P1 P_2P2 CS1340H CS2360H 程序代码段:.486pdata segment at 0 use16 ORG 1000h HOUR db ? MINUTE db ? SECOND db ? STOP db ? COUNT DB 0 HHOUR DB ? MMINUTE DB ? SSECOND DB ?data endscode segment use16 assume cs:code,ds:data org 1500hBEG: jmp startTAB1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh,8ch,0c1h,91h,7fh,0ffhTAB2 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhKEYCOD db 0eeh,0deh,0beh,0edh,0ddh,0bdh,0ebh,0dbh,0bbh,0e7h,0d7h,0b7hKEYVAL db 0,1,2,3,4,5,6,7,8,9,0ah,0bhstart: mov eax,60000000h mov cr0,eax mov ax,code mov ds,ax CLI MOV BYTE PTR HOUR ,23 MOV BYTE PTR MINUTE,59 MOV BYTE PTR SECOND,50 MOV BYTE PTR STOP,0;8255初始化 MOV EAX,0A0A0A0AH MOV DX,208H OUT DX,EAX ;8254初始化 MOV DX,30CH MOV AL,34H ;计数器0,16位,方式2,2进制 OUT DX,AL MOV DX,300H MOV AX,1175 ;计数器0初值为25ms*47KHZ OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,30CH MOV AL,54H ;计数器1,8位,方式2,2进制 OUT DX,AL MOV DX,304H MOV AX,40 ;计数器1初值为40,25ms*40=1s OUT DX,AL ;8259初始化 偶地址:3A0H 奇地址:3A8H MOV DX,3A0H ;写ICW1,写入偶地址 MOV AL,13H OUT DX,AL MOV DX,3A8H ;写ICW2,写入奇地址 MOV AL,08H ;IR0的中断类型号为08H OUT DX,AL MOV DX,3A8H ;写ICW4,写入奇地址 MOV AL,05H ;主片,8259工作在80X86中 OUT DX,AL ;设置8259中断向量 MOV AX,OFFSET INTER MOV BX,20H ;08H*4 MOV BX,AX MOV AX,SEG INTER MOV BX+2,AX ;开放IRQ0 MOV DX,3A8H MOV AL,11111110B ;开放IRQ0 OUT DX,AL ;判断G键或S键是否按下G: STI NOP CALL INPUT CALL DELAY CMP AL,0D7H ;判断G键是否按下,若按下同时设置闹铃时间 JNZ S NOT STOP CALL INPUT CALL DELAY CALL ALARM ;设定闹铃子程序 JMP GS: CMP AL,0B7H JNZ G MOV STOP,0FFH ;设置时间 ;设置小时 MOV CX,2 JMP H1 H2: CMP AL,SI JZ H3 INC SI INC DI LOOP H2 POP CX JMP H1 H3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ H4;CX=2设置十位,否则设置个位 CMP AL,2 JA H1 PUSH AX PUSH BX MOV DX,208H IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,01H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,200H ;送数码管时的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV HOUR,AL CALL DELAY JMP H6H1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP H2 H4: CALL DELAY PUSH AX PUSH BX MOV DX,208H IN AL,DX MOV BL,AL AND BL,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,2 JNZ H5 CMP AL,4 JA H1H5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,204H ;送数码管时的个位 OUT DX,AL ADD HOUR,AH CALL DELAY H6: LOOP H1 ;设置分钟 MOV CX,2 JMP M1 M2: CMP AL,SI JZ M3 INC SI INC DI LOOP M2 POP CX JMP M1 M3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ M4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA M1 PUSH AX PUSH BX MOV DX,209H IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,01H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,201H ;送数码管分的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV MINUTE,AL CALL DELAY JMP M6M1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP M2 M4: CALL DELAY PUSH AX PUSH BX MOV DX,209H IN AL,DX MOV BL,AL AND BL,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,5 JNZ M5 CMP AL,9 JA M1M5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,205H ;送数码管分的个位 OUT DX,AL ADD MINUTE,AH CALL DELAY M6: LOOP M1 ;设置秒钟 MOV CX,2 JMP S1 S2: CMP AL,SI JZ S3 INC SI INC DI LOOP S2 POP CX JMP S1 S3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ S4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA S1 PUSH AX PUSH BX MOV DX,20AH IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,01H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,202H ;送数码管秒的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV SECOND,AL CALL DELAY JMP S6S1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP S2S4: CALL DELAY PUSH AX PUSH BX MOV DX,20AH IN AL,DX MOV BL,AL AND BL,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,5 JNZ S5 CMP AL,9 JA S1S5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,206H ;送数码管秒的个位 OUT DX,AL ADD SECOND,AH CALL DELAYS6: LOOP S1 MOV DX,208H MOV EAX,0A0A0A0AH OUT DX,EAX MOV STOP,0 JMP G ;行扫描法读取键入值INPUT PROC PUSH BX PUSH DX WT: MOV AL,00H MOV DX,360H OUT DX,AL NOP NOP MOV DX,360H IN AL,DX AND AL,0FH CMP AL,0FH JZ WT ;al全为0,说明无键按下 NOP NOP MOV DX,360H ;再次确认是否有键按下 IN AL,DX AND AL,0FH CMP AL,0FH JZ WT MOV CX,3 MOV BL,0FEHNEXT: MOV AL,BL MOV DX,360H OUT DX,AL NOP NOP IN AL,DX AND AL,0FH CMP AL,0FH JNZ KEY ROL BL,1 LOOP NEXT JMP WTKEY: SHL BL,4 OR AL,BL CALL RELEASE POP DX POP BX RETINPUT ENDP;设定闹钟ALARM PROC PUSH CX PUSH AX PUSH DX MOV CX,2 JMP HH1HH2: CMP AL,SI JZ HH3 INC SI INC DI LOOP HH2 POP CX JMP HH1 HH3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ HH4;CX=2设置十位,否则设置个位 CMP AL,2 JA HH1 MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,200H;送数码管时的十位 OUT DX,AL CALL DELAY MOV DL,AH MOV AL,10 MUL DL MOV HHOUR,AL CALL DELAY JMP HH6HH1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP HH2 HH4: CALL DELAY CMP DL,2 JNZ HH5 CMP AL,4 JA HH1HH5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,204H ;送数码管时的个位 OUT DX,AL CALL DELAY ADD HHOUR,AH ;将闹铃值保存在内存中 CALL DELAY HH6: LOOP HH1 ;设置分钟 MOV CX,2 JMP MM1 MM2: CMP AL,SI JZ MM3 INC SI INC DI LOOP MM2 POP CX JMP MM1 MM3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ MM4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA MM1 MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,201H ;送数码管分的十位 OUT DX,AL CALL DELAY MOV DL,AH MOV AL,10 MUL DL MOV MMINUTE,AL CALL DELAY JMP MM6MM1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP MM2 MM4: CALL DELAY CMP DL,5 JNZ MM5 CMP AL,9 JA MM1MM5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,205H ;送数码管分的个位 OUT DX,AL CALL DELAY ADD MMINUTE,AH ;将闹铃值保存在内存中 CALL DELAY MM6: LOOP MM1 ;设置秒钟 MOV CX,2 JMP SS1 SS2: CMP AL,SI JZ SS3 INC SI INC DI LOOP SS2 POP CX JMP SS1 SS3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ SS4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA SS1 MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,202H ;送数码管秒的十位 OUT DX,AL CALL DELAY MOV DL,AH MOV AL,10 MUL DL MOV SSECOND,AL CALL DELAY JMP SS6SS1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP SS2SS4: CALL DELAY CMP DL,5 JNZ SS5 CMP AL,9 JA SS1SS5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,206H ;送数码管秒的个位 OUT DX,AL CALL DELAY ADD SSECOND,AH ;将闹铃值保存在内存中 CALL DELAY SS6: LOOP SS1 MOV STOP,0 POP DX POP AX POP CXALARM ENDP;判断按键是否释放RELEASE PROC PUSH AX PUSH DXR1: MOV AL,00H ;行线给0,读列线看是否为0 MOV DX,360H OUT DX,AL NOP NOP IN AL,DX AND AL,0FH CMP AL,0FH JNZ R1 POP DX POP AX RETRELEASE ENDP;延时子程序DELAY PROC PUSH CX MOV CX,500DEL: LOOP DEL POP CX RETDELAY ENDP ;中断服务程序INTER PROC PUSH AX PUSH BX PUSH DX STI CMP STOP,0 JNZ L3 LEA BX,TAB1 L0: ADD COUNT,1 CMP COUNT,40 ;每40次中断记一秒钟 JNZ L1 MOV COUNT,0 MOV AL,SECOND ADD AL,1 MOV SECOND,AL CMP AL,60 JNZ L1 MOV BYTE PTR SECOND,0 MOV AL,MINUTE ADD AL,1 MOV MINUTE,AL CMP AL,60 JNZ L1 MOV BYTE PTR MINUTE,0 MOV AL,HOUR ADD AL,1 MOV HOUR,AL CMP AL,24 JNZ L1 MOV BYTE PTR HOUR,0 L1: MOV AL,HOUR MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,200H OUT DX,AL MOV AL,AH XLAT MOV DX,204H OUT DX,AL MOV AL,MINUTE MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,201H OUT DX,AL MOV AL,AH XLAT MOV DX,205H OUT DX,AL MOV AL,SECOND MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,202H OUT DX,AL MOV AL,AH XLAT MOV DX,206H OUT DX,AL MOV AL,MINUTE CMP AL,59 JNZ Q1 MOV AL,SECOND CMP AL,55 JNZ Q1 MOV AL,01H ;当时间为59分55秒时,令GATE1为1,接PC0,报时蜂鸣器响 MOV DX,20BH OUT DX,AL JMP L3 Q1: MOV AL,HOUR ;比较闹铃值,相等则令GATE1为1,蜂鸣器响 CMP AL,HHOUR JNZ L2 MOV AL,MINUTE CMP AL,MMINUTE JNZ Q MOV AL,01H MOV DX,20BH OUT DX,AL JMP L3 Q: MOV AL,MINUTE CMP AL,MMINUTE JZ L3 MOV AL,00H MOV DX,20BH OUT DX,AL JMP L3L2: MOV AL,SECOND CMP AL,1 JNZ L3 MOV AL,00H MOV DX,20BH OUT DX,AL L3: CALL DIS MOV AL,20H ;发EOI命令 MOV DX,3A0H OUT DX,ALL4: CLI POP DX POP BX POP AX IRETINTER ENDP;将时分秒值给74系列数码管显示DIS PROC PUSH AX PUSH BX PUSH DX LEA BX,TAB2 MOV AL,HOUR MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,81H OUT DX,AL CALL DELAY MOV AL,AH XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,82H OUT DX,AL CALL DELAY MOV AL,MINUTE MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,84H OUT DX,AL CALL DELAY MOV AL,AH XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,88H OUT DX,AL CALL DELAY MOV AL,SECOND MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,90H OUT DX,AL CALL DELAY MOV AL,AH XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,0A0H OUT DX,AL CALL DELAY POP DX POP BX POP AX RETDIS ENDPCODE ENDS END BEG第一章 设计部分1.1 设计目的1、 熟练掌握TND86/88教学系统的基本操作和调试程序的各种指令。2、 熟悉编程及调试程序的方法。3、 掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。4、 掌握8255的各种工作方式及其应用编程。5、 掌握8253定时/计数器的工作原理、工作方式及其应用编程。6、 练习LED-KEYBOARD UNIT的使用方法和数码管的显示编程方法。1.2 设计要求1、 用微机原理实验箱提供的数码管和按键做。2、 电子时钟具有二十四小时循环记时功能,走时要准。要有时钟对时功能并方便操作1.3 设计思路 电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。其中对时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。这样,才能循环记时。第二章 实现部分2.1 分析论证 1、显示模块利用数码管的显示功能来设计。数码管是由八个条形发光二极管组成的,这些发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这八个发光二极管的阳极加+5 V或0 V的电压使不同的二极管发光,形成不同的字符和数字。电子时钟用到的是0到9十个数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。该模块主要是将时钟运算模块和对时模块运算出来并存放在内存单元里的十六进制表示的时位和分位数据转化为十进制,并通过四个数码管显示出来。该模块实现的硬件是TND86/88的LED-KEYBOARD UNIT。2、时钟运算模块该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现,可以选择TND86/88实验箱中的8253定时/计数器来提供,但又因为8253所能提供的信号的周期时毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。中断信号是8253的通道2工作方式为方式3时,产生一个40ms的脉冲信号。运算模块负责时、分、秒的计算,该模块主要通过8259的IRQ7号中断来实现,首先将秒定时模块提供的中断信号为8259的IRQ7中断请求信号。但由于每40ms一次中断请求。所以在中断服务程序必须利用已申请内存单元count来统计中断请求的次数,只有当count的值为25时,才能让秒单元内的数值加1。另外,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1 、秒清零;当分加到60时,时加1、分清零。当时加到24啊,直接清零。3、对时模块该模块主要功能是修改时、分内存单元的数值。在对时的时候,秒应停止不变,并且在对分进行调整的时,时单元内的数值不变。由以上分析可见,对时、分的调整用两个优先级高于IRQ7的中断来完成。因此,可以用8259的IRQ2中断来实现,两个中断源的中断请求信号只需直接接在两个按键即可起到对时作用。2.2 设计电路图电子时钟的完整电路图如下:2.3 原理说明电子时钟主要由8259A中断控制器、8253定时/计数器、8255A接口芯片、LED数码显示管和两个按键组成。主要用8259A的IRQ7的中断服务程序完成秒、分、时的运算即计时功能,IRQ6的中断服务程序完成调时、调分功能。8253用来产生50ms的脉冲信号作为IRQ7的中断请求信号。按键KK1+和KK2+分别作为IRQ2和IRQ6的中断请求信号。按键KK1+启动/关闭对时功能。它决定是否屏蔽IRQ7和IRQ6中断源。8255A负责将内存里的时位和分位值输出到数码管2.4 元件功能说明8259A的主要功能:(1)每片8259A可管理8级优先级中断源,通过开关,最多可管理64级优先权的中断源。(2)对任何一个级别的中断源都可单独进行屏蔽,使该级中断请求暂时被挂起,直到取消屏蔽时为止。(3)能向CPU提供可编程的标识码。(4)具有多种中断优先权管理方式。有完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式五种。这些管理方式均可通过程序动态地进行变化。在本设计中用到了这四种功能,电子时钟的灵活调时功能就是通过对级别的屏蔽或开启来实现的。8255A的主要功能:可编程外设接口芯片可由程序改变其功能,通用性强、使用灵活。通过8255A,CPU可直接同外设相连接,其负责CPU和外设之间的数据传送。8253的主要功能:可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,设定后与CPU并行工作,不占用CPU的时间。通道2工作在3方式下,提供计算一秒的中断请求信号。YesNoNoNoNoYes中断服务程序IRQ7YesYesIRQ7中断COUNT=25?S=S+1COUNT=0S=60?M=M+1S=0M=60?H=H+1M=0H=24?H=0IRETCOUNT=COUNT+12.5 程序框图显示模块程序图 时、分转化为十进制,存到内存单元中计算时、分的各位数值在TABLE中对应编码结束开始依次在61H段输出到LED显示 YesYesIRQ6中断M=M+1M=60?M=0IRET中断服务程序IRQ6OFF=1?NoOFF=2?H=H+1H=24?YesH=0YesNoNoNoOFF=1?IRETOFF=0 屏蔽IRQ6中断,开IRQ2和IRQ7中断OFF=3?中断服务程序IRQ2IRQ2中断
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗器械临床试验质量管理规范化在2025年的临床试验监管政策变化趋势报告
- 2025年城市公园改造提升项目社会稳定风险评估与风险评估方法改进研究综述报告
- 生态农业可持续发展模式与技术创新报告
- 2025年元宇宙社交平台虚拟现实与虚拟现实教育游戏化应用研究报告
- 2025年元宇宙社交平台虚拟现实社交平台内容创新研究报告
- 共享办公空间增值服务在智慧旅游中的应用策略报告
- 2025年医院信息化建设电子病历系统用户体验优化研究报告
- 细胞因子靶点发现与验证技术2025年应用分析
- 2025年医药行业CRO模式下的临床试验法规更新与合规应对报告
- 2025届咸阳市重点中学英语七下期末调研模拟试题含答案
- 2025年陕西省中考数学真题试卷及答案解析
- 呼吸机的维护与保养标准流程
- 2025年北方华创招聘笔试参考题库含答案解析
- 期末综合试题 2024-2025学年下期初中英语人教版七年级下册(新教材)
- 2025年全国新高考I卷高考全国一卷真题英语试卷(真题+答案)
- 高中生物学业水平合格性考试:人教版必修1+必修2必背考点
- 安全生产应急演练方案(合集)
- 2025江苏扬州宝应县“乡村振兴青年人才”招聘67人笔试模拟试题含答案详解
- 公共组织绩效评估-形考任务三(占10%)-国开(ZJ)-参考资料
- 2025年广东高中学业水平合格性考试化学试卷试题(含答案解析)
- JT∕T 795-2023 事故汽车修复技术规范
评论
0/150
提交评论