安徽工业大学微机原理与接口技术实验报告下.docx

上传人:b****6 文档编号:6667903 上传时间:2023-01-08 格式:DOCX 页数:25 大小:186.46KB
下载 相关 举报
安徽工业大学微机原理与接口技术实验报告下.docx_第1页
第1页 / 共25页
安徽工业大学微机原理与接口技术实验报告下.docx_第2页
第2页 / 共25页
安徽工业大学微机原理与接口技术实验报告下.docx_第3页
第3页 / 共25页
安徽工业大学微机原理与接口技术实验报告下.docx_第4页
第4页 / 共25页
安徽工业大学微机原理与接口技术实验报告下.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

安徽工业大学微机原理与接口技术实验报告下.docx

《安徽工业大学微机原理与接口技术实验报告下.docx》由会员分享,可在线阅读,更多相关《安徽工业大学微机原理与接口技术实验报告下.docx(25页珍藏版)》请在冰豆网上搜索。

安徽工业大学微机原理与接口技术实验报告下.docx

安徽工业大学微机原理与接口技术实验报告下

《微机原理与接口技术实验报告下》

 

 

指导教师:

陆勤

 

姓名:

程少锋

 

学号:

139074366

 

班级:

物联网131班

 

实验三8253、8255、8259综合实验

1.8253计数器实验

要求:

计数器1方式0计数,计满3个数产生中断,中断5次后结束。

实验线路见图6-6:

图6-68253计数器实验电路图

实验程序:

INTPORT1EQU0FF80H;8259A的偶地址入口

INTPORT2EQU0FF81H;8259A的偶地址入口

INTQ3EQUINTREEUP3;INTREEUP3地址

TCONTR0EQU0043H;8253端口地址

TCON1EQU0041H;8253端口地址

PAEQU0FF20H;字位口

PBEQU0FF21H;字形口

PCEQU0FF22H;键入口

codesegment

assumecs:

code

ORG12D0H;源地址

START:

JMPSTART0;跳转到START0

BUFDB?

?

?

?

?

?

;六字节缓冲区

intcntdb?

;一字节的缓冲区

data1

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h

db0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH;七段码定义

START0:

CLD;置方向位

CALLBUF1;调用子程序BUF1

CALLWRINTVER;WRITEINTRRUPT

MOVAL,13H;写ICW1,边沿触发,单片,需要ICW4

MOVDX,INTPORT1

OUTDX,AL

MOVAL,08H;ICW2,中断类型号高5位

MOVDX,INTPORT2

OUTDX,AL

MOVAL,09H;写ICW4,BUF位在缓冲方式下工作,8086/8088系统

OUTDX,AL

MOVAL,0F7H

OUTDX,AL

MOVintcnt,01H;TIME=1

MOVDX,TCONTR0;指向控制口

MOVAL,51H;8253控制字,通道1,方式0,只读/写低字节,BCD码计数

OUTDX,AL;送控制字

MOVDX,TCON1;指向控制口

MOVAL,03;计数值低字节

OUTDX,AL;送控制字

MOVDX,0FF23H;指向8255A控制口

MOVAL,80;A口方式0,输出,C口上半部输出,B口方式0,输出,C口下半部输出

OUTDX,AL;送控制字

STI;开中断

WATING:

CALLDISP;DISP825359

JMPWATING

WRINTVER:

MOVAX,0H

MOVES,AX

MOVDI,002CH;目的地址

LEAAX,INTQ3;INTQ3的偏移地址

STOSW;存字

MOVAX,0000h;清零

STOSW

RET;中断返回

INTREEUP3:

pushax;入栈

pushbx

pushcx

pushdx

MOVDX,TCON1;指向控制口

MOVAL,03;计数值低字节

OUTDX,AL

MOVAL,INTCNT

CALLCONVERS

MOVBX,OFFSETBUF

MOVAL,10H

MOVCX,05H;置循环数

INTRE0:

MOV[BX],AL;将Al中的值存在[BX]中

INCBX;BX加1

LOOPINTRE0;循环

ADDINTCNT,01H;循环数是五次

CMPINTCNT,06H

JNAINTRE2

CALLBUF2;DISP:

good

INTRE1:

CALLDISP

JMPINTRE1

CONVERS:

ANDAL,0FH;显示次数

MOVBX,offsetbuf

MOV[BX+5],AL

RET

INTRE2:

MOVAL,20H

MOVDX,INTPORT1

OUTDX,AL

popdx

popcx

popbx

popax

IRET;软中断返回

DISP:

MOVAL,0FFH;00H

MOVDX,PA;清零

OUTDX,AL

