微机原理与接口实验报告

微 机 原 理 与 接 口 实 验 报 告

专业班级: 学 号: 姓 名: 指导老师: 陆勤

实验一 8255A应用—数码管动态显示

一、实验目的

1、掌握8255A的工作方式、编程原理和微机接口方法。 2、了解LED数码管动态显示的工作原理及编程方法。 二、实验内容

编制程序,使数码管显示“DICE88”字样。 三、实验程序框图

图6-1 实验程序流程图

四、实验步骤

联机模式:

(1)在PC机和实验系统联机状态下,运行实验系统dj8086k.exe(双击桌面OTA图标或通过开始-程序-dj8086k-DJ8086k微机原理与接口技术),新建文件并在编辑窗口输入汇编源程序,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)数码管显示“DICE88”字样。

脱机模式:

(1)在P.态下,通过单板机小键盘,从2DF0地址开始输入机器码(参见附录三),完成后返回监控,输入起始地址2DF0,再按EX键执行。

(2)数码管显示“DICE88”字样。 五、实验程序清单

CODE

START:

SEGMENT ; display

PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF DB ?,?,?,?,?,?

data1:

db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H,89h,0c1h,87h ;修改89h、0c1h、87h各自对应:H、U、t

ASSUME CS:CODE

START0: CALL BUF1 CON1: DISP:

CALL DISP JMP CON1

MOV AL,0FFH MOV DX,PA OUT DX,AL

MOV CL,0DFH ;显示子程序 ,5ms

;00H

MOV BX,OFFSET BUF

DIS1:

MOV AL,[BX] MOV AH,00H PUSH BX

MOV BX,OFFSET DATA1

ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL

PUSH CX DIS2:

MOV CX,00A0H

LOOP $ POP CX CMP CL,0FEH JZ LX1

MOV AL,0FFH

MOV DX,PA OUT DX,AL INC BX

ROR CL,1 JMP DIS1 LX1: MOV AL,0FFH

MOV DX,PB OUT DX,AL

RET

BUF1:

MOV BUF,0DH

MOV BUF+1,01H MOV BUF+2,0CH MOV BUF+3,0EH MOV BUF+4,08H MOV BUF+5,08H

RET

;01H

;00H

;SHR CL,1 ;实验修改 mov BUF,0Ah 实验修改 mov BUF+1,16h 实验修改 mov BUF+2,17h 实验修改 mov BUF+3,18h ;实验修改mov BUF+4,00h ;实验修改mov BUF+5,09h

; ; ;

CODE ENDS END START 六、思考题:

修改程序使之可以显示其他字符,如“AHUt09”。

见上面程序修改部分

七、实验遇到的难点:

刚开始对发光二极管的控制不到位,总是与想要显示的不相符,后来理解了编码方式后,能够对二极

管有一个很好的控制,之后我还自己编写并显示了“I LOVE U”,觉得挺有趣的

实验二 8259单级中断控制器实验

一、实验目的

1.掌握8259中断控制器的接口方法。 2.掌握8259中断控制器的应用编程。 二、实验内容 三、实验接线图

利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。

图6-2 实验二接线图

四、编程指南

⑴ 8259芯片介绍

中断控制器8259A是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

⑵ 本实验中使用3号中断源IR3, “

”插孔和IR3相连,中断方式为边沿触发方式,每拨1

次AN开关产生一次中断,满5次中断,显示“good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。 五、实验程序框图

图6-3 主程序流程 图6-4 IR3中断服务程序流程

IR3中断服务程序: IR7中断服务程序:

图6-5 IR7中断服务流程

六、实验步骤

1、按图6-2连好实验线路图。

⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“

号中断IR3插孔相连,“

”端初始为低电平;⑷8259的CS端接FF80H孔。

;键入口

”插孔和8259的3

2、输入并运行实验程序,系统显示8259-1。 3、按动AN开关按钮, 按满5次显示good。 七、实验程序清单

CODE

;

INTPORT1 EQU 0FF80H INTPORT2 EQU 0FF81H INTQ3 INTQ7

