文档库 最新最全的文档下载
当前位置:文档库 › 实验三 8259 8253 8255综合实验

实验三 8259 8253 8255综合实验

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

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

一.8253计数器实验

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

实验线路:

实验程序:

INTPORT1 EQU 0FF80H

INTPORT2 EQU 0FF81H

INTQ3 EQU INTREEUP3

TCONTR0 EQU 0043H

TCON1 EQU 0041H

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 12D0H

START: JMP 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

CALL WRINTVER ;WRITE INTRRUPT

MOV AL,13H

MOV DX,INTPORT1

OUT DX,AL

MOV AL,08H

MOV DX,INTPORT2

OUT DX,AL

MOV AL,09H

OUT DX,AL

MOV AL,0F7H

OUT DX,AL

MOV intcnt,01H ;TIME=1

MOV DX,TCONTR0

MOV AL,51H

OUT DX,AL

MOV DX,TCON1

MOV AL,03

OUT DX,AL

MOV DX,0FF23H

MOV AL,80

OUT DX,AL

STI

WATING: CALL DISP ;DISP 8259-1 JMP WATING

WRINTVER: MOV AX,0H

MOV ES,AX

MOV DI,002CH

LEA AX,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

INC BX

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,17H

MOV BUF+5,0AH

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

二、8253定时器实验

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

(主程序重复显示8253-A)

实验线路:

实验程序:

CODE SEGMENT ;H8259.ASM

ASSUME CS:CODE

INTPORT1 EQU 0FF80H

INTPORT2 EQU 0FF81H

INTQ3 EQU INTREEUP3

TCONTR0 EQU 0043H

TCON1 EQU 0041H

IOCONPT EQU 0FF2BH

IOBPT EQU 0FF29H

IOAPT EQU 0FF28H

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 12D0H

START: JMP START0

BUF DB ?,?,?,?,?,?

intcnt db ?

WEIKONG 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

CALL WRINTVER ;WRITE INTRRUPT

MOV AL,13H

MOV DX,INTPORT1

OUT DX,AL

MOV AL,08H

MOV DX,INTPORT2

OUT DX,AL

MOV AL,09H

OUT DX,AL

MOV AL,0F7H

OUT DX,AL

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

MOV DX,TCONTR0

MOV AL,74H

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

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

STOSW

MOV AX,0000h

STOSW

RET

INTREEUP3: DEC INTCNT

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

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

微机原理简单输入输出实验报告

东南大学 《微机实验及课程设计》 实验报告 实验四(1)简单输入输出 一. 实验目的与内容 (一)实验目的 1)进一步掌握TPC实验装置的基本原理和组成结构; 2)掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况; 3)掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能

和使用。 (二)实验内容及要求 1、输出接口输出,根据8个发光二极管发光的情况验证编程从键盘输入一个字符或数字,将其ASCII码通过正确性。(输出端口实验必做) 2、用逻辑电平开关预置某个字母的ASCII码,编程输入这个ASCII码,并将其对应字母在屏幕上显示出来。(输入端口实验必做) 3、利用基本实验(1)中的输出锁存电路,设计L0~L7为流水灯,流水间隔时间由软件产生。(输出端口实验) 4、利用基本实验(2)中的输入电路,监测逻辑电平开关K0~K7的变换,当开关状态为全开时,在屏幕上显示提示信息并结束程序。(输入端口实验) 要求: 1、输入输出端口应该可以响应外设的连续变化。 2、输出按ESC键退出;输入按任意键退出。 3、内容3、4比做一题,选做一题 二. 实验基本原理 (一)基本原理 简单并行输出实验:八D触发器74LS273的八个输入端接数据总线D0~D7,从键盘输入一个字符或数字,通过2A8H~输出接口输出该字符或者数字代表的ASCII码,再通过8个发光二极管发光显示二进制数码,从而验证编程以及电路的正确性。 简单并行输入实验:八缓冲器74LS244的八个输出端接数据总线D0~D7,8个输入端分别接逻辑电平开关K0~K7,在逻辑电平开关上预置任意字符的ASCII码,编程将此ASCII码通过2A0H~输入,ASCII码对应字符显示在屏幕上,从而验证编程及电路的正确性。 (二)实验接线图

8253定时器、计数器仿真实验报告

实验名称8253定时器/计数器仿真实验学生姓名 学生学号 专业班级 指导老师 2014-12-31

