微机原理课程设计报告数据采集系统三中断法综述文档格式.docx

上传人:b****8 文档编号:22484634 上传时间:2023-02-04 格式:DOCX 页数:21 大小:139.23KB
下载 相关 举报
微机原理课程设计报告数据采集系统三中断法综述文档格式.docx_第1页
第1页 / 共21页
微机原理课程设计报告数据采集系统三中断法综述文档格式.docx_第2页
第2页 / 共21页
微机原理课程设计报告数据采集系统三中断法综述文档格式.docx_第3页
第3页 / 共21页
微机原理课程设计报告数据采集系统三中断法综述文档格式.docx_第4页
第4页 / 共21页
微机原理课程设计报告数据采集系统三中断法综述文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

微机原理课程设计报告数据采集系统三中断法综述文档格式.docx

《微机原理课程设计报告数据采集系统三中断法综述文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计报告数据采集系统三中断法综述文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

微机原理课程设计报告数据采集系统三中断法综述文档格式.docx

量纲转换模块在中断服务程序内完成,只要将IN0的数字量分别除以51,商存入显示IN0的个位存储单元;

余数乘以十,再除以51,商存入十分位存储单元;

余数再乘以十,除以51,若余数大于25,则商加1,小于25则舍去,这样就达到四舍五入的精度,再把商存入百分位存储单元;

以供七段数码管显示时调用,BCD码转换模块可参考图10所示的流程图。

(4)数码管显示模块

数码管显示模块比较简单,自编程序可参考实验指导书图1-6所示的流程图,也可参考实验8255并行口中的显示模块,应注意的是在显示个位时,要加上小数点的显示,这可以在查表获取个位段码后,再加上80H来实现,注意每一位显示后要适当延迟时间。

(5)中断服务子程序模块

考虑到0832的输出是0809IN1的输入,因此,为防止在执行中断服务子程序时,二次进入中断服务子程序,故在进入中断服务子程序后,应关闭中断,而在退出中断前开中断,以便下次中断进入。

中断服务子程序模块主要完成对IN0数据的读取和保存,对IN1的启动和读取,对IN0数据的BCD转换等任务。

1、程序流程图

数据采集三主程序流程图如图4-3-2所示;

中断服务子程序如图4-3-3所示。

数码管显示子程序流程图如图3-4-7所示,键盘扫描流程图如图4-3-4所示。

图4-3-2数据采集三主程序流程图

图4-3-4键盘扫描程序流程图

六、试验所遇问题及解决方法

问题:

在转动电位器,始终没有反应,电路也检查多遍。

分析:

电路连接可能存在不稳定性,也有可能是机器有些损坏啥的。

解决方法:

换了个微机实验机器,然后把线路很稳定的连接,转动电位器终于出现正确的反应。

七、心得体会及建议

体会:

通过这次微机原理的课程设计,实验制作,让我了解了设计电路的程序,也让我了解了关于数据采集系统三(中断法)的原理和设计理念,加强了自身动手、思考和解决问题的能力。

在此次的数据采集设计过程中,我更进一步的熟悉了机箱的结构及掌握了各芯片的工作原理和其具体的使用方法,巩固和加强了课本知识。

认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。

通过课程设计,我真正领悟到了“苦中作乐”这词的真正含义,设计连接电路确实有些辛苦,但是还是很有乐趣的,当一个一个的问题被自己发现,然后自己一步一步的按照实验原理去解决问题,知道最后完全解决问题之后,一种难以言明的喜悦心情和成就感瞬间充斥整个大脑和身体,我想这也算是课程设计的乐趣所在了。

通过这次课程设计我还知道了,理论与实际相结合是和重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来才能更好的提高我们的能力,更好更全面地发展我们的各项能力,可以说,这次课程设计,我受益匪浅。

建议:

1.希望老师们能在上课期间增加必要的试验箱器件知识,同时在课外增加一些汇编语言在生活中应用的相关知识介绍,帮助学生提高工程意识,在后期学习当中有一种将知识运用于实践的思想。

2.希望老师可以提前布置和安排微机原理课设的任务,老师们也知道,一方面;

我们也可以多多准备一下,另一方面,随着期末考试的紧逼,后续课程的复习也是大家要付出很多时间的。

以上两点建议希望老师们能接纳,先谢谢老师了。

八、源程序

;

*************回车宏定义*********

CRLFMACRO

MOVDL,0DH

MOVAH,02H

INT21H;

宏定义了回车

ENDM

*********端口地址定义***********

Y0EQU3000H;