EQU INTREEUP3 EQU INTREEUP7

;字位口 ;字形口

SEGMENT

ORG 12D0H

START: JMP START0 BUF DB ?,?,?,?,?,? intcnt db ? data1:

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

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

ASSUME CS: CODE

PA EQU 0FF20H PB EQU 0FF21H PC EQU 0FF22H

八、思考题:

若用IR5产生中断,要求修改硬件和软件并调试,修改位置

硬件修改:将连接到8259的IR3线连接到IR5

软件修改:在IR5所对应的中断向量的字段中写入中断程序的入口地址,并修改8259A的OCW1 命

令字指定IR5开放中断。

(1)START0中修改为:

MOV DX,INTPORT2 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0DFH OUT DX,AL MOV intcnt,01

......

(2)WRINTVER中修改为: WRINTVER:

.....

MOV DI,0034H LEA AX,INTQ3 ......

实验八8250 串口实验

一、实验目的

(1)系统扩展以8250 为核心的可编程串行异步通讯接口芯片。 (2)对扩展的串行通讯接口实现自发自收。 二、实验内容

将寄存器AH 的内容从10H 开始通过8250 发送、接收,每次收发后AH 的内 容自动增1 直到FFH 为止,同时将每次接收到的数据,依次写到内存4000H~ 40EFH 单元中,实现自发自收。 三、编程指南 1、通讯协议

1 个起始位,8 位数据位,1 个停止位,波特率:4800。 2、8250 的内部寄存器的端口地址

* 通讯线控制寄存器第7 位(DLAB)=0 ,** DLAB=1 3、8250 的内部寄存器格式(见课本)

4、波特率除数锁存器的值与波特率的对应关系(16 进制数) 5、8250 的初始化编程 (1)设置波特率 (2)设置通讯数据格式 (3)设置操作方式 (4)设置中断允许寄存器 四、实验接线图 五、实验步骤

1.连FF80H 孔到CS7,连TXD 到RXD(8250 实验区)。 2.编辑、调试、运行程序。

3.当系统显示“8250——good”表示自发自收结束,按RST 键,系统返回 P 态,用内存读写命令检查4000H~40EFH 内容是否为10H~FFH,验证其正确性。 六、参考程序

CODE SEGMENT ;H8250.ASM ASSUME CS: CODE ;H8250.ASM DATA EQU 0ff80H ;BTS-LSB MSB EQU 0ff81H LINE EQU 0ff83H LSTAT EQU 0ff85H PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 29A0H;源地址

START: JMP START0;跳转到START0 BUF DB ?,?,?,?,?,?;定义6字节缓冲区 data1: db

MOV DX,DATA ;ff80H OUT DX,AL

MOV DX,MSB;置波特率因子高8位

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

c6h,0a1h;定义七段码 db

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

START0: MOV AL,80H ;DLAB=1 MOV DX,LINE OUT DX,AL

MOV AL,18H ;BTS=4800;置波特率因子低8

思考题

如果使用通讯协议:

1 个起始位,7 位数据位,2 个停止位,波特率:9600。系统将如何实现。 解决方案:

将以下部分 MOV AL,18H MOV DX,DATA OUT DX,AL MOV DX,MSB MOV AL,00 OUT DX,AL MOV AL,03H MOV DX,LINE OUT DX,AL

改为: MOV AL,0CH MOV DX,DATA ;ff80H

OUT DX,AL MOV DX,MSB MOV AL,00 OUT DX,AL MOV AL,06H MOV DX,LINE OUT DX,AL

实验五 A/D转换实验

一、实验目的

了解模/数转换基本原理,掌握ADC0809的使用方法; 掌握定时数据采集程序的编制方法。 二、实验内容

1、A/D转换实验

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

(1) 实验接线图 ADC0809接线见图6-9

图6-9 ADC0809接线图

(2)编程指南

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

MOV DX,ADPORT ; ADC0809端口地址

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