实验五8253定时器/计数器仿真实验 一、实验目的 1.针对特定的芯片,学会用Proteus ISIS设计仿真电路图; 2.掌握8253工作原理,对8253进行仿真; 3.了解电路一般仿真方法。 二、实验内容 1.配置Proteus仿真环境; 2.根据电路图,用合适的代码对其进行仿真。 三、实验步骤 1.安装Proteus和masm32编译器; 2.在Proteus里配置masm32编译器。配置过程如下: 图1 添加/移除代码生成工具(1) a)把masm32.bat 复制到c:\masm32\bin 里面(c:\masm32 为你自己安 装masm32的路径);

b)启动Proteus ISIS 后,选择菜单源代码——>设定代码生成工具。 打开如图1所示; c)点击“新建”,然后选择c:\masm32\bin\masm32.bat文件,就出现图 2; 图2 添加/移除代码生成工具(2) d)图中红圈位置分别填上ASM 和EXE。然后点确定。使用masm32 编 译器就配置好了。 3.在画好电路图后,选择菜单源代码——>添加/删除源文件。出现图3; 图3 添加/移除源代码(3) 4.代码生成工具选择masm32,然后点新建,创建自己的源代码。比如 8253.asm,点确定; 5.接下来点击源代码——>1.8253.asm,编辑自己的代码。完成后保存; 6.点击源代码——>全部编译。出现图4表示编译成功,表示程序可以执

行。 图4 代码成功编译 7.点击Proteus中的调试菜单的相应功能,完成仿真。 四、实验结果 1.仿真电路图如图5所示; 图5 8253仿真电路图

8253计数器定时器接口实验

微机原理实验报告 实验五 8253计数器/定时器接口实验 1.实验目的 1)学会通过PC总线、驱动器、译码器等在PC机外部扩充为新的芯片; 2)了解8253计数器/定时器的工作原理; 3)掌握8253初始化的程序设计; 4)掌握8253方式0的计数方式的使用方法和方式3方波产生的方法。 2.实验内容 将实验装置上的1片8253定时器/计数器接入系统,具体做两个内容的实验。 1)实验一:将8253的计数器0设置为工作于方式0,设定一个计数初值,用手 动逐个输入单脉冲,观察OUT0的电平变化。 硬件连接:断开电源,按图2-1将8253接入系统。具体包括: (1)将8253的CS接I/O地址输出端280H-287H; (2)将8253的计数器0的CLK0与单脉冲信号相连,以用来对单脉冲进行计数; (3)将8253的GATE0用专用导线接向+5V,以允许计数器0工作; (4)将8253的OUT0接到LED发光二极管,以显示8253计数器0的输出OUT0的 状态。 图2-1 8253实验一的连线图 2)实验二:将8253的计数器0、1均设置为工作于方式3(方波),按图2-2重 新接线。要求是当CLK0接1MHz时,OUT1输出1Hz的方波,OUT的输出由LED 显示出来。将计数器0与计数器1串联使用,计数器0的输出脉冲OUT0作为计数器1的时钟输入CLK1。

图2-2 8253实验二的连线图3.程序及框图 1)程序框图 图4-1给出了8253实验一的流程图。 图4-1 程序流程图 图4-2给出了8253实验二的流程图。 2)程序代码 实验一程序代码: CTRL EQU 283H TIME0 EQU 280H TIME1 EQU 281H DATA SEGMENT MESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDS CODE SEGMENT

汇编语言-实验五 输入输出程序设计

实验五输入输出程序设计 一、实验目的 1) 掌握输入输出程序的编写方法。 2) 熟悉系统功能调用的方法。 3) 熟悉动画程序的编写方法。 二、实验内容 1)在CRT上每隔一秒连续显示字符0-9。 编程提示 为了使输出的字符之间有空格,在每一个循环中输出一个0-9的字符和一个空格。为了输出0-9,置寄存器BL初值为0,每循环一次使其增量。为了保证输出是十进制,增量后用DAA调整指令。由于输出为一位十进制数,用AND 0FH 指令屏蔽高4位。 2)用系统功能调用将‘HELLO’由键盘输入,再从屏幕输出‘***HELLO***’。 3)编制在屏幕上画线的子程序,调用该子程序画一矩形。 4)编制字母下落一行的子程序,调用该子程序使字母从屏幕顶部下落到底部。 5)创建一磁盘文件,保存从键盘输入的字符串。 6)编写程序用设置系统时间,首先从键盘以十进制数形式输入时间,然后修改系统时间,并重新以十进制形式显示时间。 7)编写程序将屏幕分割成格状,每一格涂上不同颜色,格数从键盘输入。 8)编写程序在屏幕上显示菜单,输入相应菜单的序号后,选种该菜单项。 三、源程序 EXAM5-1 STACK SEGMENT STACK DB 1024 DUP(0)

STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START:MOV BL,0 LP:MOV DL,20H MOV AH, 2 INT 21H MOV AL,BL ADD AL, 0 DAA AND AL,0FH MOV BL,AL PUSH BX OR AL,30H MOV DL,AL MOV AH, 2 INT 21H MOV BX,3E8H LP2:MOV CX,176H ;延时1ms LP1:PUSHF POPF LOOP LP1 DEC BX JNZ LP2 POP BX INC BL JMP LP CODE ENDS END START 执行程序EXAM5-1·EXE,屏幕上依次循环显示一个数字一个空格: 0 1 2 3 4 5 6 7 8 9 …… EXAM5-2 STACK SEGMENT STACK DB 1024 DUP(0) STACK ENDS DA TA SEGMENT BUFF DB 6,7 DUP(?),‘$’ DA TA ENDS INPUT MACRO BUFE MOV DX,OFFSET BUFE MOV AH,0AH INT 21H ENDM

8255并口实验详解

xxxx大学计算机学院实验报告

一、实验内容与要求 1.1 实验内容 (1)8255方式0实验 从8255端口C输入数据,再从端口A输出 (2)8255方式1输出实验 编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断服务:依次输出01H,02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。 (3)8255方式1输入实验 编程实现:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。 1.2 实验要求 (1)8255方式0实验 实验预期效果:拨动逻辑开关,启动程序,开关打开的对应灯可以亮起。改变开关的状态,灯的亮暗也随之改变。 (2)8255方式1输出实验 实验预期效果:按一次单脉冲按钮,L0亮起;以后每按一次,后面的灯依次会亮起。中断8次结束。 (3)8255方式1输入实验 实验预期效果:每按一次单脉冲按钮读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。 二、实验原理与硬件连线 2.1 实验原理 CPU通过指令将控制字写入8255A的控制端口设置它的工作方式。8255A有两个控制字:方式选择控制字和端口C置位/复位控制字,这两个控制字均写入同一个控制端口地址(端口选择

先A1A0=11) 8255A有3种工作方式:方式0——基本输入/输出方式;方式1——选通输入/输出方式;方式2——双向传输方式。方向选择控制字用于设置各端口的工作方式。 方式0称为基本输入/输出方式。该方式下,端口A、端口B、端口C的高4位和端口C的低4位均可独立地设为输入或输出数据端口。在方式0时,8255A与CPU时间没有应答联络信号,可用于无条件传送或查询方式数据传送场合。采用查询方式传送时,可以将端口A、端口B 作为数据端口,用端口C存放外部设备状态信息,用于CPU查询。 方式1称为选通输入/输出方式。该方式下,端口A、端口B可作为数据传输口,而端口C 的一些引脚规定作为端口A、端口B的联络控制信号,有固定的搭配规定。在方式1时,CPU和8255A之间有应答联络信号,所以采用中断方式或程序查询方式传送数据。 当端口A作为方式1输入时,端口C的PC3、PC4、PC5作为端口A的联络控制信号。 当端口A作为方式1输出时,端口C的PC7、PC6、PC3作为端口A的联络控制信号。 状态字通过读端口C获得。需要强调,从端口C读出的状态字与端口C的外部引脚的状态无关。 2.2 硬件连线 (1)8255方式0实验1 连接实验电路,8255端口C接逻辑电平开关K0~K7,端口A接LED显示电路 L0~L7 U18 8255 K0 K1 K5 L0 L1 L2 L3 L4 L5 L6 L7图2-2-1 实验一接线

8255,8253交通灯模拟实验

微机原理课程设计——8255,8253交通灯模拟实验 文档介绍:交通信号灯的控制: 1.通过8255A并口来控制LED发光二极管的亮灭。 2.A口控制红灯,B口控制黄灯,C口控制绿灯。 3.输出为0则亮,输出为1则灭。 4.用8253定时来控制变换时间。 要求:设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁5次后,再切换到1、3路口方向。之后,重复上述过程。 系统原理 工作原理说明: 此方案是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。 如硬件连接图所示,红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30S定时到。OUT2产生1MHZ 方波通过或门和8255的B口共同控制黄

实验四 输入输出流程序设计