片选Y0对应的端口始地址,0809,0832

Y2EQU3040H;

片选Y2对应的端口始地址

IN1EQUY0+01H*4

ADCSEQUY0;

AD0809的端口地址

DACSEQUY2;

DAC0832的端口地址

Y3EQU3060H

TIMER0EQUY3+00H*4;

8254计数器0端口地址,8254

TIMER1EQUY3+01H*4;

8254计数器1端口地址

TIMER2EQUY3+02H*4;

8254计数器2端口地址

TCTLEQUY3+03H*4;

8254控制寄存器端口地址

Y1EQU3020H;

片选Y1对应的端口始地址,8255

PA55EQUY1+00H*4;

8255的A口地址

PB55EQUY1+01H*4;

8255的B口地址

PC55EQUY1+02H*4;

8255的C口地址

PCTLEQUY1+03H*4;

8255的控制寄存器地址

INTR_IVADDEQU01C8H;

INTR对应的中断矢量地址,8259

INTR_OCW1EQU0A1H;

INTR对应PC机内部8259的OCW1地址

INTR_OCW2EQU0A0H;

INTR对应PC机内部8259的OCW2地址

INTR_IMEQU0FBH;

INTR对应的中断屏蔽字

Y7EQU30E0H;

片选Y7对应的端口始地址

MY8259_ICW1EQUY7+00H;

实验系统中8259的ICW1端口地址

MY8259_ICW2EQUY7+04H;

实验系统中8259的ICW2端口地址

MY8259_ICW3EQUY7+04H;

实验系统中8259的ICW3端口地址

MY8259_ICW4EQUY7+04H;

实验系统中8259的ICW4端口地址

MY8259_OCW1EQUY7+04H;

实验系统中8259的OCW1端口地址

MY8259_OCW2EQUY7+00H;

实验系统中8259的OCW2端口地址

MY8259_OCW3EQUY7+00H;

实验系统中8259的OCW3端口地址

*********************************堆栈段定义****************************************

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

*********堆栈段定义*****************************************************************

DATASEGMENT

DCTBLDB3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh;

数码管的段码表

DB77h,7Ch,39h,5Eh,79h,71h,00H

NDB2

IN0INDB?

IN1OUTDB?

A3DB?