用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。 MOV DX,ADPORT ; ADC0809端口地址 IN AL,DX

循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。 (3)实验程序框图 A/D转换流程见图6-10

图6-10 A/D转换流程

(4)实验步骤

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

② 将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(0-5V)插孔,8MHZ→T。 ③ 运行实验程序,系统上显示“0809 XX”。“XX”表示输入模拟量转换后的数字量。 ④ 调节电位器Wl, 显示器上会不断显示新的转换结果。 模拟量和数字量对应关系的典型值为: 0V→00H +2.5V→80H ⑤ 按RST键退出。 (5)实验程序清单

CODE SEGMENT ; ASSUME CS:CODE

ADPORT EQU 0FF80h ;8259A偶地址入口

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 1000H ;源地址

START: JMP START0 ;跳转到START0 BUF DB ?,?,?,?,?,? ;定义6字节缓冲区

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

0c6h,0a1h ;定义七段码

db

86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: CALL BUF1 ;调用BUF1子程序 ADCON: MOV AX,00 MOV DX,ADPORT ; ADC0809端口地址

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

MOV CX,0500H ;置循环数

;DELAY: LOOP DELAY ;空循环,延时 MOV DX,ADPORT ; ADC0809端口地址

IN AL,DX

CALL CONVERS;调用子程序CONVERS

CALL DISP ;调用显示子程序DISP

JMP ADCON ;跳转到ADCON CONVERS: MOV AH,AL;将 ax中的低字节赋给高字节 AND AL,0FH ;保留al中的低四位

MOV BX,OFFSET BUF;buf的偏移地址

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

MOV AL,AH ;取al中的高四位 AND AL,0F0H

MOV CL,04H ;值移位数 SHR AL,CL;右移四位

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

RET;返回 DISP: MOV AL,0FFH ;PA端口全置1,使其灯无显示

+5V→FFH

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)实验程序清单

思考题:如果改用DAC0832的输出(比如:产生近似正弦输出)作为ADC0809的输入,并将采集值在数码管上显示出来。硬件和软件应如何修改? 解决方案:

1.硬件修改:将DAC0832采用单缓冲方式工作,Vout接ADC0809的IN0。

2.程序修改:给DAC0832设定地址,根据连线可以设定为。设为DAC1,DAC2,在程序头部声明. 设置正弦数据区:BUFSIN db 128,88,53,24,6,06,24,53,88,128,168,203,232, db 250,255,232,203,168

最后再在主程序后添加如下程序:

GENERATESINWAVE: Mov si,offset buf MOV DX,DAC1 Mov cx,20 OUTPUT: MOV AL,[SI]

OUT DX,AL INC SI

LOOP OUTPUT JMP GENERATESINWAVE

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

1.8253计数器实验

要求:计数器1方式0计数,计满3个数产生中断,中断5次后结束。 实验线路见图6-6:

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

实验程序:

INTPORT1 EQU 0FF80H ;8259A的偶地址入口

INTPORT2 EQU 0FF81H ;8259A的偶地址入口

INTQ3 EQU INTREEUP3 ;INTREEUP3地址 TCONTR0 EQU 0043H ;8253端口地址 TCON1 EQU 0041H ;8253端口地址 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 code segment

assume cs:code

ORG 12D0H ;源地址

START: JMP START0 ; 跳转到START0 BUF DB ?,?,?,?,?,? ;六字节缓冲区 intcnt db ? ;一字节的缓冲区 data1 db

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

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

START0: CLD;置方向位

CALL BUF1 ;调用子程序BUF1 CALL WRINTVER ;WRITE INTRRUPT

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

MOV DX,INTPORT1 OUT DX,AL MOV AL,08H;ICW2,中断类型号高5位

MOV DX,INTPORT2 OUT DX,AL

MOV AL,09H;写ICW4,BUF位在缓

冲方式下工作,8086/8088系统

OUT DX,AL MOV AL,0F7H OUT DX,AL MOV intcnt,01H ;TIME=1