C++面向对象程序设计课程实验报告 课程名称C++面向对象程序设计班级实验日期2014.5.16-2012 .5.23 姓名学号实验成绩实验名称实验四输入输出流程序设计 实验目的及要求1.理解输入输出流的基本概念,明确流是一个类 2.了解输入输出流类库基本结构和主要类,掌握主要层次,其中重 点理解fstream,iostream和iomanip 3.理解流缓冲区类的派生关系以及设备缓冲、文件缓冲和流缓冲 4.熟悉格式化的输入和输出,记住主要的常用的操作符,以及各种 应用(对齐) 掌握文件的输入和输出,区别C语言中的文件写入、打开等操作,会对一个文件进行I/O操作 实验环境硬件平台:普通的PC机 软件平台:Windows 操作系统编程环境:VisualC++ 6.0 实验内容1.文件数据的读取。编制一程序来显示并保存[2,1000]内的所有素数。显示、保存素数的格式为:每行10个素数,每一个素数占7个字符,右对齐,最后一行不足10个素数时按一行输出 2.编写一个单向链表的类模板,分别实现增加、删除、查找和打印操作 算法描述及实验步骤1、这个题主要考察了文件中数据的读取,还包括数据格式化输入输出。首先定义一个ofstream类的对象output,在main函数中打开文件后,再分别编写判断素数、每行输出10个数以及使辖域为7的代码,最后关闭文件。 2 这个题是C++与数据结构的结合,实现单向链表内各种功能。首先定义一个类ListNode,然后利用前插入法初始化链表,编写类模板的成员函数,再分别进行增加、删除和查找的操作

调试过程及实验结果 总结1.一旦文件被打开,文件中的文本数据信息的读/写操作与控制台文件信息的输入/输出操作就完全一致 2.定义ifstream、ofstream、fstream流类对象时,应用对象名替代控制台文本信息输入/输出使用的输入流类对象(如cin)和输出流类对象(如cout)

接口定时器与计数器实验定时器实验

同组同学学号:同组同学姓名:

实验框图: 主程序框图 源程序及分析: CONTROL equ 0c003h ;设置命令寄存器 COUNT0 equ 0c000h ;设置计数器0 COUNT1 equ 0c001h ;设置计数器1 COUNT2 equ 0c002h ;设置计数器2 code segment assume cs:code start proc near ;第一次定时器设定: mov al, 36h; ; 计数器0,16位,方式3,二进制(00110110B=36h) mov dx, CONTROL out dx, al mov ax, 1000

实验电路及连线: 连线连接孔1 连接孔2 1 8253_CS CS0 2 8253_OUT0L0 3 8253_GATE0VCC 4 8253_CLK0单脉冲 实验说明: 本实验中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计数器就开始计数。如果要读入计数器的值,要先锁存计数值,才能读到计数值。本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。同时OUT脚输出一个高电平。实验时,可以将OUT0 接到LED上,观察计数器是否工作。 实验框图: 主程序框图 源程序及分析: CONTROL equ 08003h COUNT0 equ 08000h COUNT1 equ 08001h COUNT2 equ 08002h code segment assume cs:code start proc near mov al, 30h ; 通道0,方式0 mov dx, CONTROL out dx, al mov al, 5 ; 计数器初始值。

实验六---8255并行输入输出

实验六---8255并行输入输出

东南大学 《微机实验及课程设计》 实验报告 实验六 8255并行输入输出

姓名:学号: 专业:测控技术与仪器实验室: 516 同组人员:评定成绩: 一、实验目的 1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示; 2)掌握8段数码管的动态刷新显示控制; 二、(1)实验内容(必做) 6-1、8段数码管静态显示:编程从键盘输入一位十进制数字(0~9),在数码管上显示出来。 6-2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。(如56或7f) (2)实验内容(必做一题,选做一题) 6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII 码不是数字(0~9),数码管显示E字母。 6-4 动态显示:在两个数码管上滚动循环显示不同的0~f字符。(即开始时两个数码管显示01,12,23,34 ··f0,一直循环直至退出) 三、实验原理 (1)实验预备知识

图 八段式LED 数码管的符号和引脚 (2) 6-1流程图:

N Y 将对应段码输 结 6-1源代码: data segment ioport equ 0ec00h-0280h io8255a equ ioport+288h ;8255A口地址 io8255b equ ioport+28bh ;8255控制寄存器端口地址 led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$';提示data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8255b ;使8255的A口为输出方式 mov ax,80h

微机原理实验五输入与输出程序设计

