手机版

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

发布时间:2024-11-17   来源:未知    
字号:

实验一 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 SEGMENT ; display "DICE88" ASSUME CS:CODE

ORG 2DF0H

START: JMP START0

PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF 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,0F0H

START0: CALL BUF1 CON1: CALL DISP

JMP CON1

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

MOV CL,0DFH 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 CODE ENDS

;00H

;显示子程序 ,5ms ;01H ;00H ;SHR CL,1 ;实验修改 mov buf,0ah

;实验修改mov buf+4,00h ;实验修改mov,buf+5,09h

END START 六、思考题:

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

STOSW MOV DI,003CH LEA AX,INTQ7 STOSW MOV AX,0000h STOSW RET INTREEUP5: CLI push ax push bx push

cx push dx MOV AL,INTCNT CALL CONVERS MOV BX,OFFSET BUF MOV AL,10H MOV CX,05H INTRE0: MOV [BX],AL INC BX LOOP INTRE0 MOV AL,20H MOV DX,INTPORT1 OUT DX,AL ADD INTCNT,01H CMP INTCNT,06H JNA INTRE2 CALL BUF2 INTRE1: CALL DISP JMP INTRE1 CONVERS: AND AL,0FH MOV BX,offset buf MOV [BX+5],AL RET INTRE2: MOV AL,20H MOV DX,INTPORT1 OUT DX,AL pop dx pop cx pop bx pop ax STI IRET INTREEUP7: CLI MOV AL,20H

;077BH

;DISP:good

;077AH

MOV DX,INTPORT1 OUT DX,AL call buf3 INTRE5: CALL DISP JMP INTRE5 DISP: MOV AL,0FFH MOV DX,PA OUT DX,AL MOV CL,0DFH 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 INC BX ROR CL,1 JMP DIS1 LX1: MOV AL,0FFH MOV DX,PB OUT DX,AL RET BUF1: MOV BUF,08H MOV BUF+1,02H MOV BUF+2,05H MOV BUF+3,09H MOV BUF+4,17H MOV BUF+5,01H RET BUF2: MOV BUF,09H MOV BUF+1,00H

;disp:err

;00H

;20H ;显示子程序 ,5ms

;01H

;SHR CL,1

实验三 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 MOV DX,TCONTR0;指向控制口

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

OUT DX,AL;送控制字

MOV DX,TCON1;指向控制口 MOV AL,03;计数值低字节 OUT DX,AL;送控制字

MOV DX,0FF23H;指向8255A控制口

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

OUT DX,AL;送控制字

STI; 开中断

WATING: CALL DISP ;DISP 825359 JMP WATING WRINTVER: MOV AX,0H MOV ES,AX

MOV DI,002CH;目的地址

LEA AX,INTQ3;INTQ3的偏移地址 STOSW;存字

MOV AX,0000h;清零 STOSW

RET;中断返回 INTREEUP3: push ax;入栈 push bx push cx push dx

MOV DX,TCON1;指向控制口 MOV AL,03;计数值低字节 OUT DX,AL MOV AL,INTCNT CALL CONVERS

MOV BX,OFFSET BUF MOV AL,10H

MOV CX,05H;置循环数

INTRE0: MOV [BX],AL;将Al中的值存在[BX]中 INC BX;BX加1 LOOP INTRE0;循环

ADD INTCNT,01H;循环数是五次 CMP INTCNT,06H JNA INTRE2

CALL BUF2 ;DISP:good INTRE1: CALL DISP JMP INTRE1

CONVERS: AND AL,0FH;显示次数 MOV BX,offset buf MOV [BX+5],AL RET

INTRE2: MOV AL,20H

MOV DX,INTPORT1 OUT DX,AL pop dx pop cx pop bx pop ax

IRET;软中断返回

DISP: MOV AL,0FFH ;00H MOV DX,PA;清零 OUT DX,AL

MOV CL,0DFH ;20H MOV BX,OFFSET BUF DIS1: MOV DX,PC OUT DX,AL 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 ;01H JZ LX1 INC BX

ROR CL,1 ;SHR CL,1 JMP DIS1 LX1: MOV AL,0FFH MOV DX,PB OUT DX,AL RET

BUF1: MOV BUF,08H MOV BUF+1,02H MOV BUF+2,05H MOV BUF+3,03H MOV BUF+4,05H MOV BUF+5,09H RET