硬件修改:将连接在CLK1,GATE1,OUT1的连线改接到CLK0,GATE0,OUT0上。 程序修改:将程序对应部分做如下修改

1、TCON1 EQU 0041H改为TCON1 EQU 0040H

2、将8253控制字由MOV AL,51H改为 MOV AL,11H 3、计数值低字节将 MOV AL,02改为MOV AL,04 4、将CMP INTCNT,06H改为CMP INTCNT,04H;

2、8253定时器实验

要求:用8253定时器1通道定时,每隔1秒使PA口的指示灯的状态右移一位。主程序反复游走显示8253-A。

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

图6-7 8253计数器实验电路图

实验程序:

CODE SEGMENT ; ASSUME CS:CODE INTPORT1 EQU 0FF80H;8259A的偶地址入口

INTPORT2 EQU 0FF81H;8259A的奇地址入口

INTQ3 EQU INTREEUP3

TCONTR0 EQU 0043H;8253端口地址 TCON1 EQU 0041H;8253端口地址 IOCONPT EQU 0FF2BH;8255A 的端口地址

IOBPT EQU 0FF29H;8255A 的端口地址

IOAPT EQU 0FF28H;8255A 的端口地址

PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口

ORG 12D0H;源地址 START: JMP START0

BUF DB ?,?,?,?,?,?;6字节缓冲区 intcnt db ? ;1字节缓冲区 WEIKONG DB ? ;1字节缓冲区 data1 db

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

db

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

START0: CLD;置方向位 CALL BUF1 CALL WRINTVER ;WRITE INTRRUPT

MOV AL,13H;写ICW1,边沿触发,

示8253-B。

解决方案:

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

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

软件修改:按照下面对相应部分修改

1、TCON1 EQU 0041H改为TCON1 EQU 0040H

2、将MOV AL,74H改为MOV AL,34H;

3、将MOV AL,82H改为MOV AL,90H

4、将MOV WEIKONG, 0FEH 改为MOV WEIKONG, 07FH

5、将MOV INTCNT, 50改为MOV INTCNT, 100

6、将MOV AL, WEIKONG改为MOV AL, WEIKONG

7、将ROL WEIKONG, 1改为ROR WEIKONG, 1

8、将ROR CL,1 改为ROL CL,1

9、将MOV BUF+5,0AH改为MOV BUF+5,0BH

实验感想:

这个就自己随便写写吧O(∩_∩)O~

微 机 原 理 与 接 口 实 验 报 告

专业班级: 学 号: 姓 名: 指导老师: 陆勤

实验一 8255A应用—数码管动态显示

一、实验目的

1、掌握8255A的工作方式、编程原理和微机接口方法。 2、了解LED数码管动态显示的工作原理及编程方法。 二、实验内容

编制程序,使数码管显示“DICE88”字样。 三、实验程序框图

图6-1 实验程序流程图

四、实验步骤

联机模式:

(1)在PC机和实验系统联机状态下,运行实验系统dj8086k.exe(双击桌面OTA图标或通过开始-程序-dj8086k-DJ8086k微机原理与接口技术),新建文件并在编辑窗口输入汇编源程序,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)数码管显示“DICE88”字样。

脱机模式:

(1)在P.态下,通过单板机小键盘,从2DF0地址开始输入机器码(参见附录三),完成后返回监控,输入起始地址2DF0,再按EX键执行。

(2)数码管显示“DICE88”字样。 五、实验程序清单

CODE

START:

SEGMENT ; display

PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF DB ?,?,?,?,?,?

data1:

db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H,89h,0c1h,87h ;修改89h、0c1h、87h各自对应:H、U、t

ASSUME CS:CODE

START0: CALL BUF1 CON1: DISP:

CALL DISP JMP CON1

MOV AL,0FFH MOV DX,PA OUT DX,AL

MOV CL,0DFH ;显示子程序 ,5ms

;00H

MOV BX,OFFSET BUF

DIS1:

MOV AL,[BX] MOV AH,00H PUSH BX

MOV BX,OFFSET DATA1

ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL

PUSH CX DIS2:

MOV CX,00A0H

LOOP $ POP CX CMP CL,0FEH JZ LX1

MOV AL,0FFH

MOV DX,PA OUT DX,AL INC BX

ROR CL,1 JMP DIS1 LX1: MOV AL,0FFH

MOV DX,PB OUT DX,AL

RET

BUF1:

MOV BUF,0DH

MOV BUF+1,01H MOV BUF+2,0CH MOV BUF+3,0EH MOV BUF+4,08H MOV BUF+5,08H

RET

;01H

;00H

;SHR CL,1 ;实验修改 mov BUF,0Ah 实验修改 mov BUF+1,16h 实验修改 mov BUF+2,17h 实验修改 mov BUF+3,18h ;实验修改mov BUF+4,00h ;实验修改mov BUF+5,09h

; ; ;

CODE ENDS END START 六、思考题:

修改程序使之可以显示其他字符,如“AHUt09”。

见上面程序修改部分

七、实验遇到的难点:

刚开始对发光二极管的控制不到位,总是与想要显示的不相符,后来理解了编码方式后,能够对二极

管有一个很好的控制,之后我还自己编写并显示了“I LOVE U”,觉得挺有趣的

实验二 8259单级中断控制器实验

一、实验目的

1.掌握8259中断控制器的接口方法。 2.掌握8259中断控制器的应用编程。 二、实验内容 三、实验接线图

利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。

图6-2 实验二接线图

四、编程指南

⑴ 8259芯片介绍

中断控制器8259A是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

⑵ 本实验中使用3号中断源IR3, “

”插孔和IR3相连,中断方式为边沿触发方式,每拨1

次AN开关产生一次中断,满5次中断,显示“good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。 五、实验程序框图

图6-3 主程序流程 图6-4 IR3中断服务程序流程

IR3中断服务程序: IR7中断服务程序:

图6-5 IR7中断服务流程

六、实验步骤

1、按图6-2连好实验线路图。

⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“

号中断IR3插孔相连,“

”端初始为低电平;⑷8259的CS端接FF80H孔。

;键入口

”插孔和8259的3

2、输入并运行实验程序,系统显示8259-1。 3、按动AN开关按钮, 按满5次显示good。 七、实验程序清单

CODE

;

INTPORT1 EQU 0FF80H INTPORT2 EQU 0FF81H INTQ3 INTQ7

EQU INTREEUP3 EQU INTREEUP7

;字位口 ;字形口

SEGMENT

ORG 12D0H

START: JMP START0 BUF DB ?,?,?,?,?,? intcnt db ? data1:

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

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

ASSUME CS: CODE

PA EQU 0FF20H PB EQU 0FF21H PC EQU 0FF22H

八、思考题:

若用IR5产生中断,要求修改硬件和软件并调试,修改位置

硬件修改:将连接到8259的IR3线连接到IR5

软件修改:在IR5所对应的中断向量的字段中写入中断程序的入口地址,并修改8259A的OCW1 命

令字指定IR5开放中断。

(1)START0中修改为:

MOV DX,INTPORT2 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0DFH OUT DX,AL MOV intcnt,01

......

(2)WRINTVER中修改为: WRINTVER:

.....

MOV DI,0034H LEA AX,INTQ3 ......

实验八8250 串口实验

一、实验目的

(1)系统扩展以8250 为核心的可编程串行异步通讯接口芯片。 (2)对扩展的串行通讯接口实现自发自收。 二、实验内容

将寄存器AH 的内容从10H 开始通过8250 发送、接收,每次收发后AH 的内 容自动增1 直到FFH 为止,同时将每次接收到的数据,依次写到内存4000H~ 40EFH 单元中,实现自发自收。 三、编程指南 1、通讯协议

1 个起始位,8 位数据位,1 个停止位,波特率:4800。 2、8250 的内部寄存器的端口地址

* 通讯线控制寄存器第7 位(DLAB)=0 ,** DLAB=1 3、8250 的内部寄存器格式(见课本)