实验六输入与输出程序设计 一、实验目的 1.掌握常用DOS中断调用的功能以及在应用程序中的使用方法。 2.学习键盘输入和屏幕输出的基本方法。 3.宏指令、子程序在应用程序中的使用。 4.汇编语言程序设计的调试与完善。 二、设计指标与实验要求 1.设计内容 本实验要求设计完成:①屏幕输出提示(如“Want input(Y/N)?”),若键入N 则结束程序返回操作系统;键入Y则转2步;键入的是其它字母则回①步。②换行后输出提示(如“please input a strings:”),且在该提示后键入一字符串(输入到输入缓冲区)。 ③换行后输出提示(如“your inputting is:”),在该提示后输出由②步输入的字符串。 ④换行后输出提示“Want continue(Y/N)? ”,若键入Y则转②步;键入N则结束程序返回操作系统;其它字母则回第④步。 2.设计要求 ①按屏幕提示要求输入,从屏幕上获得正确结果。 ②把程序中常用的中断调用定义成宏指令(至少定义2个)。 ③字符串回显部分设计成子程序,可以选择用21H中断的2号或9号功能来实现,应 能显示由主程序指定的任一字符串。要注意这两种方法实现的设计过程是不同的。 采用2号功能的,子程序输入参数为“回显字符串地址”和“回显字符数”;采用 9号功能的,子程序输入参数为“回显字符串地址”。 ④屏幕的提示信息显示格式尽量做到兼顾美观。 3.实验步骤 ①.选用合适的程序文本编辑软件编辑源程序,并为文件取以.ASM为扩展名的文件存盘。 ②.用宏汇编软件MASM对源程序文件进行汇编,若有错误,根据提示(行号,错误类型)回源程序文件中修改。 ③.用LINK对由MASM汇编后产生的目标文件做连接,生成可执行文件;若有错误(同

可编程定时器计数器(8253) 实验报告

实验名称可编程定时器/计数器(8253)学生姓名 学生学号 专业班级 指导老师 2015-1-7

实验六可编程定时器/计数器(8253) 一、实验目的 掌握8253芯片和微机接口原理和方法,掌握8253定时器/计数器的工作方式和编程原理。 二、实验内容 1.设计8253定时器/技术器仿真电路图; 2.根据仿真电路图,编写代码,对8253定时器/计数器进行仿真。 三、实验要求 1.要求计数器2工作于模式1(暂稳态触发器),计数初值为1250; 2.计数器0工作于方式3(方波模式),输出一个1KHz的方波,8253的 输入时钟为1MHz,计数初始值格式为BCD。 3.8253与系统的连接如图1所示。 图1计数器8253与8086连接原理图

注:实验过程中,发现图1有误。应将8253定时器/计数器右边部分的电阻R2与按钮交换位置。 四、实验原理 8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。 8253的工作方式3被称作方波发生器。任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波。 进入工作方式3,OUTi输出低电平,装入计数值后,OUTi立即跳变为高电平。如果当GATE为高电平,则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。这时OUTi端输出的周期为n×CLKi周期,占空比为1:1的方波序列;若n为奇数,则OUTi端输出周期为n×CLKi周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。 8253定时器/计数器控制字决定这定时器0,1,2的工作模式。一旦CPU对控制字进行写操作,且对相应的定时器有效,则相应定时器改变工作模式,可能准备接收计时初值。控制字的格式如图2所示。

8255试验报告(方式1查询输出)

《微型计算机接口技术》实验报告 实验名称:可编程并行接口芯片8255应用 (8255方式1、查询输出) 姓名 学号: 班级: 日期: 广东外语外贸大学信息科学技术学院

一、实验目的 掌握8255方式1查询输入、输出时的使用及编程 二、实验内容 1、按照图示连接硬件(注意图中大多数线试验箱已经连好,只连接需要用户连接的部分,预习,参考PPT) 2、编程:每按一次单脉冲按钮,ACK信号有效,8255内部输出准备好状态有效(INTR),查询输出一次数据,点亮、熄灭相应的发光二极管。 三、实验原理(8255方式1输出:结合结构图、时序图、状态字描述) 8255是一片可编程并行I/O接口芯片,每片8255有两个8位的并行口(PA,PB)和两个4位并行口(PC的高、低四位),其中PA口可工作于方式0,1,2。PB口工作于方式0,1。PC口仅能工作于方式0。在方式1中,将8255的三个端口分为了A、B两组,PA、PB两个口仍作为数据输入/输出口,而PC口则作为两部分,分别作为PA、PB口的联络信号。8255A 方式1 A口输出过程由CPU响应中断开始,在中断中用OUT指令通过8255A 向外设输出数据,发出WR 信号;WR上升沿清除INTRA 中断请求信号,且使OBFA =“L”(有效),通知外设取数;当外设接受数据后,发出ACKA 应答信号,一方面使OBFA=“H”(无效),另一方面在ACKA信号的上升沿使INTRA=“H”(有效),以此向CPU发出新的中断请求,开始下一轮输出。 四、硬件设计及方案论证(完整图的信号线连接及作用:数据、地址、控制及外设线)硬件设计如图,其中: 1.8255芯片中的数据总线D0—D7是和CPU的数据线直接相连的,从而CPU可以向8255 发送命令、数据和8255芯片也可以向CPU发送状态、数据等等。 2.8255芯片中的A0和A1也是与CPU的地址总线直接相连,并且在控制字在以下几种 情况有不同的设置,若A1A0= 00时,8255芯片中的PA口被选中,若A1A0=01时,8255芯片中的PB口被选中,若A1A0=10时,8255芯片中的PC口被选中,若A1A0=11时,则8255芯片的控制口被选中。 3.8255芯片的读信号、写信号、复位信号,分别于CPU的IOR、IOW、RESET直接相 连,当CPU执行IN指令时,8255的读信号有效,CPU从8255芯片读取信息,当CPU 执行OUT指令时,8255的写信号有效,CPU输出信息到8255芯片,完成一定的功能。 而当CPU发出复位的信号时,8255也会进行复位操作。 4.8255芯片中的片选信号与3—8译码器的Y1相连,而Y1的寻址范围是288H—28FH, 而8255芯片中的端口A的地址是288H,端口B的地址是289H,端口C的地址是28AH,控制端口的地址是28BH,因此4的端口都在在3—8译码器的Y1的寻址范围之内。5.8255芯片的PC6与脉冲信号是连接在一起,8255芯片的A端口与二极管L7—L0直接 相连。当脉冲信号到来,PC6会被置1,允许中断,CPU会将数据通过8255芯片的A 口输出到二极管L7中,点亮相应的灯。 。。。。。。等等详细论证,如我课堂所讲

实验一 8253方波实验

实验一8253方波实验 一、实验目的 (1)学会8253芯片和微机接口原理和方法。 (2)掌握8253定时器/计数器的工作方式和编程原理。 二、实验仪器 示波器教学机电脑 三、实验内容 8253的0通常工作在方式3,产生方波。 四、程序框图 五、实验电路 六、编程提示 8253芯片介绍 ,用+5V 8253是一种可编程定/计数器,有三个十六位计数器,其计数频率范围为0~2MH Z 单电源供电。 8253的功能用途: (1)延时中断 (2)可编程频率发生器 (3)事件计数器 (4)二进制倍频器 (5)实时时钟 (6)数字单稳 (7)复杂的电机控制器 8253的六种工作方式: (1)方式0:计数结束中断 (2)方式1:可编程频率发生 (3)方式2:频率发生器 (4)方式3:方波频率发生器 (5)方式4:软件触发的选通信号 (6)方式5:硬件触发的选通信号

8253的0号通道工作在方式3,产生方波。 七、程序清单 通道0工作在方式3:00110110H=36H 计数器0:0FFE0H 控制计数器:0FFE3H code segment assume cs:code,ds:code,es:code org 3000H start: MOV DX,0FFE3H MOV AL,36H OUT DX,AL MOV DX,0FFE0H MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL JMP $ code ends end start 八、实验步骤 (1)按实验电路图连接线路: ①8253的GATE0接+5V。 (已 ②8253的CLK0插孔接分频器74LS393的T2插孔,分频器的频率源为:4.9152MH z 连好)。 ③8253的CS孔与138译码器的Y0孔相连。 ④对一体机而言,将SIO区D0~D7用排线与BUS区D0~D7相连。 (2)运行实验程序 (3)用示波器测量8253的OUT0输出插孔有方波产生。 九、实验数据及结果 当程序清单中MOV AL 10H 时,其频率为149.9HZ,T=6.7ms 当程序清单中MOV AL 15H 时,其频率为114.3HZ,T=8.7ms

C语言程序设计实验报告

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分: 4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一 C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; printf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序: main( ) {int i=8,j=10,m,n; m=++i;n=j++;

实验三 8253定时器

实验三8253定时器/计数器实验 姓名:张朗学号:11121535 一、实验目的 1. 学会8255芯片与微机接口的原理和方法。 2. 掌握8255定时器/计数器的工作原理和编程方法。 二、实验内容 编写程序,将8253的计数器0设置为方式2(频率发生器),计数器1设置为方式3(方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。 1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。 2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。 3.上面计数方式选用的是16进制,现若改用BCD码,试修改程序中的二个计数初值,使LED的闪亮频率仍为1Hz。 三、实验区域电路连接图

CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1; GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;(单脉冲与时钟单元) 四、程序框图 五、编程

1.T=1.48s CODE SEGMENT ASSUME CS:CODE ORG 1200H START: CLI MOV DX, 0043H MOV AL, 34H OUT DX, AL MOV DX, 0040H MOV AL, 0EEH OUT DX, AL MOV AL, 02H OUT DX, AL MOV DX, 0043H MOV AL, 76H ;01110110设置计数器1,方式3,16位二进制计数OUT DX, AL MOV DX, 0041H MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL JMP $ ;8253自行控制led灯 CODE ENDS END START

微机原理实验8255并行口实验PA输入、PB输出

8255A并行口实验PA输入、PB输出利用LED等显示 程序 LCD EQU 07FE0H LCDWI EQU LCD+0 ;写命令 LCDWD EQU LCD+1 ;写数据 LCDRS EQU LCD+2 ;读状态 LCDRD EQU LCD+3 ;读数据 PA EQU 0FFD8H PB EQU 0FFD9H PC EQU 0FFDAH PCTL EQU 0FFDBH code segment assume cs:code lin db 0 col db 0 num db 0 dis_num db 0 temp0 db 0 temp1 db 0 count db 0 org 1000h start: MOV DX,PCTL MOV AL,90H OUT DX,AL call init_lcd mov al,3 call delay2 mov count,0 mov bx,offset tab0 mov lin,0 mov col,0 mov num,16 call dis_english GOON: MOV DX,PA IN AL,DX TEST AL,01H JE GOON1 TEST AL,02H JE GOON2

TEST AL,04H JZ GOON3 TEST AL,08H JE GOON4 TEST AL,10H JE GOON5 TEST AL,20H JE GOON6 TEST AL,40H JE GOON7 TEST AL,80H JZ GOON8 JMP GOON9 GOON1: JMP KEY1 GOON2: JMP KEY2 GOON3: JMP KEY3 GOON4: JMP KEY4 GOON5: JMP KEY5 GOON6: JMP KEY6 GOON7: JMP KEY7 GOON8: JMP KEY8 GOON9: mov bx,offset tab9 mov lin,1 mov col,0 mov num,16 call dis_english MOV DX,PB MOV AL,0FFH OUT DX,AL JMP GOON KEY1: MOV DX,PB MOV AL,0FEH OUT DX,AL mov bx,offset tab1 mov lin,1 mov col,0 mov num,16 call dis_english JMP GOON KEY2: MOV DX,PB MOV AL,0FDH OUT DX,AL

微机实验8253

浙江工业大学计算机学院实验报告 实验名称定时/计数器(8253)

一、实验内容与要求 1.1 实验内容 1.计数器方式0实验 将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。 2.计数器方式3实验 将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。 3. 计数器级联实验 将计数器0设置为方式3(方波),计数器1设置为方式2(分频)。实现计数器0的输出为方波,计数器1的输入是计数器0输出。人机交互界面设计:实现在显示屏幕上提示输入计数器0(方波)的参数和计数器1(分频信号)的参数。 1.2 实验要求 (1)正确完成硬件电路连线; (2)使用8253定时/计数器芯片,除片选引脚,其他信号都已接好,进行有关结构设计和编程 (3)编写正确汇编程序,完成正确的屏幕以及硬件仪器的显示。 二、实验原理与硬件连线 2.1 实验原理 8253/8254 定时/计数器总体结构如图2.1.1所示,外部引脚定义如图2.1.2所示

图2.1.1 定时/计数器总体结构 图2.1.2 外部引脚定义 2.2 硬件连线 1.实验1硬件连线如图 2.21所示: 图2.2.1 TPC-USB 平台计数器方式0实验连线图 2.实验2 硬件连线如图2.22所示: U5 8253 +5V +5V

图2.2.2 TPC-USB平台计数器方式3实验连线 3.实验3硬件连线如图2.23所示: U5 8253 +5V +5V 图2.2.3 TPC-USB平台计数器级联实验连线 三、设计思路、步骤和程序流程图 3.1 设计思路 (1)硬件连线:在TPC-USB实验板上,进行三种方式下的8253计数器实验(2)程序设计:通过对实验要求的理解,编写想关的汇编代码 (3)两者结合显示符合实验要求的结果 3.2 实验步骤 3.3 程序流程 (1)计数器方式0实验,流程如图3.3.1:

c语言程序设计基本输入输出和简单程序设计

实验3 基本输入输出和简单程序设计 实验目的 1.掌握常用的C语言语句,熟练应用赋值、输入、输出语句。 2.理解C语言程序的顺序结构,掌握顺序结构设计的基本方法。 3.进一步熟悉C程序的编辑、编译、连接和运行以及调试跟踪的过程。 实验内容 1.准备实验环境: (1)启动Visual Studio 201X 或者Codeblocker等C程序开发的IDE (2)如果保留了实验1的工程项目,则可以直接双击工程项目文件夹中的.sln 文件打开它即可。否则,按实验1的做法,创建一个Win32控制台应用程序(即ConsoleApplication)工程,以自己的姓名全拼音为工程名称。可能有些同学已经忘记了,我们再指导一遍: 首先新建项目:

2.理解分析程序,熟悉基本的C程序输入输出。 1)给工程新建一个源程序文件,取名为"你的姓名全拼_3_1.c",并将以下程序编写进该源程序保存: #include int main() { int a=25; double d = 4321.123456789012345; char c = 'T'; printf("你的姓名_3_1:理解输出!\n");/* 改姓名哦*/ printf("a = :%d;%5d;%-5d;%+05d!\n",a,a,a,-a); printf("a = :%5x;%o!\n",a,a); printf("d = :%f;%15f;%8.3f;%20.15f;%.2f!\n",d,d,d,d,d); printf("c = :%c;%5c;%-5c!\n",c,c,c); } 运行该程序,将运行的结果截图放在下面: 程序运行的结果图:

实验六 8255和8253可编程芯片编程实验

实验六 8255/8253可编程芯片综合实验 一、实验目的 1.了解8255、8253芯片结构及接口方式。 2.掌握8255、8253的编程方法。 二、实验内容 1、以8253的计数器1,通过CLK1对300Hz的信号进行计数定时,采用方式2,要求定时时间为2S; 2、将计数器1的输出OUT1接到计数器2的CLK2上,用计数器2对其计数4次,采用方式3产生方波信号; 3、利用8255的A口工作于方式0输出控制LED灯、B口工作于方式0的输入, OUT2接到PB0上,查询PB0的状态,若PB0==0,则从A口输出00001111,若PB1==1,则从A口输出11110000。 三、实验预习要求 学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。 四、实验步骤 1)系统各跳线器处在初始设置状态。 将8位LED灯接到8255的A口,CS_8255接200H,则8255 状态/命令口地址为203H,PA口地址为200H,PB口地址为201H。 将CS-8253接208H,则8253计数器0地址为208H,计数器1地址为209H,计数器2地址为20AH,控制口地址为20BH。 CLK1接时钟信号源上的300Hz信号,OUT1接到CLK2上,OUT2接到8255的PB0上,GATE1和GATE2都接到+5V上。 2)启动PC机,打开THGMW-88软件,输入源程序,并编译源程序。编译无误后,下载程序运行。 五、实验要求 1)根据实验内容编写一个程序,并在实验仪上调试和验证,记录程序。 2)观察发光二极管的亮灭变化情况和时间的关系。 3)不改程序,将CLK1接到150Hz信号源上观察有什么变化,接到900Hz信号源上又有什么变化,想想为什么?

实验四 8255输入、输出实验

2题:A口输出,B口读入Code segment Assume cs:code Start proc near START: Mov al , 082h Mov dx , 8003h Out dx , al MOV dx ,8001h in al ,dx mov dx,8000h out dx ,al jmp start Code ends End start 1题:用A口控制小灯循环亮灭

Code segment Assume cs:code Start proc near START: Mov al , 082h Mov dx , 8003h Out dx , al Mov al , 080h Mov cx , 08h OUTA: Mov dx , 8000h Out dx , al mov dx,8002h out dx,al shr al,1 mov ah,200 call delay Loop OUTA JMP start Delay proc near Push ax Mov al , 0

Push cx Mov cx , ax Loop $ Pop cx Pop ax Ret Delay endp Code ends End start 思考题:用C口控制小灯Code segment Assume cs:code Start proc near START: Mov al , 00000010h Mov dx , 8003h OUT DX,AL call delay Mov al , 00000011h

Mov dx , 8003h OUT DX,AL call delay JMP START Delay proc near MOV CX ,20000 Loop $ Ret Delay endp Code ends End start

相关文档