MOVCL,0DFH;20H

MOVBX,OFFSETBUF

DIS1:

MOVDX,PC

OUTDX,AL

MOVAL,[BX]

MOVAH,00H

PUSHBX

MOVBX,OFFSETDATA1

ADDBX,AX

MOVAL,[BX]

POPBX

MOVDX,PB

OUTDX,AL

MOVAL,CL

MOVDX,PA

OUTDX,AL

PUSHCX

DIS2:

MOVCX,00A0H

LOOP$

POPCX

CMPCL,0FEH;01H

JZLX1

INCBX

RORCL,1;SHRCL,1

JMPDIS1

LX1:

MOVAL,0FFH

MOVDX,PB

OUTDX,AL

RET

BUF1:

MOVBUF,08H

MOVBUF+1,02H

MOVBUF+2,05H

MOVBUF+3,03H

MOVBUF+4,05H

MOVBUF+5,09H

RET

BUF2:

MOVBUF,09H

MOVBUF+1,00H

MOVBUF+2,00H

MOVBUF+3,0dH

MOVBUF+4,10H

MOVBUF+5,10H

RET

CODEENDS

ENDSTART

思考:

如果计数器0方式0计数,计满5个数产生中断,中断3次后结束。

硬件软件如何修改?

硬件修改:

将连接在CLK1,GATE1,OUT1的连线改接到CLK0,GATE0,OUT0上。

程序修改:

将程序对应部分做如下修改

1、TCON1EQU0041H改为TCON1EQU0040H

2、将8253控制字由MOVAL,51H改为MOVAL,11H

3、计数值低字节将MOVAL,02改为MOVAL,04

4、将CMPINTCNT,06H改为CMPINTCNT,04H;

2、8253定时器实验

要求:

用8253定时器1通道定时,每隔1秒使PA口的指示灯的状态右移一位。

主程序反复游走显示8253-A。

8253定时器实验线路见图6-7:

图6-78253计数器实验电路图

实验程序:

CODESEGMENT;

ASSUMECS:

CODE

INTPORT1EQU0FF80H;8259A的偶地址入口

INTPORT2EQU0FF81H;8259A的奇地址入口

INTQ3EQUINTREEUP3

TCONTR0EQU0043H;8253端口地址

TCON1EQU0041H;8253端口地址

IOCONPTEQU0FF2BH;8255A 的端口地址

IOBPTEQU0FF29H;8255A 的端口地址

IOAPTEQU0FF28H;8255A 的端口地址

PAEQU0FF20H;字位口

PBEQU0FF21H;字形口

PCEQU0FF22H;键入口

ORG12D0H;源地址

START:

JMPSTART0

BUFDB?

?

?

?

?

?

;6字节缓冲区

intcntdb?

;1字节缓冲区

WEIKONGDB?

;1字节缓冲区

data1

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h

db0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH

START0:

CLD;置方向位

CALLBUF1

CALLWRINTVER;WRITEINTRRUPT

MOVAL,13H;写ICW1,边沿触发,单片,需要ICW4

MOVDX,INTPORT1

OUTDX,AL

MOVAL,08H;ICW2,中断类型号高5位

MOVDX,INTPORT2

OUTDX,AL

MOVAL,09H;写ICW4,BUF位在缓冲方式下工作,8086/8088系统

OUTDX,AL

MOVAL,0F7H

OUTDX,AL

MOVintcnt,50;软件计数50(1秒=20ms*50)

MOVDX,TCONTR0

MOVAL,74H;通道1,先读/写低字节,再读/写高字节,方式2,二进制数

OUTDX,AL

MOVDX,TCON1;计数器1定时20ms

MOVAX,40000

OUTDX,AL

MOVAL,AH;读入计数值的高字节

OUTDX,AL

MOVDX,0FF2BH

MOVAL,82H;A口方式0,输出,C口上半部输出,B口方式0,输入,C口下半部输出

OUTDX,AL

MOVWEIKONG,0FEH;初始PA0对应位亮

MOVAL,WEIKONG

MOVDX,0FF29H

OUTDX,AL

STI;开中断

WATING:

CALLDISP;DISP8253-A

JMPWATING

WRINTVER:

MOVAX,0H

MOVES,AX

MOVDI,002CH;目的地址

LEAAX,INTQ3;INTQ3的偏移地址

STOSW

MOVAX,0000h

STOSW

RET

INTREEUP3:

DECINTCNT;INTCNT减1

JNZINTRE2

MOVINTCNT,50

ROLWEIKONG,1

MOVDX,IOAPT

MOVAL,WEIKONG

OUTDX,AL

INTRE2:

MOVAL,20H