4、波特率除数锁存器的值与波特率的对应关系(16 进制数) 5、8250 的初始化编程 (1)设置波特率 (2)设置通讯数据格式 (3)设置操作方式 (4)设置中断允许寄存器 四、实验接线图 五、实验步骤

1.连FF80H 孔到CS7,连TXD 到RXD(8250 实验区)。 2.编辑、调试、运行程序。

3.当系统显示“8250——good”表示自发自收结束,按RST 键,系统返回 P 态,用内存读写命令检查4000H~40EFH 内容是否为10H~FFH,验证其正确性。 六、参考程序

CODE SEGMENT ;H8250.ASM ASSUME CS: CODE ;H8250.ASM DATA EQU 0ff80H ;BTS-LSB MSB EQU 0ff81H LINE EQU 0ff83H LSTAT EQU 0ff85H PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 29A0H;源地址

START: JMP START0;跳转到START0 BUF DB ?,?,?,?,?,?;定义6字节缓冲区 data1: db

MOV DX,DATA ;ff80H OUT DX,AL

MOV DX,MSB;置波特率因子高8位

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

c6h,0a1h;定义七段码 db

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

START0: MOV AL,80H ;DLAB=1 MOV DX,LINE OUT DX,AL

MOV AL,18H ;BTS=4800;置波特率因子低8

思考题

如果使用通讯协议:

1 个起始位,7 位数据位,2 个停止位,波特率:9600。系统将如何实现。 解决方案:

将以下部分 MOV AL,18H MOV DX,DATA OUT DX,AL MOV DX,MSB MOV AL,00 OUT DX,AL MOV AL,03H MOV DX,LINE OUT DX,AL

改为: MOV AL,0CH MOV DX,DATA ;ff80H

OUT DX,AL MOV DX,MSB MOV AL,00 OUT DX,AL MOV AL,06H MOV DX,LINE OUT DX,AL

实验五 A/D转换实验

一、实验目的

了解模/数转换基本原理,掌握ADC0809的使用方法; 掌握定时数据采集程序的编制方法。 二、实验内容

1、A/D转换实验

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

(1) 实验接线图 ADC0809接线见图6-9

图6-9 ADC0809接线图

(2)编程指南

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

MOV DX,ADPORT ; ADC0809端口地址

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

用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。 MOV DX,ADPORT ; ADC0809端口地址 IN AL,DX

循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。 (3)实验程序框图 A/D转换流程见图6-10

图6-10 A/D转换流程

(4)实验步骤

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

② 将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(0-5V)插孔,8MHZ→T。 ③ 运行实验程序,系统上显示“0809 XX”。“XX”表示输入模拟量转换后的数字量。 ④ 调节电位器Wl, 显示器上会不断显示新的转换结果。 模拟量和数字量对应关系的典型值为: 0V→00H +2.5V→80H ⑤ 按RST键退出。 (5)实验程序清单

CODE SEGMENT ; ASSUME CS:CODE

ADPORT EQU 0FF80h ;8259A偶地址入口

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 1000H ;源地址

START: JMP START0 ;跳转到START0 BUF DB ?,?,?,?,?,? ;定义6字节缓冲区

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

0c6h,0a1h ;定义七段码

db

86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: CALL BUF1 ;调用BUF1子程序 ADCON: MOV AX,00 MOV DX,ADPORT ; ADC0809端口地址

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

MOV CX,0500H ;置循环数

;DELAY: LOOP DELAY ;空循环,延时 MOV DX,ADPORT ; ADC0809端口地址

IN AL,DX

CALL CONVERS;调用子程序CONVERS

CALL DISP ;调用显示子程序DISP

JMP ADCON ;跳转到ADCON CONVERS: MOV AH,AL;将 ax中的低字节赋给高字节 AND AL,0FH ;保留al中的低四位

MOV BX,OFFSET BUF;buf的偏移地址

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

MOV AL,AH ;取al中的高四位 AND AL,0F0H

MOV CL,04H ;值移位数 SHR AL,CL;右移四位

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