BUF2: MOV BUF,09H MOV BUF+1,00H MOV BUF+2,00H MOV BUF+3,0dH MOV BUF+4,10H MOV BUF+5,10H RET CODE ENDS END START

思考:计数器0方式0计数,计满5个数产生中断,中断3次后结束。 1、将8253控制字由MOV AL,51H改为 MOV AL,11H 2、计数值低字节将 MOV AL,03改为MOV AL,05 3、将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,边沿触发,单片,需要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,50 ;软件计数50(1秒=20ms*50) MOV DX,TCONTR0 MOV AL,74H;通道1,先读/写低字节,再读/写高字节,方式2,二进制数 OUT DX,AL

MOV DX,TCON1 ;计数器1定时20ms MOV AX,40000 OUT DX,AL

MOV AL,AH;读入计数值的高字节 OUT DX,AL

MOV DX,0FF2BH

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

OUT DX,AL

MOV WEIKONG, 0FEH ;初始PA0对应位亮 MOV AL, WEIKONG MOV DX, 0FF29H OUT DX,AL STI ;开中断

WATING: CALL DISP ;DISP 8253-A JMP WATING WRINTVER: MOV AX,0H MOV ES,AX

MOV DI,002CH;目的地址

LEA AX,INTQ3;INTQ3的偏移地址 STOSW

MOV AX,0000h STOSW RET

INTREEUP3: DEC INTCNT;INTCNT减1 JNZ INTRE2 MOV INTCNT, 50 ROL WEIKONG, 1 MOV DX, IOAPT MOV AL, WEIKONG OUT DX,AL INTRE2: MOV AL,20H

MOV DX,INTPORT1 OUT DX,AL

IRET;软中断返回

DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL

MOV CL,0DFH ;20H MOV BX,OFFSET BUF DIS1: MOV DX,PC OUT DX,AL 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,0000H LOOP $ POP CX

CMP CL,0FEH ;01H JZ LX1;相等转LX1 INC BX

ROR CL,1 ;循环 右移一位,指示灯又移变亮 JMP DIS1

LX1: MOV AL,0FFH;指示灯全灭 MOV DX,PB OUT DX,AL RET

BUF1: MOV BUF,08H MOV BUF+1,02H MOV BUF+2,05H MOV BUF+3,03H MOV BUF+4,17H MOV BUF+5,0AH RET CODE ENDS

END START

思考::用8253定时器0通道定时,每隔1秒使PA口的指示灯的状态左移一位。主程序反复游走显示8253-B。

1、将MOV AL,74H改为MOV AL,34H; 2、将ROR CL,1 改为ROL CL,1

3、将MOV BUF+5,0AH改为MOV BUF+5,0CH

实验五 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 +5V→FFH ⑤ 按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,使其灯无显示 MOV DX,PA

OUT DX,AL

MOV CL,0DFH ;将0DFH给CL MOV BX,OFFSET BUF;取BUF的偏移地址 给BX DIS1: MOV AL,[BX];将[BX]中的内容取出给Al

MOV AH,00H

PUSH BX;BX入栈

MOV BX,OFFSET DATA1;取DATA1的偏移地址给BX ADD BX,AX;BX与Ax相加

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

POP BX;BX出栈

MOV DX,PB;Al中得内容在PB端口输出 OUT DX,AL

MOV AL,CL;显示 MOV DX,PA OUT DX,AL

PUSH CX;CX入栈

DIS2: MOV CX,00A0H;循环00A0H次,延时 LOOP $

POP CX;CX出栈

CMP CL,0FEH;Cl 与0FEH比较 JZ LX1 ;Cl与00A0H相等,则程序跳转到LX1 INC BX ;BX自加1

ROR CL,1;Cl循环左移1位 JMP DIS1;循环显示

LX1: MOV AL,0FFH;PB端口清零

MOV DX,PB OUT DX,AL RET;中断返回 BUF1: MOV BUF,00H MOV BUF+1,08H MOV BUF+2,00H MOV BUF+3,09H MOV BUF+4,00H MOV BUF+5,00H RET CODE ENDS END START

2、数据采集实验

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

(主程序重复所采集的数据) (1)实验接线图

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

微机原理与接口技术实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)