MOVDX,INTPORT1

OUTDX,AL

IRET;软中断返回

DISP:

MOVAL,0FFH;00H

MOVDX,PA

OUTDX,AL

MOVCL,0DFH;20H

MOVBX,OFFSETBUF

DIS1:

MOVDX,PC

OUTDX,AL

MOVAL,[BX]

MOVAH,00H

PUSHBX

MOVBX,OFFSETDATA1

ADDBX,AX

MOVAL,[BX]

POPBX

MOVDX,PB

OUTDX,AL

MOVAL,CL

MOVDX,PA

OUTDX,AL

PUSHCX

DIS2:

MOVCX,0000H

LOOP$

POPCX

CMPCL,0FEH;01H

JZLX1;相等转LX1

INCBX

RORCL,1;循环右移一位,指示灯又移变亮

JMPDIS1

LX1:

MOVAL,0FFH;指示灯全灭

MOVDX,PB

OUTDX,AL

RET

BUF1:

MOVBUF,08H

MOVBUF+1,02H

MOVBUF+2,05H

MOVBUF+3,03H

MOVBUF+4,17H

MOVBUF+5,0AH

RET

CODEENDS

ENDSTART

思考:

硬件修改:

将连接在CLK1,GATE1,OUT1的连线改接到CLK0,GATE0,OUT0上。

接在PB口的线与接在PA口的线互换。

软件修改:

按照下面对相应部分修改

1、TCON1EQU0041H改为TCON1EQU0040H

2、将MOVAL,74H改为MOVAL,34H;

3、将MOVAL,82H改为MOVAL,90H

4、将MOVWEIKONG,0FEH改为MOVWEIKONG,07FH

5、将MOVINTCNT,50改为MOVINTCNT,100

6、将MOVAL,WEIKONG改为MOVAL,WEIKONG

7、将ROLWEIKONG,1改为RORWEIKONG,1

8、将RORCL,1改为ROLCL,1

9、将MOVBUF+5,0AH改为MOVBUF+5,0BH

五、本次实验总结

实验过程中把学过的计算机编译原理以及操作系统的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

实验五A/D转换实验

一、实验目的

了解模/数转换基本原理,掌握ADC0809的使用方法;

掌握定时数据采集程序的编制方法。

二、实验内容

1、A/D转换实验

利用实验系统上电位器提供的可调电压作为0809模拟信号的输入,编制程序,将模拟量转换为数字量,通过数码管显示出来。

(1)实验接线图

ADC0809接线见图6-9

图6-9ADC0809接线图

(2)编程指南

ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:

MOVDX,ADPORT ; ADC0809端口地址

OUTDX,AL ;发CS和WR信号并送通道地址

用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。

MOVDX,ADPORT; ADC0809端口地址

IN AL,DX

循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。

(3)实验程序框图

A/D转换流程见图6-10

图6-10A/D转换流程

(4)实验步骤

①将0809CS4插孔连到译码输出FF80H插孔。

②将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(0-5V)插孔,8MHZ→T。

③运行实验程序,系统上显示“0809XX”。

“XX”表示输入模拟量转换后的数字量。

④调节电位器Wl,显示器上会不断显示新的转换结果。

模拟量和数字量对应关系的典型值为:

0V→00H+2.5V→80H+5V→FFH

⑤按RST键退出。

(5)实验程序清单

CODESEGMENT;

ASSUMECS:

CODE

ADPORTEQU0FF80h;8259A偶地址入口

PAEQU0FF20H;字位口

PBEQU0FF21H;字形口

PCEQU0FF22H;键入口

ORG1000H;源地址

START:

JMPSTART0;跳转到START0

BUFDB?

?

?

?

?

?

;定义6字节缓冲区

data1:

db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,

0c6h,0a1h;定义七段码

db86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH

START0:

CALLBUF1;调用BUF1子程序

ADCON:

MOVAX,00

MOVDX,ADPORT; ADC0809端口地址

OUTDX,AL;发CS和WR信号并送通道地址

MOVCX,0500H;置循环数

;DELAY:

LOOPDELAY;空循环,延时

MOVDX,ADPORT; ADC0809端口地址

INAL,DX

CALLCONVERS;调用子程序CONVERS

CALLDISP;调用显示子程序DISP

JMPADCON;跳转到ADCON

CONVERS:

MOVAH,AL;将ax中的低字节赋给高字节

ANDAL,0FH;保留al中的低四位

MOVBX,OFFSETBUF;buf的偏移地址

MOV[BX+5],AL;将al中的值给[Bx+5]

MOVAL,AH;取al中的高四位

ANDAL,0F0H