RET;返回 DISP: MOV AL,0FFH ;PA端口全置1,使其灯无显示

+5V→FFH

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)实验程序清单

思考题:如果改用DAC0832的输出(比如:产生近似正弦输出)作为ADC0809的输入,并将采集值在数码管上显示出来。硬件和软件应如何修改? 解决方案:

1.硬件修改:将DAC0832采用单缓冲方式工作,Vout接ADC0809的IN0。

2.程序修改:给DAC0832设定地址,根据连线可以设定为。设为DAC1,DAC2,在程序头部声明. 设置正弦数据区:BUFSIN db 128,88,53,24,6,06,24,53,88,128,168,203,232, db 250,255,232,203,168

最后再在主程序后添加如下程序:

GENERATESINWAVE: Mov si,offset buf MOV DX,DAC1 Mov cx,20 OUTPUT: MOV AL,[SI]

OUT DX,AL INC SI

LOOP OUTPUT JMP GENERATESINWAVE

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

1.8253计数器实验

要求:计数器1方式0计数,计满3个数产生中断,中断5次后结束。 实验线路见图6-6:

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

实验程序:

INTPORT1 EQU 0FF80H ;8259A的偶地址入口

INTPORT2 EQU 0FF81H ;8259A的偶地址入口

INTQ3 EQU INTREEUP3 ;INTREEUP3地址 TCONTR0 EQU 0043H ;8253端口地址 TCON1 EQU 0041H ;8253端口地址 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 code segment

assume cs:code

ORG 12D0H ;源地址

START: JMP START0 ; 跳转到START0 BUF DB ?,?,?,?,?,? ;六字节缓冲区 intcnt db ? ;一字节的缓冲区 data1 db

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

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

START0: CLD;置方向位

CALL BUF1 ;调用子程序BUF1 CALL WRINTVER ;WRITE INTRRUPT

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

MOV DX,INTPORT1 OUT DX,AL MOV AL,08H;ICW2,中断类型号高5位

MOV DX,INTPORT2 OUT DX,AL

MOV AL,09H;写ICW4,BUF位在缓

冲方式下工作,8086/8088系统

OUT DX,AL MOV AL,0F7H OUT DX,AL MOV intcnt,01H ;TIME=1

硬件修改:将连接在CLK1,GATE1,OUT1的连线改接到CLK0,GATE0,OUT0上。 程序修改:将程序对应部分做如下修改

1、TCON1 EQU 0041H改为TCON1 EQU 0040H

2、将8253控制字由MOV AL,51H改为 MOV AL,11H 3、计数值低字节将 MOV AL,02改为MOV AL,04 4、将CMP INTCNT,06H改为CMP INTCNT,04H;

2、8253定时器实验

要求:用8253定时器1通道定时,每隔1秒使PA口的指示灯的状态右移一位。主程序反复游走显示8253-A。

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

图6-7 8253计数器实验电路图

实验程序:

CODE SEGMENT ; ASSUME CS:CODE INTPORT1 EQU 0FF80H;8259A的偶地址入口

INTPORT2 EQU 0FF81H;8259A的奇地址入口

INTQ3 EQU INTREEUP3

TCONTR0 EQU 0043H;8253端口地址 TCON1 EQU 0041H;8253端口地址 IOCONPT EQU 0FF2BH;8255A 的端口地址

IOBPT EQU 0FF29H;8255A 的端口地址

IOAPT EQU 0FF28H;8255A 的端口地址

PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口

ORG 12D0H;源地址 START: JMP START0

BUF DB ?,?,?,?,?,?;6字节缓冲区 intcnt db ? ;1字节缓冲区 WEIKONG DB ? ;1字节缓冲区 data1 db

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

db

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

START0: CLD;置方向位 CALL BUF1 CALL WRINTVER ;WRITE INTRRUPT

MOV AL,13H;写ICW1,边沿触发,

示8253-B。

解决方案:

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

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

软件修改:按照下面对相应部分修改