BDB3DUP(?

D1DB0AH

E1DB33H

FLAGDB?

MES4DB0DH,0AH,'

++++++WELCOMETOWEIJIYUANLIKESHE:

++++++'

0DH,0AH,'

$'

MES0DB0DH,0AH,'

********DATACOLECTIONSYSTEM********'

MES1DB0DH,0AH,'

------------ZUOZHE:

LIUJINGANDWANGZHIMING'

MESSDB0DH,'

PRESSANYKEYTOENDTHESYSTEM!

'

0DH,0AH,0DH,0AH,'

MES2DB0DH,'

IN1OUTDATA:

$'

0DH,'

CS_BAKDW?

;

保存INTR原中断处理程序入口段地址的变量

IP_BAKDW?

保存INTR原中断处理程序入口偏移地址的变量

IM_BAKDB?

保存INTR原中断屏蔽字的变量

DATAENDS

*********代码段定义***********

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK1,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,10000000B;

8255初始

MOVDX,PCTL

OUTDX,AL

MOVDX,OFFSETMES4

MOVAH,9;

显示MES4

INT21H

MOVDX,OFFSETMES0

显示MES0

MOVDX,OFFSETMES1

显示MES1

INT21H

MOVDX,OFFSETMESS

显示MESS

CLI;

8259初始

MOVAX,0000H

MOVES,AX;

替换INTR的中断矢量

MOVDI,INTR_IVADD;

保存INTR原中断处理程序入口偏移地址

MOVAX,ES:

[DI]

MOVIP_BAK,AX

MOVAX,OFFSETMYISR;

设置当前中断处理程序入口偏移地址

MOVES:

[DI],AX

ADDDI,2

[DI];

保存INTR原中断处理程序入口段地址

MOVCS_BAK,AX

MOVAX,SEGMYISR;

设置当前中断处理程序入口段地址

[DI],AX

MOVDX,INTR_OCW1;

设置中断屏蔽寄存器,打开INTR的屏蔽位

INAL,DX;

保存INTR原中断屏蔽字

MOVIM_BAK,AL

ANDAL,INTR_IM;

允许PC机内部8259的IR2中断

OUTDX,AL

MOVDX,MY8259_ICW1;

初始化实验系统中8259的ICW1

MOVAL,13H;

边沿触发、单片8259、需要ICW4

MOVDX,MY8259_ICW2

MOVAL,08H;

初始化实验系统中8259的ICW2

MOVDX,MY8259_ICW4;

初始化实验系统中8259的ICW4

MOVAL,01H;

非自动结束EOI

MOVDX,MY8259_OCW3

MOVAL,0AH

OUTDX,AL

MOVDX,MY8259_OCW1;

初始化实验系统中8259的OCW1

MOVAL,0FCH;

打开IR0的屏蔽位

OUTDX,AL

MOVDX,TCTL;

8254初始

MOVAL,17H

MOVDX,TIMER0;

MOVAL,2

OUTDX,AL

STI

S33:

MOVAL,0

MOVDX,ADCS;

启动0809IN0

MOVFLAG,0FFH

CALLDISPINT0

MOVDX,OFFSETMES2

显示MES2

MOVAL,IN1OUT

CALLDISPINT1

MOVDL,0FFH

MOVAH,6

INT21H

JZS33

QUIT:

CLI

MOVAX,0000H;

恢复INTR原中断矢量

MOVES,AX

恢复INTR原中断处理程序入口偏移地址

MOVAX,IP_BAK

MOVAX,CS_BAK;

恢复INTR原中断处理程序入口段地址

MOVDX,INTR_OCW1

MOVAL,IM_BAK;

恢复INTR原中断屏蔽寄存器的屏蔽字

EXIT:

MOVAH,4CH;

返回到DOS

INT21H

***********************数码管显示INT1****************************

DISPINT1PROC

PUSHAX

MOVBL,AL;

屏幕显示

ANDAL,0F0H

MOVCL,4;

显示高位

RORAL,CL

CALLCRT1

MOVAL,BL

ANDAL,0FH;

显示低位

CRLF

POPAX

RET

DISPINT1ENDP

CRT1PROC

ADDAL,30H

CMPAL,39H

JBED0

ADDAL,7;

在屏幕上显示一位16进制字符

D0:

MOVDL,AL

MOVAH,2

INT21H

RET

CRT1ENDP

***********************数码管显示INT0****************************

DISPINT0PROC

PUSHDS

MOVAL,IN0IN;

转换IN0个位十分位百分位

MOVAH,0

DIVE1

MOVSI,OFFSETB

MOV[SI],AL

MOVAL,AH

MULD1

INCSI

CMPAH,19H

JNBES11

MOVAL,0

JMPS2

S11:

INCAL

S2:

MOV[SI],AL

MOVCL,8;

从最左边开始显示

MOVSI,OFFSETB

MOVAL,[SI]

LEABX,DCTBL

XLAT;

输出段码

ADDAL,80H

MOVDX,PB55

MOVDX,PA55

MOVAL,CL;

输出位码

CALLDELAY

INCSI;

段码地址+1

ROLCL,1;

位码向左移1位

XLAT

CALLDELAY

MOVAL,[SI]

CALLDELAY;

输出三位码

MOVSI,OFFSETB

MOVAL,[SI]

CMPAL,2

JBA2

MOVDX,PC55

MOVAL,0FFH

JMPG3

A2:

MOVDX,PC55

MOVAL,00H

8254计数器1控制蜂鸣器

MOVAL,77H

MOVDX,TIMER1;

MOVAL,00

MOVAL,01

G3:

POPAX

POPDS

DISPINT0ENDP

MYISRPROCNEAR;

中断处理程序MYISR

PUSHAX

PUSHDX

关中断

INAL,DX

ANDAL,03H

CMPAL,01H

JEIROISR

JMPOVER

IROISR:

CMPFLAG,0FFH

JES

MOVDX,IN1

MOVIN1OUT,AL;

A2为IN1AD后的值

S:

MOVDX,ADCS

INAL,DX

MOVIN0IN,AL;

A1为IN0

MOVAH,0

DIVN;

IN0AD后线性转换给0832的值

NEGAL

ADDAL,80H

MOVBL,AL

CMPBL,40H

JBSS1

SUBBL,4

SS1:

MOVAL,BL

MOVA3,AL

MOVDX,DACS

MOVDX,IN1;

启动IN1

MOVAL,0

MOVFLAG,AL

OVER:

MOVDX,INTR_OCW2;

向PC机内部8259发送中断结束命令

MOVAL,20H

OUT20H,AL

STI

POPDX

POPAX

IRET

MYISRENDP

DELAYPROCNEAR;

延时

PUSHCX

MOVCX,0FFFFH

LOOP$

POPCX

DELAYENDP

CODEENDS

ENDSTART

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

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

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