8255并行口实验 8259中断实验(一) 8253定时/计数器实验 实验体会四.8255 并行口实验 1.实验目的: (1)学习利用并行接口芯片8255 构成并行接口电路的基本 方法 (2)熟悉掌握并行接口芯片8255 的基本性能及在时间应用 中的硬件连接、初始化编程方法 2.实验内容: 编写程序,使8255 的PB 口为输出口,PA 口为输入口, 从PA 口将K0~K7 作为一个字节读入,在从PB 口输出这一 反码字节。 3.实验程序: CODE SEGMENT ASSUME CS:CODE START: MOV DX,21BH ;8255 初始化命令字 MOV AL,90H OUT DX,AL BG: MOV DX,218H ;从PA 口读入数据 AL,DXXOR AL,FFH ;求反 MOV DX,219H OUT DX,AL ;从PB 口输出 JMP BG CODE ENDS END START 4.实验框图 实验电路图6.实验方法说明 通过8255 控制字设定 PA 口为输入口,PB 口为数据输 出口,读取 PA 口的数值并通过求反指令将数据取反后,经由PB 口输出。 8259 中断实验(一) 1.实验目的: (1)了解PC 机的中断结构及8259 中断控制器的初始化 (2)熟悉8259 中断控制器的工作原理和硬件连线方法 (3)了解8259 的应用和硬件编程方法 了解8259 中断屏蔽 2.实验内容: 编写中断实验程序,主程序使8255 的PB口为输出口, 输出0FFH,L0~L7 指示灯全亮,中断服务程序从PB 口输出 0FFH,L0~L3 亮,L4~L7 灭,并延时一段时间后返回主程序。 3.实验程序 INT0 EQU 220h INT1 EQU 221h P8255B EQU 219H P8255K EQU 21BH STACK SEGMENT STA DB 50 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START: CLI MOV AX,TOP MOV SP,AX PUSH DS MOV AX,0000H ;定义IRQ0 中断 MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,0000H MOV SI,20H MOV [SI],AX MOV AX,CS MOV SI,22H MOV [SI],AX POP DS MOV AL,13H ;对8259 进行初始化ICW1 MOV DX,INT0 OUT DX,AL MOV AL,8 ;对8259 进行初始化ICW2 MOV DX,INT1 OUT DX,AL MOV CX,0FFFFH LOOP MOVAL,9 ;对8259 进行初始化ICW4 MOV DX,INT1 OUT DX,AL MOV CX,0FFFFH LOOP MOVDX,INT1 MOV AL,0FEH ;对8259 进行初始化OCW1 OUT DX,AL MOV CX,0FFFFH LOOP MOVDX,INT0 ;对8259 进行初始化OCW2,普通EOI 返回 MOV AL,20H OUT DX,AL MOV CX,0FFFFH LOOP STIMOV DX,P8255K ;对8255 进行初始化 MOV AL,90H OUT DX,AL DSP: MOV AL,0FFH MOV DX,P8255B OUT DX,AL JMP DSP IRQ0: STI MOV CX,0FFFFH LOOP MOVAL,0FH MOV DX,P8255B OUT DX,AL MOV DX,INT0 MOV AL,20H OUT DX,AL MOV CX,0FFFFH LOOP MOVCX,0FFFFH LOOP IRETCODE ENDS END START 4.实验框图 实验方法说明主程序使8255 输出高电平,实现L0~L7 指示灯全亮。 设置中断 IRQ0,实现 L0~L3 亮,L4~L7 灭,并延时一段时 间后返回主程序。将中断向量的入口地址写入后,通过对 8259 初始化命令字的写入,实现中断的调用。 六.8259 中断实验(二) 实验目的(1)了解PC 机的中断结构及8259 中断控制器的初始化 (2)熟悉8259 中断控制器的工作原理和硬件连线方法 (3)了解8259 的应用和硬件编程方法 (4)了解8259 中断屏蔽,以及优先级的判别等特性 2.实验内容: 编写中断实验程序,主程序使 8255 PB口为输出口, 输出0FFH,L0~L7 指示灯全亮,IR0 中断服务程序从PB 输出0FH,L0~L3灯亮,L4~L7 灯灭,并延时一段时间后返 回主程序。IR1 中断服务程序从PB 口输出0F0H,L0~L3 L4~L7亮,并延时一段时间后返回主程序。 3.实验程序 INT0 EQU 220h INT1 EQU 221h P8255B EQU 219H P8255K EQU 21BH STACK SEGMENT STA DB 50 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START: CLI MOV AX,TOP MOV SP,AX PUSH DS MOV AX,0000H ;设置中断向量IRQ0 MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,0000H MOV SI,20H MOV [SI],AX MOV AX,CS MOV SI,22H MOV [SI],AX MOV AX,0000H ;设置中断向量IRQ1 MOV DS,AX MOV AX,OFFSET IRQ1 ADD AX,0000H MOV SI,24H MOV [SI],AX MOV AX,CS MOV SI,26H MOV [SI],AX POP DS MOV AL,13H ;对8259 进行初始化ICW1 MOV DX,INT0 OUT DX,AL MOV AL,8 ;对8259 进行初始化ICW2 MOV DX,INT1 OUT DX,AL mov cx,0fffh loop MOVAL,9 ;对8259 进行初始化ICW4 MOV DX,INT1 OUT DX,AL mov cx,0fffh loop MOVDX,INT1 MOV AL,0FCH ;对8259 进行初始化OCW1 OUT DX,AL mov cx,0fffh loop MOVDX,INT0 MOV AL,20H 普通EOI返回 OUT DX,AL mov cx,0fffh loop STIMOV DX,P8255K ;对8255 进行初始化 MOV AL,90H OUT DX,AL DSP: MOV AL,0FFH MOV DX,P8255B OUT DX,AL JMP DSP IRQ0: STI MOV CX,0FFFFH LOOP MOVAL,0FH MOV DX,P8255B OUT DX,AL MOV DX,INT0 MOV AL,20H OUT DX,AL mov cx,0FFFFH LOOP movcx,0FFFFH LOOP IRETIRQ1: STI mov cx,0FFFFH LOOP MOVAL,0F0H MOV DXP8255B OUT DX,AL MOV DX,INT0 MOV AL,20H OUT DX,AL mov cx,0FFFFH LOOP movcx,0FFFFH LOOP IRETcode ends end start 4.实验框图 实验方法说明主程序使8255 输出高电平,实现L0~L7 指示灯全亮。 设置中断 IRQ0,实现 L0~L3 亮,L4~L7 灭,并延时一段时 间后返回主程序。设置中断 IRQ1,实现 L0~L3 灭,L4~L7 亮,并延时一段时间后返回主程序。将中断向量的入口地址 写入后,通过对8259 初始化命令字的写入,使8259 工作在 全嵌套方式下,中断优先级IRQ0 大于IRQ1,这样通过8259 对中断的判断来实现中断的响应。 七.8253 定时/计数器实验 1.实验目的: (1)了解定时器8253 的初始化及用法 (2)会用逻辑笔或示波器观察8253 的工作状态 实验内容:编写程序,使8253 工作的定时/计时器2 工作在方式3 3.实验程序:TIM_CTL EQU 203H TIMER0 EQU 200H TIMER1 EQU 201H TIMER2 EQU 202H MODE23 EQU 0B6H MODE13 EQU 76H CODE SEGMENT ASSUME CS:CODE START: TT: CLI MOV DX,TIM_CTL ;初始化8253 MOV AL,MODE23 OUT DX,AL MOV DX,TIMER2 ;先写低8 MOVAL,0FFh OUT DX,AL MOV AL,0FFh OUTDX,AL WT: JMP WT CODE ENDS END START 4.实验框图 5.实验电路 6.实验方法说明 设置 8253 计时器工作在方式 实现分频器功能,将实验箱上的频率Q0 经行65535 分频,再由OUT 口输出接到逻 辑笔,观察逻辑笔的变化。 转换实验1.实验目的: (1)了解模/数转换的工作原理 (2)掌握0809 的使用方法 2.实验内容: 编写程序,用0809 的IN0 通道采集数据并在数码管上显示 3.实验程序 B8279 EQU 212H D8279 EQU 210H LED0 EQU 00 LED1 EQU 38H DATA SEGMENT LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H DB 5EH,79H,71H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV DX,B8279 ;对8279 进行初始化 MOV AL,0D0H OUT DX,AL MOV CX,0FFFFH LOOP MOVDX,B8279 MOV AL,LED0 OUT DX,AL MOV AL,LED1 OUT DX,AL MOV DX,B8279 MOV AL,95H OUT DX,AL MOV DX,D8279 ;数码管显示 MOV AL,40H OUT DX,AL MOV DX,D8279 MOV AL,5eH OUT DX,AL MOV DX,D8279 MOV AL,77H OUT DX,AL TT: MOV DX,230H ;选通IN0 通道 OUT DX,AL MOV CX,0FFFFH LOOP MOVDX,B8279 MOV AL,83H OUT DX,AL MOV DX,230H AL,0FHLEA BX,LED XLAT MOV DX,D8279 OUT DX,AL MOV DX,B8279 MOV AL,84H OUT DX,AL MOV DX,230H AL,DXMOV CL,4H ROR AL,CL AL,0FHLEA BX,LED XLAT MOV DX,D8279 OUT DX,AL JMP TT CODE ENDS END START 4.实验框图 5.实验电路图 6.实验方法说明 通过 转换接口芯片0809 实现模拟量到数据量的转 变,并通过键盘显示芯片8279 将转换后的数据量显示出来。 步进电机实验 1.实验目的: (1)了解步进电机的工作原理,以及脉冲分配概念 (2)掌握计算机控制步进电机的方法 2.实验内容 编写程序,通过8255 控制步进电机的旋转 3.实验程序 CODE SEGMENT ASSUME CS:CODE START: MOV DX,21BH ;8255 初始化 MOV AL,90H OUT DX,AL BG: MOV DX,218H AL,DXCMP AL,01H JNZ C2 MOV BX,0FFFFH JMP WORK C2: CMP AL,02H JNZ C4 MOV BX,07FFFH JMP WORK C4: CMP AL,04H JNZ C8 MOV BX,0FFFH JMP WORK C8: CMP AL,08H JNZ CC MOV BX,07FFH JMP WORK CC: MOV AL,00H MOV DX,219H OUT DX,AL JMP BG WORK: MOV AL,01H MOV DX,219H OUT DX,AL MOV CX,BX LOOP MOVAL,03H MOV DX,219H OUT DX,AL MOV CX,BX LOOP MOVAL,02H MOV DX,219H OUT DX,AL MOV CX,BX LOOP MOVAL,06H MOV DX,219H OUT DX,AL MOV CX,BX LOOP MOVAL,04H MOV DX,219H OUT DX,AL MOV CX,BX LOOP MOVAL,0CH MOV DX,219H OUT DX,AL MOV CX,BX LOOP MOVAL,08H MOV DX,219H OUT DX,AL MOV CX,BX LOOP MOVAL,09H MOV DX,219H OUT DX,AL MOV CX,BX LOOP JMPBG CODE ENDS END START 4.实验框图 5.实验电路图 6.实验方法说明 初始化8255 PA口为输入口,PB 口为输出口,通过 判别 PA 口的数据来使步进电机工作在不同的状态。步进电 机的旋转由 OUT 指令控制,实现步进电机按照预定指令旋 十.综合实验:十字路口交通灯实验