1、TCON1 EQU 0041H改为TCON1 EQU 0040H

2、将MOV AL,74H改为MOV AL,34H;

3、将MOV AL,82H改为MOV AL,90H

4、将MOV WEIKONG, 0FEH 改为MOV WEIKONG, 07FH

5、将MOV INTCNT, 50改为MOV INTCNT, 100

6、将MOV AL, WEIKONG改为MOV AL, WEIKONG

7、将ROL WEIKONG, 1改为ROR WEIKONG, 1

8、将ROR CL,1 改为ROL CL,1

9、将MOV BUF+5,0AH改为MOV BUF+5,0BH

实验感想:

这个就自己随便写写吧O(∩_∩)O~


相关文章

  • 微机原理实验步骤学生
  • 实验要求及步骤 一.遵守"微机原理实验室实验守则",严格执行各个要求. 二.实验前准备的内容:a .完成前次实验报告,b .本次实验的预习报告,c .实验用到的电路图.流程图.程序. 三.实验内容 1.软件实验步骤: D ...查看


  • [微机原理及应用]课程教学方法探讨
  • 摘要:对<微机原理及应用>课程的课堂教学和实验实践教学方法进行了探讨.针对课堂教学,从教学内容和课堂教育方法两方面进行了总结探讨.探索创新:针对实验实践,对实验内容和实验教学模式进行了大胆尝试. 关键词:微型原理及应用:教学方法 ...查看


  • 微机原理课程设计报告---抢答器的设计
  • <微机原理及接口技术> 课程设计报告 题目:竞赛抢答器的设计 学 院: 中北大学信息与通信工程 专 业: 小组成员: 指导教师: 丁永红 2008 年 06 月 23 日 1.设计目的 1)了解竞赛抢答器的设计原理和方法. 2) ...查看


  • 基于825x的几个相关实验包括课程设计
  • 实验 一 可编程并行接口 一. 实验目的 1. 掌握8255方式0的工作原理及使用方法 二. 实验内容 1. 实验电路如下图,8255C口接逻辑电平开关K0-K7,A口接LED显示电路L0- L7. 2. 编程从8255C口输入数据,再从A ...查看


  • 课程设计报告"9秒倒计时设计"
  • 沈 阳 工 程 学 院 微机原理及应用 课 程 设 计 课程设计题目:9秒倒计时设计 系 别 电气工程系 班级 发电本091 学生姓名 冀恩举 学号 2009205112 指导教师 曲乐声.踪念品 职称 讲师.讲师 起止日期: 2012年5 ...查看


  • 微机实验报告
  • 实验项目列表 LED实验 1.实验目的和要求 编写程序,以8255作为输出口,控制8个单色LED灯 2.实验原理 1.学习在PC系统中扩展简单I/O接口的方法. 2.了解如何使用WinDriver的界面读写硬件,验证硬件的正确性. 3.学习 ...查看


  • 微机原理流水灯的设计
  • ※※※※※※※※※ ※2008级学生微机原理 ※ ※ ※※※ 课程设计 ※※※※※ ※ ※ ※※ 微机原理课程设计报告书 课题名称 姓 名 学 号 院.系.部 专 业 指导教师 物理与电信工程系 电子信息工程 流水彩灯的设计 2010年 7 ...查看


  • 天津理工大学电气专业培养方案
  • 电气工程及其自动化专业培养计划 一.专业名称,代码 专业名称:电气工程及其自动化专业代码:080601 二.专业培养目标及基本要求 (一)培养目标 本专业为适应社会进步和科技发展对人才的需要,注重对学生综合素质的培养教育.培养具备电工技术. ...查看


  • 微机原理实验报告三 七段数码显示
  • 七段数码显示 一, 实验目的: 掌握接口芯片的编址方法,掌握8255的初始化设置,及数码管显示原理,掌握段控及位控的概念. 二, 实验内容: 1, 2, 3, 连接地址译码器与8255的接线及8255与数码管的连线. 在数据段中存放0到9的 ...查看


热门内容