微机原理与接口技术综合实验电子钟实验报告_第1页
微机原理与接口技术综合实验电子钟实验报告_第2页
微机原理与接口技术综合实验电子钟实验报告_第3页
微机原理与接口技术综合实验电子钟实验报告_第4页
微机原理与接口技术综合实验电子钟实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理综合实验:电子钟 实验要求8253每1s产生中断请求给8259,中断服务程序利用8255控制数码管,构建一个电子钟。一、 实验原理(相关芯片大致介绍)1.82548254 是Intel 公司生产的可编程间隔定时器,是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能:(1)有3 个独立的16 位计数器。(2)每个计数器可按二进制或十进制(BCD)计数。(3)每个计数器可编程工作于6 种不同工作方式。(4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。(5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还

2、可以读出状态寄存器的内容。(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:n=fCLKifOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。2.8259Intel公司专为控制优先级中断而设计开发的芯片,包括中断源优先级排队、辨别中断源以及提供中断矢量的电路,无需附加任何电路,用户只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式。同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达64 级的矢量中断系统。管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,

3、向CPU 传送中断类型号。3.8255并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。8255 可编程外围接口芯片是Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0-基本输入/输出方式、方式1-选通输入/输出方式、方式2-双向选通工作方式。二、 设计方案 :初始化各芯片,选定工作方式。 :使用功能调用获取当前时间,作为初值装入。 :8254芯片开始计数,每隔1s产生一个中断信号。 :8259芯片接受到中断信号

4、,并传给cpu,cpu响应中断。 :返回到循环执行。 :添加子程序,判断当有按键按下时,终止计时。三、 接线设计8255 PA0PA7,PB0PB7数码管显示8259IQ18253OUT18.432KHZ853CLK+5V8253GATE四、 源代码CS0 EQU 3000H ;片选CS0对应的端口始地址CS2 EQU 3040H ;片选CS2对应的端口始地址MY8255_A EQU CS0+00H ;8255的A口地址MY8255_B EQU CS0+01H ;8255的B口地址MY8255_C EQU CS0+02H ;8255的C口地址MY8255_MODE EQU CS0+03H ;8

5、255的控制寄存器地址MY8254_COUNT0 EQU CS2+00H ;8254计数器0端口地址MY8254_MODE EQU CS2+03H ;8254控制寄存器端口地址IRQ_IVADD EQU 01C8H ;IRQ10对应的中断矢量地址IRQ_OCW1 EQU 0A1H ;IRQ10对应PC机内部8259的OCW1地址IRQ_OCW2 EQU 0A0H ;IRQ10对应PC机内部8259的OCW2地址IRQ_IM EQU 0FBH ;IRQ10对应的中断屏蔽字STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTCS_CHU

6、SHI DW ? ;保存IRQ10原中断处理程序入口段地址的变量IP_CHUSHI DW ? ;保存IRQ10原中断处理程序入口偏移地址的变量IM_CHUSHI DB ? ;保存IRQ10原中断屏蔽字的变量HOUR DB 0MINUTE DB 0SECOND DB 0DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDS ;键值表,0F对应的7段数码管的段位值CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX

7、CLI ;清除中断标志位 MOV AX,0000H ;替换IRQ10的中断矢量 MOV ES,AX MOV DI,IRQ_IVADD MOV AX,ES:DI MOV IP_CHUSHI,AX ;保存IRQ10原中断处理程序入口偏移地址 MOV AX,OFFSET MYISR MOV ES:DI,AX ;设置当前中断处理程序入口偏移地址 ADD DI,2 MOV AX,ES:DI MOV CS_CHUSHI,AX ;保存IRQ10原中断处理程序入口段地址 MOV AX,SEG MYISR MOV ES:DI,AX ;设置当前中断处理程序入口段地址 MOV DX,IRQ_OCW1 ;设置中断屏蔽

8、寄存器,打开IRQ10的屏蔽位 IN AL,DX MOV IM_CHUSHI,AL ;保存IRQ10原中断屏蔽字 AND AL,IRQ_IM OUT DX,AL MOV AH,2CH ;获取现在的时间 INT 21H MOV second,DH MOV MINUTE,CL MOV HOUR,CH STI MOV SI,3000H ;建立缓冲区,存放要显示的键值 MOV AL,00H ;先初始化键值为0 MOV SI,AL MOV SI+1,AL MOV SI+2,AL MOV SI+3,AL MOV SI+4,AL MOV SI+5,AL MOV DI,3005H MOV DX,MY8255_

9、MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A口、B口输出,C口低4位输入 OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,34H ;计数器0,方式2 OUT DX,AL MOV DX,MY8254_COUNT0 ;装入计数初值 MOV AL,0FFH OUT DX,AL MOV AL,0FFH ;18432分频 OUT DX,AL BEGIN: CALL DIS ;显示刷新 CALL CLEAR ;清屏 CALL GETTIME ;有键按下则跳置GETKEY1 MOV AH,1 ;判断PC键盘是否有按键按下 INT 1

10、6H JZ BEGIN ;无按键则跳回继续循环,有则退出 QUIT: CLI MOV AX,0000H ;恢复IRQ10原中断矢量 MOV ES,AX MOV DI,IRQ_IVADD MOV AX,IP_CHUSHI ;恢复IRQ10原中断处理程序入口偏移地址 MOV ES:DI,AX ADD DI,2 MOV AX,CS_CHUSHI ;恢复IRQ10原中断处理程序入口段地址 MOV ES:DI,AX MOV DX,IRQ_OCW1 ;恢复IRQ10原中断屏蔽寄存器的屏蔽字 MOV AL,IM_CHUSHI OUT DX,AL STI MOV DX,MY8254_MODE ;退出时8254

11、为方式2,OUT0置0 MOV AL,10H OUT DX,AL MOV AX,4C00H INT 21H GETTIME PROC NEAR CALL DIS ;显示刷新 CALL DELAY CALL DELAY CALL CLEAR ;清屏 MOV AL,HOUR MOV AH,0 MOV CL,10 DIV CL MOV SI,3005H MOV SI,AL DEC SI MOV SI,AH MOV AL,MINUTE MOV AH,0 MOV CL,10 DIV CL DEC SI MOV SI,AL DEC SI MOV SI,AH MOV AL,SECOND MOV AH,0 M

12、OV CL,10 DIV CL DEC SI MOV SI,AL DEC SI MOV SI,AH RETGETTIME ENDP MYISR PROC NEAR ;中断处理程序MYISR PUSH AX PUSH DX MOV AX,DATA MOV DS,AX INC SECOND ;秒加1 MOV AL,SECOND CMP AL,60 ;秒数与60比较 JNE OVER MOV SECOND,0 ;秒清零 INC MINUTE ;分加1 MOV AL,MINUTE CMP AL,60 ;分数与60比较 JNE OVER MOV MINUTE,0 ;分清零 INC HOUR ;时加1 M

13、OV AL,HOUR CMP AL,60 ;时数与24比较 JNE OVER MOV HOUR,0 ;时清零 OVER: MOV DX,IRQ_OCW2 ;向PC机内部8259发送中断结束命令 MOV AL,20H OUT DX,AL MOV AL,20H OUT 20H,AL POP DX POP AX IRETMYISR ENDPCLEAR PROC NEAR ;清除数码管显示子程序MOV DX,MY8255_B ;段位置0即可清除数码管显示 MOV AL,00HOUT DX,AL RETCLEAR ENDPDIS PROC NEAR ;显示子程序 PUSH AX ;以缓冲区存放的值为键值

14、表偏移找到值并显示 MOV SI,3000H MOV DL,0DFH MOV AL,DLAGAIN: PUSH DXMOV DX,MY8255_A OUT DX,AL ;设置X1X6,选通一个数码管 MOV AL,SI ;取出缓冲区中存放的值 MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,AX MOV AL,BX ;将键值作为偏移和键值基地址相加得到相应的键值 MOV DX,MY8255_B OUT DX,AL ;写入数码管ADp CALL DELAY INC SI ;取下一个值POP DXMOV AL,DL TEST AL,01H ;判断是否显示完?JZ OUT1 ;显示完,返回 ROR AL,1 MOV DL,AL JMP AGAIN ;未显示完,跳回继续OUT1: POP AX RETDIS ENDPPUTBUF PROC NEAR ;保存键值子程序 MOV SI,DI MOV SI,AL DEC DI CMP DI,2FFFH JN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论