MOVCL,04H;值移位数

SHRAL,CL;右移四位

MOV[BX+4],Al;将Al中的值给[BX+4]

RET;返回

DISP:

MOVAL,0FFH;PA端口全置1,使其灯无显示MOVDX,PA

OUTDX,AL

MOVCL,0DFH;将0DFH给CL

MOVBX,OFFSETBUF;取BUF的偏移地址给BX

DIS1:

MOVAL,[BX];将[BX]中的内容取出给Al

MOVAH,00H

PUSHBX;BX入栈

MOVBX,OFFSETDATA1;取DATA1的偏移地址给BX

ADDBX,AX;BX与Ax相加

MOVAL,[BPBX];将[BX]的内容取到AL中

POPBX;BX出栈

MOVDX,PB;Al中得内容在PB端口输出

OUTDX,AL

MOVAL,CL;显示

MOVDX,PA

OUTDX,AL

PUSHCX;CX入栈

DIS2:

MOVCX,00A0H;循环00A0H次,延时

LOOP$

POPCX;CX出栈

CMPCL,0FEH;Cl与0FEH比较

JZLX1;Cl与00A0H相等,则程序跳转到LX1

INCBX ;BX自加1

RORCL,1;Cl循环左移1位

JMPDIS1;循环显示

LX1:

MOVAL,0FFH;PB端口清零

MOVDX,PB

OUTDX,AL

RET;中断返回

BUF1:

MOVBUF,00H

MOVBUF+1,08H

MOVBUF+2,00H

MOVBUF+3,09H

MOVBUF+4,00H

MOVBUF+5,00H

RET

CODEENDS

ENDSTART

2、数据采集实验

要求:

用8253定时器1通道定时,每隔半秒使从ADC0809的0通道IN0采集一个数据,若模拟电压在0-2V范围内(0-102),则使LED显示器L7-L4亮;若模拟电压大于2V,小于3V,则使L5-L2亮;若模拟电压大于等于3V,则使LED显示器L3-L0亮。

(主程序重复所采集的数据)

(1)实验接线图

数据采集实验系统接线图见图6-11

图6-11数据采集系统接线图

(2)程序流程图

主程序流程见图6-12

图6-12主程序流程图

中断服务程序流程见图6-13

图6-13中断服务程序流程

(3)实验程序清单

CODESEGMENT;

ASSUMECS:

CODE

INTPORT1EQU0FF80H;8259A偶地址入口

INTPORT2EQU0FF81H;8259A奇地址入口

INTQ3EQUINTREEUP3;中断源IR3地址

TCONTR0EQU0043H;8253端口地址

TCON1EQU0041H;8253端口地址

IOCONPTEQU0FF2BH

IOBPTEQU0FF29H

IOAPTEQU0FF28H

PAEQU0FF20H;字位口

PBEQU0FF21H;字形口

PCEQU0FF22H;键入口

ADPORTEQU0FE00H;ADC0809端口地址

ORG12D0H;源地址

START:

JMPSTART0;跳转到START0

BUFDB?

?

?

?

?

?

;定义6字节的缓冲区

intcntdb?

RESDB?

data1db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h

db0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH;

定义七段码

START0:

CLD;置方向位

CALLBUF1;调用BUF1

CALLWRINTVER;调用WRINTVER

MOVAL,13H;初始化ICW1,单片,边沿触发,设置ICW4

MOVDX,INTPORT1

OUTDX,AL

MOVAL,08H;写ICW2,允许IR3中断

MOVDX,INTPORT2

OUTDX,AL

MOVAL,09H;写ICW4,8259A在缓冲方式下工作,8086/8088系统

OUTDX,AL

MOVAL,0F7H;写OCW1,允许中断源IR3,其余均被屏蔽

OUTDX,AL

MOVintcnt,25

MOVDX,TCONTR0

MOVAL,74H;8253工作通道1,先读(写)低字节,再读(写)高字节,方式4,二进制计数

OUTDX,AL

MOVDX,TCON1

MOVAX,40000;8253初始值40000

OUTDX,AL

MOVAL,AH;写初值的高字节

OUTDX,AL

MOVDX,0FF2BH;8255初始化,PA口方式0,输出

MOVAL,82H

OUTDX,AL

STI;开中断

WATING:

CALLDISP;调用显示程序

JMPWATING;循环,延时

WRINTVER:

MOVAX,0H

MOVES,AX;ES指向AX

MOVDI,002CH;置DI初值为002CH

LEAAX,INTQ3;取INTQ3的初值

STOSW

MOVAX,0000h

STOSW

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

当前位置:首页 > 解决方案 > 学习计划

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

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