8253、8255A、8259A初始化程序

合集下载

8259、8253实验报告

8259、8253实验报告

数字逻辑与CPU实验报告实验内容:8259中断控制器、8253可编程定时/计数器接口实验姓名:班级:学号:实验一8259中断控制器实验一、实验目的1、掌握8259的工作原理。

2、掌握编写中断服务程序的方法。

3、掌握初始化中断向量的方法。

二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。

三、实验方法(1)连线1、单脉冲发生器输出P+与8259的IR0相连;2、8259的片选CS8259与CS0相连;3、8259的INT与8086的INT相连;4、CS273与CS1相连;5、00与LED1相连;其他线均已连好。

(2)在8086实验系统软件中编辑程序,编译链接后,调试程序,程序流程图如图2。

(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。

四、程序源代码CODE SEGMENT PUBLICASSUME CS:CODEORG 100H;设置堆栈起点0100HSTART: 图2 程序流程图 MOV DX,4A0HMOV AX,13H ;写ICW1,单片8259,要写ICW4OUT DX,AXMOV DX,4A2HMOV AX,80H ;写入ICW2,设定IR0中断类型吗为80HOUT DX,AXMOV AX,01 ;写入ICW4,设定一般嵌套,非自动EOI方式 OUT DX,AXMOV AX,0 ;写入OCW1,设定允许中断。

OUT DX,AXMOV AX,0MOV DS,AXMOV SI,200H ;中断向量预存放在0100:0200H(向量码80H) MOV AX,OFFSET HINT;取中断服务程序的入口地址MOV DS:[SI],AXADD SI 2MOV AX,CSMOV DS:[SI],AXSTI;开中断JMP $;原地跳转HINT:;中断服务程序XOR CX,0FFH;CX全部取反(8位)MOV DX,4B0H;CS273接口的地址,与8个LED灯相连MOV AX,CX;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的的地址MOV AX,20H;写入OCW2,一般EOI命令,全嵌套方式OUT DX,AXIRET;中断返回CODE ENDSEND START五、实验结果程序调试通过后,当我们按一次单脉冲发生器的输出开关,对应连好的灯就会亮。

微机原理简答题及答案.

微机原理简答题及答案.

1. 设某8253通道1工作在方式0,按BCD方式计数,计数初值为400,通道0—控制寄存器的端口地址依次为80H~83H,试写出8253的初始化程序。

(8253方式控制字:D7D6:计数器选择;D5D4:读写控制;D3D2D1:工作方式选择D0:计数方式选择)控制字:01 11 000 1 71H答:MOV AL,71HOUT 83H,ALMOV AL,00HOUT 81H,ALMOV AL,04HOUT 81H,AL2. 某一8255A芯片的端口地址为90H~93H,现设置该接口芯片的PA口为基本输入方式、PB口为基本输出方式,PC口为输入方式,其方式选择控制字如下:D7=1,D6 D5 A口工作方式,D4 A口输入输出,D3 PC7-PC4输入输出,D2 B口工作方式,D1 B口输入输出,D0 PC3-PC0输入输出。

执行如下程序段后,PB口输出何种波形?L1:MOV AL,01HOUT 91H,ALCALL D20MS;延时20msMOV AL,00HOUT 91H,ALCALL D20MS;延时20msJMP L1答:MOV AL,99H OUT 93H,AL 方波3. 8253的计数器2工作于方式2,其计数时钟CLK2,为100KHz,输出信号OUT2作定时中断申请,定时间隔为8ms,试计算其计数初值N?答:8004. 某系统中有一片8253,其四个端口地址为310H,312H,314H,316H,计数脉冲频率为1MHz、BCD码计数,试编写计数器0输出频率为2KHz方波的初始化程序。

(8253方式控制字:D7D6:计数器选择;D5D4:读写控制;D3D2D1:工作方式选择D0:计数方式选择)计数初值=10^6/2*10^3=500控制字:00110111 37H答:MOV AL,37HMOV DX,316HOUT DX,ALMOV DX,310HMOV AL,00HOUT DX,ALMOV AL,05HOUT DX,AL5. 假如8259A已被编程,ICW2=0AH,若连接在8259A的IR3端的外设提出中断申请,它的中断向量的存放地址是什么?答:28H,29H,2AH,2BH6. 计算机有哪些主要应用领域?答:科学计算,数据处理,过程控制,信息通信,计算机辅助设计7. 什么叫微处理器?什么叫微型计算机?什么叫微型计算机系统?答:微处理器是指采用大规模集成电路技术,将具有运算控制功能的电路集成在一块芯片上的大规模集成电路,微型机即个人计算机,微型计算机系统是指以微型机为核心,配以相应的外部设备,及软件所构成的系统。

8225的初始化程序

8225的初始化程序

8255的初始化程序:1、地址确定因为A10A9A8A7A6A5A4A3=01010011,A2A1=11为控制字端口,A2A1=10为C口,A2A1=01为B口,A2A1=00为A口,A0为0,所以8255A地址范围为24CH~24FH。

2、控制字确定因为A口为方式0输出,B口为方式0输入,所以控制字为10000010B=82H 3、初始化程序MOV AL,82HMOV DX,24FHOUT DX,AL附8255知识:8255是微机并行接口芯片。

8255是可编程I/O口扩展芯片。

对8255输入不同的指令可改变I/O口的工作方式。

8255与单片机系统连接方式简单,工作方式由程序设定,图2为8255的引脚图。

8255内部有4个寄存器:分别为寄存器A、B、C和控制寄存器。

A、B、C寄存器的数据就是引脚PA7~PA0、PB7~PB0、PC7~PC0上输入或输出的数据。

而控制寄存器的数据则表明PA、PB、PC的工作方式。

通过CS、A0、A1、RD和WR对4个寄存器进行操作。

1)CS为低电平时选通8255;2)A1、A0为地址选通;3)RD和WR为读、写信号:RD为低、WR为高时为读方式,RD为高、WR为低时为写方式。

4)D0~D7为数据口。

向控制寄存器写入不同的数据可以使8255工作在三种不同的方式下。

这里只介绍应用最多的方式0。

方式0下8255的PA、PB及PC口上半部分(PC7~PC4)和下半部分(PC3~PC0)中任何一个端口都可以设定为输入或输出,PC口还可以进行位操作。

控制寄存器各位的含义如图3所示。

SLPC-24中8255工作在方式0。

PA、PB为输入口、PC为输出口,对控制寄存器写入的数据为10010010B,即92H。

8253、8255A、8259A初始化程序

8253、8255A、8259A初始化程序

8253、8255A、8259A初始化程序8253的初始化程序1.确定端口地址:0310H、0312H、0314H、0316H2.确定工作方式(假设工作方式为):通道0,方式3通道1,方式1通道2,方式53.确定计数值:通道0:N0=1MHz/2KHz=500通道1:N1=480us/(1/1mhz)=480通道2:N2=264确定控制字:通道0:00110111B通道1:01110011B通道2:10011011B对3个通道的初始化程序如下:;通道0初始化程序MOV DX, 316HMOV AL,00110111BOUT DX,ALMOV DX,310HMOV AL,00HOUT DX, ALMOV AL,05HOUT DX,AL;通道1的初始化程序MOV DX, 316HMOV AL, 001110011B OUT DX, ALMOV DX, 312HMOV AL, 80HOUT DX, ALMOV AL, 04HOUT DX, AL;通道2初始化程序MOV DX, 316HMOV AL, 10011011B OUT DX, ALMOV DX, 314HMOV AL,26HOUT DX,AL; MOV AL,00H; OUT DX,AL8255A初始化程序对8255A进行初始化,要求端口A工作于方式1,输入;端口B 工作于方式0,输出;端口C的高4位配合端口A工作,低4位为输入。

1.确定控制字端口地址:006CH。

2.确定工作方式:端口A,工作方式1,输入端口B,工作方式0,输出端口C,C0为输入,C4为配合工作3.确定方式选择控制字:1 011 100 1H(B9H)对3个端口的初始化程序如下MOV AL,B9HMOV DX,006CHOUT DX,AL另一个8255A初始化程序已知某8255A在系统中占用88~8BH号端口地址,现欲安排其PA,PB,PC口全部为输出,PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序:1.确定端口地址控制字以及PC口置位复位端口,8BH2.确定工作方式3.确定方式选择控制字MOV AL,80HOUT 8BH,ALMOV AL,ODHOUT 8BH,ALMOV AL,06HOUT 8BH,AL在8259A内部有两组寄存器:一组为命令寄存器,用于存放CPU写入的初始化命令字ICW1~ICW4(initialization command words);另一组为操作命令寄存器,用于存放CPU写入的操作命令字OCW1~OCW3(operation command words)。

微机原理简答题和答案

微机原理简答题和答案

1. 设某8253通道1工作在方式0,按BCD方式计数,计数初值为400,通道0—控制寄存器的端口地址依次为80H~83H,试写出8253的初始化程序。

(8253方式控制字:D7D6:计数器选择;D5D4:读写控制;D3D2D1:工作方式选择D0:计数方式选择)控制字:01 11 000 1 71H答:MOV AL,71HOUT 83H,ALMOV AL,00HOUT 81H,ALMOV AL,04HOUT 81H,AL2. 某一8255A芯片的端口地址为90H~93H,现设置该接口芯片的PA口为基本输入方式、PB口为基本输出方式,PC口为输入方式,其方式选择控制字如下:D7=1,D6 D5 A口工作方式,D4 A口输入输出,D3 PC7-PC4输入输出,D2 B口工作方式,D1 B口输入输出,D0 PC3-PC0输入输出。

执行如下程序段后,PB口输出何种波形?L1:MOV AL,01HOUT 91H,ALCALL D20MS;延时20msMOV AL,00HOUT 91H,ALCALL D20MS;延时20msJMP L1答:MOV AL,99H OUT 93H,AL 方波3. 8253的计数器2工作于方式2,其计数时钟CLK2,为100KHz,输出信号OUT2作定时中断申请,定时间隔为8ms,试计算其计数初值N?答:8004. 某系统中有一片8253,其四个端口地址为310H,312H,314H,316H,计数脉冲频率为1MHz、BCD码计数,试编写计数器0输出频率为2KHz方波的初始化程序。

(8253方式控制字:D7D6:计数器选择;D5D4:读写控制;D3D2D1:工作方式选择D0:计数方式选择)计数初值=10^6/2*10^3=500控制字:00110111 37H答:MOV AL,37HMOV DX,316HOUT DX,ALMOV DX,310HMOV AL,00HOUT DX,ALMOV AL,05HOUT DX,AL5. 假如8259A已被编程,ICW2=0AH,若连接在8259A的IR3端的外设提出中断申请,它的中断向量的存放地址是什么?答:28H,29H,2AH,2BH6. 计算机有哪些主要应用领域?答:科学计算,数据处理,过程控制,信息通信,计算机辅助设计7. 什么叫微处理器?什么叫微型计算机?什么叫微型计算机系统?答:微处理器是指采用大规模集成电路技术,将具有运算控制功能的电路集成在一块芯片上的大规模集成电路,微型机即个人计算机,微型计算机系统是指以微型机为核心,配以相应的外部设备,及软件所构成的系统。

微机原理与接口技术82558253初始化编程原

微机原理与接口技术82558253初始化编程原

微机原理与接口技术8255 8253初始化编程原微机原理与接口技术--8255|8253初始化编程原理解析000微机原理与接口技术研究方向:指令数据在计算机中是如何传输的;(1)控制总线(2)地址总线(3)数据总线在计算机中要研究数据是如何传输的,就是知道计算机是如何寻址的(地址译码)、CPU与外设是如何进行数据交互的、CPU中的控制器是如何控制外设进行数据传输的;一、8253芯片74LS138芯片的工作原理:当一个选通端(G1)为高电平,另外选通端G2A、G2B为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端一低电平译出;(1)8253与8086CPU的连接方式注意:z如果8253与8位数据总线的微机相连,只要将A1A0分别与地址总线的最低两位A1A0相连即可。

z如果系统采用的是8086CPU,则数据总线为16位。

CPU在传送数据时,总是将低8位数据送往偶地址端口,将高8位数据送到奇地址端口。

偶地址端口的数据总是通过低8位数据总线送到CPU,奇地址端口的数据总是通过高8位数据总线送到CPU。

当仅具有8位数据总线的存储器或I/O接口芯片与8086的16位数据总线相连时,既可以连到高8位数据总线,也可以接在低8位数据总线上。

在实际设计系统时,常将这些芯片的数据线D7~D0接到系统数据总线的低8位,这样,CPU就要求芯片内部的各个端口为偶地址(地址总线的A0=0)。

应改用地址总线中的A2A1实现端口选择,即将A2连到8253的A1引脚,而将A1与8253的A0引脚相连。

(如上如所示)例题解析:5.若8253的地址为:04H-07H,要使计数器2工作于方式2,按二进制计数,计数值为02F0H,写出初始化程序。

若要读取通道1的16位计数值,写出其程序。

(1)初始化程序的步骤二、初始化编程步骤和门控信号的功能1.8253的初始化编程步骤接通电源时,8253处于未定义状态,在使用之前,必须用程序把它们初始化为所需的特定模式,这个过程称为初始化编程。

2012年微型计算机原理与接口技术试题A卷-答案

2012年微型计算机原理与接口技术试题A卷-答案

2012-2013学年第1学期2010级《微型计算机原理与接口技术》试题A卷-答案班级学号姓名✧请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;✧请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时将试题纸、答题纸和草纸都交上来。

一.选择题(共15分,每题1分)1.在8086/8088CPU中,逻辑地址为2000H:0100H,其对应的物理地址为( )。

A. 20100HB. 03000HC.02100HD. 12000H2.下列指令中,有语法错误的指令是()。

A. MOV AX, [2000H]B. LEA AL, [2000H]C. MOV [2000H], ALD. ADD AX, 2000H3.ADD AX,[BX]的源操作数和目的操作数的寻址方式分别是( )。

A.寄存器寻址和寄存器相对寻址B.寄存器寻址和寄存器间接寻址C.寄存器间接寻址和寄存器寻址 C.直接寻址和寄存器寻址4.定义数据Table DB ‘1234’,执行指令MOV AX,WORD PTR Table后,AX中的内容是( )。

A. 1234HB.3412HC.3231HD.3433H5.MOV AX,[BP]的源操作数物理地址为( )。

A. 16 × (DS) + (BP)B. (DS) + (BP)C. 16 × (SS) + (BP)D. 16 × (CS) + (BP)6.( )总线称为通用串行总线。

A. STDB.ISAC. USBD. IDE7.8086/8088CPU中标志寄存器中CF位的主要的作用是( )。

A.检查当前指令的错误 B. 纠正当前指令执行的结果与错误C. 决定是否停机D. 是否有进位或借位8.8086/8088CPU中断类型码为0AH,则其相应的中断服务程序入口地址保存在( )开始的地址中。

A. 0000H:000AHB. 0000H:0028HC. 0000H:004AHD. 0000H:0027H9.若用4片8259A级联进行中断管理,则最多可管理( )个可屏蔽中断源。

8253A和8255A的初始化及相关操作

8253A和8255A的初始化及相关操作

8253A的初始化CODE SEGMENTASSUME CS:CODETCONTRO EQU 004BHTCON2 EQU 004AHCONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA1 EQU 0500HSTART: JMP TCONTTCONT: CALL FORMATCALL LEDDISPMOV DX, TCONTROMOV AL,0B7HOUT DX,ALMOV DX, TCON2MOV AL,00OUT DX,ALMOV AL,10HOUT DX,ALHLTLEDDISP: MOV AL,90HMOV DX, CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07HJA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DA TA1]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D4FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND START8255A的初始化CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOCPT EQU 0072HIOBPT EQU 0071HCONTPORT EQU 00DFHDATAPORT EQU 00DEHDA TA1 EQU 0500HSTART: JMP IOLEDIOLED: CALL FORMATCALL LEDDISPMOV AL,89HMOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPTIN AL,DXMOV DX,IOBPTOUT DX,ALMOV CX,0FFFFHDELAY: LOOP DELAYJMP IOLED1LEDEISP: MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07HJA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DA TAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND STARTCODE SEGMENTASSUME CS:CODESTART: MOV AL, 82HMOV DX, 0073HOUT DX, ALS: MOV DX, 0071HIN AL, DXMOV DX, 0072HNOT ALOUT DX, ALMOV CX, 0FFFFHDELAY: LOOP DELAYJMP SCODE ENDSEND STARTCODE SEGMENTASSUME CS:CODESTART: MOV AL, 82HMOV DX, 0073HOUT DX, ALMOV AL,0FEHMOV DX, 0072HS:OUT DX, ALROR AL,1DELAY: LOOP DELAYJMP SCODE ENDSEND START利用8253A实现信号灯CODE SEGMENTASSUME CS:CODESTART: MOV AL, 89HMOV DX, 0073HOUT DX, ALS: MOV DX, 0072HIN AL, DXMOV AH, ALAND AH, 80HJZ SAND AL, 03HCMP AL, 00HJZ LIFTCMP AL, 01HJZ RIGHTCMP AL,02HJZ INCRMCMP AL,03HJZ DECM1JMP SDECM1: JMP DECMLIFT: MOV AL, 0FEHL1: MOV DX, 0071HOUT DX, ALROL AL, 1MOV AH,ALMOV CX, 0FFFFHDELAY1: LOOP DELAY1MOV DX, 0072HIN AL, DXMOV BH, ALAND BH, 80HJZ SAND AL, 03HCMP AL, 00HJZ L2JZ RIGHTCMP AL,02HJZ INCRMCMP AL,03HJZ DECML2: MOV AL, AHJMP L1RIGHT: MOV AL, 0FEHR1: MOV DX, 0071H OUT DX, ALROR AL, 1MOV AH,ALMOV CX, 0FFFFH DELAY2: LOOP DELAY2 MOV DX, 0072HIN AL, DXMOV BH, ALAND BH, 80HJZ SAND AL, 03HCMP AL, 00HJZ LIFTCMP AL, 01HJZ R2CMP AL,02HJZ INCRMCMP AL,03HJZ DECMR2: MOV AL,AHJMP R1INCRM: MOV AL, 0FEH I1: MOV DX, 0071HOUT DX, ALDEC ALMOV AH,ALMOV CX, 0FFFFH DELAY3: LOOP DELAY3 MOV DX, 0072HIN AL, DXMOV BH, ALAND BH, 80HJZ S1AND AL, 03HJZ LIFTCMP AL, 01HJZ RIGHTCMP AL,02HJZ I2CMP AL,03HJZ DECMI2 : MOV AL,AHJMP I1DECM: MOV AL, 0FEHE1: MOV DX, 0071HOUT DX, ALINC ALMOV AH, ALMOV CX, 0FFFFH DELAY4: LOOP DELAY4 MOV DX, 0072HIN AL, DXMOV BH, ALAND BH, 80HJZ S1AND AL, 03HCMP AL, 00HJZ LIFT2CMP AL, 01HJZ RIGHT2CMP AL,02HJZ INCRMCMP AL,03HJZ E2E2: MOV AL, AHJMP E1S1: JMP SLIFT2: JMP LIFTRIGHT2: JMP RIGHT CODE ENDSEND START。

8255a初始化编程

8255a初始化编程

8255a初始化编程
8255A是一种并行I/O接口芯片,它可以配置为三个独立的I/O端口:端口A、端口B和端口C。

以下是一个8255A 的初始化编程的简单示例:
首先,我们需要设置控制字来配置8255A的工作模式。

控制字是通过将8位数据写入控制寄存器来设置的。

控制字的每一位都有特定的含义,用于配置端口A、端口B和端口C的工作模式。

例如,如果我们想要设置端口A为输出模式,端口B为输入模式,端口C为输入模式,我们可以设置控制字为1000 0000。

这个控制字的意思是:
控制字的第0位设置为1表示使能片选信号(ENABLE),启动芯片。

控制字的第1位设置为0表示端口A为输出模式。

控制字的第2位设置为0表示端口B为输入模式。

控制字的第3位设置为0表示端口C为输入模式。

控制字的第4位到第7位未使用,因此可以忽略。

然后,我们可以将这个控制字写入8255A的控制寄存器:assembly复制代码:
OUT 8255_control_register, control_word
其中,8255_control_register是控制寄存器的地址,control_word是我们刚才计算出的控制字。

这样我们就完成了8255A的初始化编程。

之后,我们就可以使用端口A、端口B和端口C进行I/O操作了。

注意:以上代码是假设我们在使用某种汇编语言进行编程。

不同的编程语言可能有不同的语法和函数来操作硬件。

电压采集电路设计方案

电压采集电路设计方案

目录一、设计目的- 2 -二、设计内容- 2 -三、整体设计方案设计- 2 -四、设计任务- 3 -五、硬件设计及器件的工作方式选择- 3 -1、硬件系统设计方框图:- 3 -2、中断实现:8259A工作方式选择及初始化- 4 -3、定时功能实现:8253的工作方式及初始化- 4 -4、数码管显示及ADC的数据传输:8255的工作方式及初始化- 5 -5、模拟电压转换为数字量:ADC0809的初始化- 5 -6、地址编码实现:74LS138及逻辑器件- 6 -7、显示功能:数码管显示- 6 -六、软件设计- 7 -1、主程序流程图- 7 -2、中断子程序- 7 -3、显示子程序- 8 -4、初始化- 9 -8295A初始化流程图- 9 -8253初始化流程图- 9 -8255初始化流程图- 9 -5、程序清单及说明- 10 -七、本设计实现功能- 13 -八、元件清单- 14 -九、所遇问题与小结- 14 -1、问题与解决- 14 -2、小结体会- 15 -附:系统硬件连线图- 16 -一、设计目的1、了解和掌握74LS138、8253、8255A、ADC0809等可编程接口芯片、中断控制器8259以及LED显示器的原理和功能;2、能用上面的接口芯片构建一个简单的系统控制对象;3、进一步了解计算机得工作原理,接口技术,提高计算机硬件,软件综合应用能力,即对微机原理,接口技术,汇编语言程序设计进行综合训练;4、掌握接口电路的综合设计与使用。

二、设计内容利用《微型计算机原理课程》中所学的主要可编程接口芯片74LS138、8253、8255A、ADC0809和中断控制器8259设计一个模拟电压采集电路。

采用ADC0809设计一个单通道模拟电压采集电路,要求对所接通道变化的模拟电压值进行采集,采集来的数字量送至数码管LED指示,采集完100个数据后停止采集过程。

三、整体设计方案设计首先模拟电压量通过ADC0809转换为数字量D,定时器8253计时,计时结束后向8259A发出中断请求,CPU响应中断,接受8255的数据量D,并进行运算。

8255A的工作方式及其初始化编程

8255A的工作方式及其初始化编程

8255A 的工作方式及其初始化编程8255A 有三种工作方式:基本输入/输出方式、单向选通输入/输出方式和双向选通输入/输出方式.1.8255A 的工作方式(1)方式0:基本输入/输出方式(basic Input/Output)方式0是8255A 的基本输入/输出方式,其特点是与外设传送数据时,不需要设置专用的联络(应答)信号,可以无条件的直接进行I/O 传送.A, B, C 3个端口都可以工作在方式0.A 口和B 口工作在方式0时,只能设置为以8位数据格式输入/输出;C 口工作在方式0时,可以高4位和低4位分别设置为数据输入或数据输出方式.方式0常用于与外设无条件数据传送或查询方式数据传送.(2)方式1:单向选通输入/输出方式(strobe Input/Output)方式1是一种带选通信号的单方向输入/输出工作方式,其特点是:与外设传送数据时,需要联络信号进行协调,允许用查询或中断方式传送数据.由于C 口的PC0, PC1和PC2定义为B 口工作在方式1的联络信号线,PC3,PC4和PC5定义为A 口工作方式1的联络信号线,因此只允许A 口和B 口工作在方式1.A 口和B 口工作在方式1,当数据输入时,C 口的引脚信号定义如图7.6所示.PC3, PC4和PC5定义为A 口的联络信号线INTRA, A STB 和IBFA, PC0, PC1和PC2定义为B 口的联络信号线INTRB, IBFB 和B STB ,剩余的PC6和PC7仍可以作为基本I/O 线,工作在方式0.方式1输入联络信号的功能如下:S T B (strobe input):选通信号,输入,低电平有效.此信号由外设产生输入,当STB 有效时,选通A 口或B 口的输入数据锁存器,锁存由外设输入的数据,供CPU 读取.IBF(input buffer full):输入缓冲器满信号,输出,高电平有效.当A 口或B 口的输入数据锁存器接收到外设输入的数据时,IBF 变为高电平,作为对外设STB 的响应信号,CPU 读取数据后IBF 被清除.INTR:中断请求信号,输出,高电平有效,用于请求以中断方式传送数据.为了能实现用中断方式传送数据,在8255A 内部设有一个中断允许触发器INTE,当触发器为"1"时允许中断,为"0"时禁止中断.A 口的触发器由PC4置位或复位,B 口的触发器由PC2置位或复位. 方式1数据输入的时序如图7.7所示.当外设的数据准备就绪后,向8255A 发送STB 信号以便锁存输入的数据, STB 的宽度至少为500ns,在STB 有效之后的约300ns,IBF 变为高电平,并一直保持到RD 信号由低电平变为高电平,待CPU 读取数据后约300ns 变为低电平,表示一次数据传送结束.INTR 是在中断允许触发器INTE 为1,且IBF 为1(8255A 接收到数据)的条件下,在STB 后沿(由低变高)之后约300ns 变为高电平,用以向CPU 发出中断请求,待RD 变为低电平后约400ns, INTR 被撤销.A 口和B 口工作在方式1,当数据输出时,C 口的引脚信号定义如图7.8所示.PC3, PC6和PC7定义为A 口联络信号线INTRA,A ACK 和A OBF ,PC0,PC1和PC2定义为B 口联络信号线INTRB, B OBF 和B ACK ,剩余的PC4和PC5仍可以作为基本I/O 线,工作在方式0.方式1输出联络信号的功能如下:O B F (output buffer full):输出缓冲器满指示信号输出,低电平有效.OBF 信号由8255A 发送给外设,当CPU 将数据写入数据端口时, OBF 变为低电平,用于通知外设读取数据端口中的数据.A C K (acknowledge input):应答信号,输入,低电平有效. ACK 信号由外设发送给8255A,作为对OBF 信号的响应信号,表示输出的数据已经被外设接收,同时清除OBF 信号.INTR:中断请求信号,输出,高电平有效.用于请求以中断方式传送数据.方式1数据输出的时序如图7.9所示.当CPU 向8255A 写入数据时,WR 信号上升沿后约650ns, OBF 有效,发送给外设,作为外设接收数据的选通信号.当外设接收到送来的数据后,向8255A 回送ACK 信号,作为对OBF 信号的应答.ACK 信号有效之后约350ns, OBF 变为无效,表明一次数据传送结束.INTR 信号在中断允许触发器INTE 为1且信号无效之后约350ns变为高电平.若用中断方式传送数据时,通常把INTR连到8259A的请求输入端IRi.(3)方式2:双向选通输入/输出方式(bi-directional bus)方式2为双向选通输入/输出方式,是方式1输入和输出的组合,即同一端口的信号线既可以输入又可以输出.由于C口的PC7~PC3定义为A口工作在方式2时的联络信号线,因此只允许A口工作在方式2,引脚信号定义如图7.10所示.由图7.10可以看出,PA7~PA0为双方向数据端口,既可以输入数据又可以输出数据.C口的PC7~PC3定义为A口的联络信号线,其中PC4和PC5作为数据输入时的联络信号线,PC4定义为输入选通信号STB,PC5定义为输入缓冲器满IBFA;APC6和PC7作为数据输出时的联络信号线,PC7定义为输出缓冲器满OBF,PC6定义A为输出应答信号ACK;PC3定义为中断请求信号INTRA.A需要注意的是:输入和输出公用一个中断请求线PC3,但中断允许触发器有两个,即输入中断允许触发器为INTE2,由PC4写入设置,输出中断允许触发器为INTE1,由PC6写入设置,剩余的PC2~PC0仍可以作为基本I/O线,工作在方式0. 2.8255A初始化编程8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的.8255A由编程写入的控制字有两个:方式控制字和置位/复位控制字.方式控制字用于设置端口A, B, C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7~PC0中某一条口线PCi(i=0~7)的电平.两个控制字公用一个端口地址,由控制字的最高位作为区分这两个控制字的标志位.(1)方式控制字的格式 8255A工作方式控制字的格式如图7.11所示.D0:设置PC3~PC0的数据传送方向.D0=1为输入;D0=0为输出.D1:设置B口的数据传送方向.D1=1为输入;D1=0为输出.D2:设置B口的工作方式.D2=1为方式1;D2=0为方式0.D3:设置PC7~PC4的数据传送方向.D3=1为输入;D3=0为输出.D4:设置A口的数据传送方向.D4=1为输入;D4=0为输出.D6D5:设置A口的工作方式.D6D5=00为方式0,D6D5=01为方式1,D6D5=10或11为方式2.D7:方式控制字的标志位,恒为1.例如,将8255A的A口设定为工作方式0输入,B口设定为工作方式1输出,C口没有定义,工作方式控制字为10010100B.(2)C口置位/复位控制字的格式8255A C口置位/复位控制字的格式如图7.12所示.8255A C口置位/复位控制字用于设置C口某一位口线PCi(i=0~7)输出为高电平(置位)或低电平(复位),对各端口的工作方式没有影响.D3~D1:8种状态组合000~111对应表示PC0~PC7.D0:用来设定指定口线PCi为高电平还是低电平.当D0=1时,指定口线PCi输出高电平;当D0=0时,指定口线PCi输出低电平.D6~D4没有定义,状态可以任意,通常设置为0.D7位作为标志位,恒为0.例如,若把PC2口线输出状态设置为高电平,则置位/复位控制字为00000101B.(3)8255A初始化编程8255A的初始化编程比较简单,只需要将工作方式控制字写入控制端口即可.另外,C口置位/复位控制字的写入只是对C 口指定位输出状态起作用,对A口和B口的工作方式没有影响,因此只有需要在初始化时指定C口某一位的输出电平时,才写入C口置位/复位控制字.【例7.1】设8255A的A口工作在方式0,数据输出,B口工作在方式1,数据输入,编写初始化程序(设8255A的端口地址为FF80H~FF83H).初始化程序如下:MOV DX, 0FF83H ; 控制寄存器端口地址为FF83HMOV AL, 10000110B ; A口方式0, 数据输出, B口方式1, 数据输入OUT DX, AL ; 将控制字写入控制端【例7.2】将8255A的C口中PC0设置为高电平输出,PC5设置为低电平输出,编写初始化程序(设8255A的端口地址为FF80H~FF83H).初始化程序如下:MOV DX, 0FF83H ; 控制端口的地址为FF83HMOV AL, 00000001B ; PC0设置为高电平输出OUT DX, AL ; 将控制字写入控制端口MOV AL, 00001010B ; PC5设置为低电平输出OUT DX, AL ; 将控制字写入控制端口。

采用8253作定时

采用8253作定时

采用8253作定时/计数器,其接口地址为0120H~0123H。

要求计数器0每10ms输出一个CLK脉冲宽的负脉冲;用计数器1产生10KHz的连续方波信号,计数器2在定时5ms后产生输出高电平。

输入8253的时钟频率为2MHz。

要求:画线路连接图,并编写初始化程序。

计算计数初值:输入时钟频率为2MHz, 其周期为: 1/2000000=0.5us(微秒)确定计数初值:CNT0: 10ms/0.5us = 20000CNT1: 2MHz/10KHz = 200CNT2: 5ms/0.5us = 10000确定控制字:CNT0:方式2,16位计数值 0011 0100B(34H)CNT1:方式3,低8位计数值 0101 0110B(56H)CNT2:方式0,16位计数值 1011 0000B(B0H)线路连接图:初始化程序CNT0:MOV DX, 0123HMOV AL, 34HOUT DX, ALMOV DX, 0120HMOV AX, 20000OUT DX, ALMOV AL, AHOUT DX, ALCNT1:MOV DX,0123HMOV AL,56HOUT DX,ALMOV DX,0121HMOV AX,200OUT DX,ALCNT2:MOV DX,0123HMOV AL,0B0HOUT DX,ALMOV DX,0122HMOV AX,10000OUT DX,ALMOV AL,AHOUT DX,AL8255特点:含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。

8255工作方式:基本输入/输出方式(方式0) A、B、C选通输入/输出方式(方式1) A、B双向传送方式(方式2)仅A口某端口工作于哪一种方式,可通过软件编程来指定。

即向8255写入方式控制字来决定其工作方式单片8259A可支持8个中断源;采用多片8259A级连,可最多支持64个中断源。

8255初始化编程步骤

8255初始化编程步骤

8255初始化编程步骤一、引言8255是一种通用的并行I/O接口芯片,常用于嵌入式系统中。

本文将介绍8255的初始化编程步骤,帮助读者快速上手使用该芯片。

二、8255概述8255是一款具有三个I/O端口的芯片,即PA、P B和P C端口。

每个端口都可以被配置为输入或输出端口,用于与外部设备进行数据交互。

三、8255初始化编程步骤以下是8255初始化编程的详细步骤:步骤1:设置模式字模式字用于配置8255的工作模式,包括端口A、B、C的工作模式以及手动或自动方式。

模式字的格式如下:位|功能D7|A和C寄存器的工作模式选择D6|A和C寄存器的工作模式选择D5|A寄存器的操作模式选择D4|B和C寄存器的工作模式选择D3|B和C寄存器的工作模式选择D2|B寄存器的操作模式选择D1|模式选择标志:1为手动,0为自动D0|1为允许端口C访问,0为禁止端口C访问参考以下示例代码设置模式字:m o de=0b00100010;o u tp(0x80,mo de);//将模式字写入8255的控制寄存器步骤2:配置端口A和端口C针对端口A和端口C,需要进行以下设置:配置端口A1.如果端口A是输出端口,设置控制寄存器的位PA E为1。

2.如果端口A是输入端口,设置控制寄存器的位PA E为0。

参考以下示例代码进行端口A的配置:i f(o ut pu tP or tA){o u tp(0x82,0x01);//设置PA E为1,将端口A配置为输出}e ls e{o u tp(0x82,0x00);//设置PA E为0,将端口A配置为输入}配置端口C1.如果端口C是输出端口,设置控制寄存器的位PC F为1。

2.如果端口C是输入端口,设置控制寄存器的位PC F为0。

参考以下示例代码进行端口C的配置:i f(o ut pu tP or tC){o u tp(0x82,0x04);//设置PC F为1,将端口C配置为输出}e ls e{o u tp(0x82,0x00);//设置PC F为0,将端口C配置为输入}步骤3:配置端口B针对端口B,需要进行以下设置:配置端口B工作模式设置控制寄存器的位P BF E为1,将端口B配置为全双工模式。

8255芯片初始化编程方法

8255芯片初始化编程方法

8255芯片初始化编程方法
8255芯片是一种并行I/O接口芯片,由Intel公司生产。

它有三个8位I/O 端口,分别为端口A、端口B和端口C,以及一个控制字寄存器。

通过向控制字寄存器写入不同的控制字,可以配置8255芯片的工作模式,包括输入、输出、中断等。

初始化8255芯片的编程方法如下:
1. 确定工作模式:根据实际需要,确定8255芯片的工作模式。

8255芯片
有四种工作模式,分别为方式0、方式1、方式2和方式3。

2. 配置控制字:根据工作模式,计算控制字的值,并向8255芯片的控制字寄存器写入控制字。

控制字的计算方法可以参考8255芯片的数据手册。

3. 配置端口:根据实际需要,向端口A、端口B和端口C写入相应的数据。

需要注意的是,向端口写入数据时需要将相应的控制位设置为1,否则数据无法写入。

4. 中断配置:如果需要使用8255芯片的中断功能,需要根据实际情况配置中断向量和中断触发方式等参数。

需要注意的是,具体的编程方法可能会因为不同的开发环境和编程语言而有所不同。

因此,在实际编程时,需要参考具体的开发环境和编程语言的相关文档。

微机原理习题 1

微机原理习题 1

1. 设8255A 的A 口、B 口、C 口和控制字寄存器的端口地址分别为80H 、82H 、84H 和86H 。

要求A 口工作在方式0 输出,B 口工作在方式0 输入,C 口高 4 位输入,低4 位输出,试编写8255A 的初始化程序。

MOV AL ,10001010B ;方式控制字OUT 86H ,AL2. 8255A 的A 口、B 口、C 口和控制字寄存器的端口地址分别为80H 、82H 、84H 和86H,要求PC4 输出高电平,PC5 输出低电平,PC6 输出一个正脉冲,试写出完成这些功能的指令序列。

MOV AL ,00001001B ;PC4 输出高电平OUT 86H ,ALMOV AL ,00001010B ;PC5 输出低电平OUT 86H ,ALMOV AL ,000001100B ;PC6 先输出低电平OUT 86H ,ALMOV AL ,00001101B ;PC6 再输出高电平OUT 86H ,ALMOV AL ,00001100B ;PC6 再输出低电平,形成一个正脉冲OUT 86H ,AL3. 8255A 的口地址为80H~83H ,8253 的口地址为84H~87H ,(1 )若A 口接8 个开关K7~K0,B 口接8 个指示灯LED 7~LED0,当开关合上时相应的指示灯亮,断开时灯灭,要求每隔0.5s 检测一次开关状态,并在LED上显示出来,试画出硬件连线图,编写实现这种功能的程序。

(2 )若把接在端口 A 上的开关去掉,要求接在端口 B 上的指示灯轮流熄灭,每只灯熄灭 1秒钟,请编程实现这种功能。

答:(1 )8255A :A 口输入,B 口输出8253:2MHz/2Hz=1000000通道0 工作于方式2 ,取N0=1000通道1 工作于方式0 ,取N1=999,即得OUT1 每0.5秒中断一次。

本题用8253 定时中断,中断处理时检测开关状态,并点亮相应的LED 。

8253的初始化编程

8253的初始化编程

8253的初始化编程8253的初始化编程内容:一是首先向控制寄存器写入控制字,以选定计数通道(三个中之一),规定该计数的工作方式和计数方式以及计数初值的长度和装入顺序(初值写入方式);二是向已选定的计数器按控制字的要求写入计数初值.8253初始化的要求:(1)对每个计数器,控制字必须写在计数值之前.这是因为计数器的读/写格式由它的控制字决定.(2)计数值必须按控制字所规定的格式写入.若控制字规定只写8位,只需写入一次(8位)计数值即可(规定写低8位则高8位自动置0,规定写高8位则低8位自动置0);规定写16位时必须写两次,先写低8位,后写高8位.当初值为0时,也要分两写入,因在二进制计数时,“0”表示65336,在BCD码计数时“0”表示10000=104.(3)对所有方式计数器都可以在计数过程中或计数结束后改变计数值,重写计数值也必须遵守控制字所规定的格式,并且不会改变当前计数器的工作方式.(4)计数值不能直接写到减1计数器中,而只能写入计数值寄存器中,并由写操作WR之后的下一个CLK脉冲将计数值寄存器的内容装入减1计数器开始计数.(5)初始化编程必须明确各个计数器的控制字和计数值不是写到同一个地址单元.各个计数器的控制字各自独立确定,但它们都写入同一个端口地址(控制字寄存器)中,各个计数器的计数值则根据需要独立确定并写入各自计数器的相应寄存器中.例1:设8086系统中8253的三个计数器的端口地址为060H,062H和064H,控制口地址为066H,要求计数器0为方式 1,按BCD计数;计数初值为1800D,计数器1为方式0,按二进制计数;计数初值为1234H,计数器2为方式3,按二进制计数;当计数初值为065H时,试分别写出计数器0,1,2的初始化程序.计数器0的初始化:计数0的控制字:00100011B=23HMOV AL,23H ;计数器0的控制字OUT 0 66H,AL ;控制字写入8253的控制器MOV AL,18H ;取计数初值的高8位,低8位00可不送OUT 060H,AL ;计数初值送计数器0端口计数器1和初始化:计数器1的控制字:01110000B=70HMOV AL,70H ;计数器的控制字:方式0,送高8位和低8位,二进制计数OUT 066H,AL ;控制字写入8253的控制器MOV AL,034H ;取计数初值的低8位OUT 062H,AL ;计数初值的低8位,写入计数器1端口MOV AL, 12H ;取计数初值的高8位OUT 062H,AL ;计数初值的高8位写入计数器1端口计数器2的初始化:计数器2的控制字:10010110B=96HMOV AL,96H ;计数器2的控制字96H:方式3,只送低8位,二进制计数OUT 066H,AL ;控制字写入8253的控制口MOV AL,056H ;计数初值的低8位OUT 064H,AL ;计数初值的低8位写入计数器2的端口例2:要求读出计数器2的当前计数值,并检查是否为全“1”.8253在读取计数器的当前计数值时,必须分两步进行.首先发一锁存命令(即控制字中RL1RL0=00),将当前计数值锁存到输出锁存器中.第二步执行读操作,即用IN指令将锁存器中内容读入CPU.假设计数初值只有低8位,设其程序段如下(控制口地址为066H,计数器2的口地址为064H):KEEP:MOV AL,80H ;计数器2的锁存命令OUT 066H,AL ;锁存命令写入控制寄存器IN AL,064H ;读输出锁存器中的当前计数值(从计数器2端口读)CMP AL,0FFH ;比较当前计数值是否为全“1”JME KEEP ;非全“1”继续读HLT ;为全“1”暂停8253的应用举例例1:将8253的计数器1作为5ms定时器,设输入时钟频率为200kHz,试编写8253的初始化程序.(1)计数初值N计算已知输入时钟CLK频率为200kHz,则时钟周期为T=1/f=1/200kHz=5μs,于是计数初值N为:N=5ms/T=5ms/5μs=1000.(2)确定控制字按题意选计数器1,按BCD码计数,工作于方式0,由于计数初值N=1000,控制字D5D4应为11,于是8253的控制字为:01110001B=71H.(3)选择8253各端口地址设计数器1的端口地址为3F82H,控制口地址为3F86H.(4)初始化程序如下MOV AL,71H ;控制字MOV DX,3F68H ;控制口地址OUT DX,AL ;控制字送8253控制寄存器MOV DX,3F82H ;计数器1端口地址MOV AL,00 ;将计数初值N=1000的低8位写入计数器1OUT DX,ALMOV AL,10 ;将N的高8位写入计数器1OUT DX,AL例2:以8086为CPU的某微机系统中使用了一块8253芯片,其通道端口地址为308H, 30AH,30CH,控制口地址为30EH,3个通道使用同一输入时钟,频率为2MHz,要求完成如下功能:利用计数器0采用硬件触发,输出宽度等于时钟周期的单脉冲,定时常数为36H;利用计数器1输出频率为2kHz的对称方波;利用计数器2产生宽度为0.6ms的单脉冲,试设计该定时系统硬件电路和初始化程序.(1)硬件电路设计硬件电路设计主要是地址译码电路设计及时8253与CPU间的连接.根据给定的端口地址可知,地址总线低位部分的 A9~A0分别为:A9A8=11,A7~A4=0000,A3A2A1=100~111,A0=0,由它们经译码器译码产生8253的片选信号CS, 8253的数据线D7~D0必须与系统数据总线的低8位相连,8253的端口的选择信号A1A0应连系统地址的A2A1.根据上述要求,译码器应选3-8译码器74LS138.该译码器有3个代码输入端(C,B,A),输入3位代码决定译码信号从 Y0~Y7中哪一个输出,本例中显然应以Y2输出.(2)初始化编程根据题意要求,对3个通道的工作方式,计数初值确定如下:由CLK0~CLK2=2MHz可得,时钟周期T=1/f=1/2MHz=0.5μs.选计数器0:选择方式5,门控信号GATE应接一正跳变信号,OUT端当计数为0时产生一个宽度等于时钟周期的单脉冲.计数系数为36,用BCD计数.所以,计数器0的控制字应为00011011B=1BH.选计数器1:选择方式3,GATE按+5V,CLK1=2MHz输出方波频率为2kHz,所以,计数常数N1=2MHz/2kHz=1000,采用 BCD计数,于是计数器1的控制字为:01110111B=77H.选计数器2:选择方式1,以构成一个单稳态电路,输出脉冲宽度由计数常数N2决定,计数常数N2=600μs/0. 5μs=1200,采用BCD 计数,于是计数器2的控制字为:10110011B=B3H.根据以上分析可得3个计数通道的初始化程序如下.计数通道0的初始化程序:MOV DX,30EH ;8253的控制口地址MOV AL,1BH ;计数通道0的控制字,低8位,方式5,BCD计数OUT DX,AL ;控制字写入控制口MOV DX,308H ;计数器0的端口地址MOV AL,036H ;计数初值的低8位OUT DX,AL ;低字节写入计数器0端口计数通道1的初始化程序:MOV DX,30EH ;8253的控制口地址MOV AL,77H ;计数通道1的控制字,先写低字节,后写高字节,方式3,BCD计数OUT DX,AL ;控制字写入控制口MOV DX,30AH ;计数通道1的端口地址MOV AL,00H ;计数初值的低字节OUT DX,AL ;低字节写入计数通道1MOV AL,10D ;计数初值的高字节OUT DX,AL ;高字节写入计数通道1计数通道2的初始化程序MOV DX,30EH ;8253的控制口地址MOV AL,B3H ;计数通道2的控制字,先写低字节,后写高字节,方式1,BCD计数OUT DX,AL ;控制字写入控制口MOV DX,30CH ;计数通道的端口地址MOV AL,00H ;计数初值的低字节OUT DX,AL ;低字节写入计数通道MOV AL,12D ;计数初值的高字节OUT DX,AL ;高字节写入计数通道2计数通道2初始化程序:MOV AL,B0H ;计数通道2的控制字OUT 05FH,AL ;控制字写入控制器MOV AL,068H ;计数初值的低8位OUT 05DH,AL ;计数初值的低8位写入计数通道2。

微机原理课程8255A和8259A的工作原理设计.doc

微机原理课程8255A和8259A的工作原理设计.doc

题目名称:微机原理课程设计摘要通过上课老师讲和自己动手实验的方法去验证课本上的理论知识。

在了解微型计算机的基本组成的前提上,动手感受8255A和8259A的工作原理、工作方式、相关引脚、内部结构等内容。

在交通控制灯的实验设计中了解8255A的相关芯片的连接和在实验中增强自己的动手能力。

利用8259A的中断特性进行单级中断实验,从而更好的理解8259A的相关性质。

关键词:8255A 8259A目录1 概述 (1)1.1前言 (1)1.2微型计算机的发展史 (1)1.3典型的输入输出芯片 (1)1.4微型机算机的基本组成 (2)2 可编程并行接口8255A的应用设计 (3)2.18255A的基本特性 (3)2.1.1并行接口概述 (3)2.1.2 8255A的基本内容 (3)2.28255A的内部结构及引脚设计 (4)2.2.1 8255A的内部结构 (4)2.2.2 8255A的工作方式 (5)2.2.3 8255A的控制字 (6)2.2.4 8255A的引脚图 (7)2.3交通灯的设计 (8)2.3.1 设计构思 (8)2.3.2 任务分析 (9)2.3.3 流程框图 (9)2.3.4 实验小结 (10)3 8259A的应用设计 (11)3.1中断概述 (11)3.28259A的内部结构及引脚 (11)3.2.1 8259A内部结构图 (11)3.2 .2 8259A的工作方式 (12)3.38259A引脚图 (12)3.3.1 8259A与CPU相连的接口引脚。

(13)3.3.2与外设相接的接口引脚 (13)3.3.3构成级联时使用的引脚 (13)3.48259A应用实例 (14)3.58259A单级中断控制器的设计 (14)3.5.1 任务分析 (14)3.5.2实验要求 (15)3.5.3 流程框图 (15)3.5.4 实验小结 (15)4 总结 (16)5 参考文献 (17)1 概述1.1 前言自1981年IBM公司的通用微型计算机IBM PC/XT问世以来,在短短的20多年间,微型计算机一直以令人惊讶的速度发展。

8253计数器初始化编程

8253计数器初始化编程

8253计数器级联
FIN0=2MHz,FOUT0提供 微秒刷新信号(1000Hz), FOUT1提供秒刷新信号(1Hz), FOUT2提供分刷新信号,计数 器0工作在方式3下,二进制计数; 计数器1工作在方式2下,BCD码 计数;计数器2工作在方式2下, 二进制计数。
N0=2000 N1=1000 N2=60
A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
1 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0(01,10,11)
83ECH,83EDH,83EEH,83EFH
初始化编程
• MOV DX, 83EFH • MOV AL, CW0 • OUT DX,AL • ;写时间常数 • MOV DX, 83ECH • MOV AX, 1000 • OUT DX, AL • MOV AL,AH • OUT DX,AL
8253计数器初始化编程
步骤:先写入控制字,在写时间常数
以计数器0为例:
;写入控制字(通过控制口地址) MOV DX, CONTROL; 假设CONTROL为控制口地址 MOV AL, CW0 ;CW0为计数器0的控制值 OUT DX,AL ;写时间常数 MOV DX, CONT0;CONT0为计数器0的端口地址 MOV AX, N0;N0为计数器0的时间常数,16位 OUT DX, AL MOV AL,AH OUT DX,AL

8253、8255、8259综合实验

8253、8255、8259综合实验

8253、8255、8259 综合实验医电61刘晶061210058253、8255、8259综合实验一、实验目的1.掌握8259、8253、8255芯片结构及工作方式;2.熟悉8259、8252、8259的初始化和操作编程;3.掌握各芯片之间或与CPU间的连接方法。

二、实验设备b6000p实验教学系统;2.IBM-PC机三、实验内容1.8255A口为输出口,接8个发光二极管,B口为输入口,接8个拨动开关,“0”或“1”,从而实现把开关的状态显示出来。

2.用8253计数器0对外部事件进行计数,每发生5次外部事件,用发光二极管亮做提示。

3.用8253计数器0输出一个1S为周期的方波,并用发光二极管显示其周期。

4.8个LED二级管循环点亮,每个亮1秒钟,用8253定时1秒,通过8259中断实现1S 循坏显示四、实验结果1.8255程序如下:DATA SEGMENTCOUNT DB 1DATA ENDSSTACK SEGMENTDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACKSTART:MOV AX,DA TAMOV DS,AXMOV DX,8003H ;8255控制口MOV AL,10000010B ;控制字:A口方式0输出,B口方式0输入OUT DX,AL ;写入控制字TESTI:MOV DX,8001H ;指向B口IN AL,DX ;从B口读入开关状态MOV DX,8000H ;指向A 口OUT DX,AL ;A 口用LED 指示开关状态 JMP TESTI ;循环检测 CODE ENDSEND START 实验结果:程序运行后,波动开关,可以控制其对应二极管的亮、灭。

2.8253对外部事件计数 程序如下:DATA SEGMENT COUNT DB 1 DATA ENDSSTACK SEGMENT DB 100 DUP(?) STACK ENDSCODE SEGMENT MAIN PROC FARASSUME CS:CODE,DS:DA TA,SS:STACK START:MOV AX,DA TA MOV DS,AX JISHU:MOV AL,00010001BMOV DX,9003HOUT DX,ALMOV AL,3MOV DX,9000H OUT DX,ALDUHUI: MOV AL,00000000B MOV DX,9003H OUT DX,AL MOV DX,9000H IN AL,DX SUB AL,0 JZ JISHU JMP DUHUI MAIN ENDP CODE ENDS END START 实验结果:程序运行后,每发生5次外部事件(单脉冲电路产生),二极管亮1次作为MOV CX,0FFFFHDELAY: DEC CXCMP CX,00HJNZ DELAY3.8253输出周期为1s的方波程序如下:DATA SEGMENTCOUNT DB 1DATA ENDSSTACK SEGMENTDB 100 DUP(?)STACK ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DA TA,SS:STACKSTART:MOV AX,DA TAMOV DS,AXMOV AL,00110110BMOV DX,9003HOUT DX,ALMOV BX,62500MOV AL,BLMOV DX,9000HOUT DX,ALMOV AL,BHOUT DX,ALMAIN ENDPCODE ENDSEND START实验结果:二极管以1s为周期闪烁,即得到了1s为周期的脉冲波,并用二极管显示出来。

8255A的工作方式及其初始化编程

8255A的工作方式及其初始化编程

8255A的工作方式及其初始化编程【例7.1】设8255A的A口工作在方式0,数据输出,B口工作在方式1,数据输入,编写初始化程序(设8255A的端口地址为FF80H~FF83H)。

初始化程序如下:MOV DX, 0FF83H ; 控制寄存器端口地址为FF83HMOV AL, 10000110B ; A口方式0, 数据输出, B口方式1, 数据输入OUT DX, AL ; 将控制字写入控制端【例7.2】将8255A的C口中PC0设置为高电平输出,PC5设置为低电平输出,编写初始化程序(设8255A的端口地址为FF80H~FF83H)。

初始化程序如下:MOV DX, 0FF83H ; 控制端口的地址为FF83HMOV AL, 00000001B ; PC0设置为高电平输出OUT DX, AL ; 将控制字写入控制端口MOV AL, 00001010B ; PC5设置为低电平输出OUT DX, AL ; 将控制字写入控制端口8255A应用举例8255A作为通用的8位并行通信接口芯片,用途非常广泛,可以与8位、16位和32位CPU相连接,构成并行通信系统。

下面通过几个例子来讨论8255A在应用系统中的接口设计方法及编程技巧。

【例7.3】8255A连接开关和LED显示器的接口电路设计。

要求:8255A的A口连接四个开关K3~K0,设置为方式0输入,B口连接一个共阴极LED显示器,设置为方式0输出,将A口四个开关输入的16种状态0H~0FH送B口输出显示。

画出接口电路连接图,并编制汇编语言源程序实现上述功能。

分析:本题是8255A方式0应用的一个实例。

根据题意,接口电路如图7.13所示。

8255A的D7~D0, , 与CPU的D7~D0, , 对应连接,A0和A1与CPU的地址线A0和A1连接,与译码器输出端连接,A口的PA3~PA0连接四个开关K3~K0,其输入有16种组合状态,即0000~1111(0H~0FH),B口经过74LS07(集电极开路六正向高压驱动器)驱动之后与LED显示器连接,可输出一位十六进制数0~F。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8253的初始化程序1.确定端口地址:0310H、0312H、0314H、0316H2.确定工作方式(假设工作方式为):通道0,方式3通道1,方式1通道2,方式53.确定计数值:通道0:N0=1MHz/2KHz=500通道1:N1=480us/(1/1mhz)=480通道2:N2=264确定控制字:通道0:00110111B通道1:01110011B通道2:10011011B对3个通道的初始化程序如下:;通道0初始化程序MOV DX, 316HMOV AL,00110111BOUT DX,ALMOV DX,310HMOV AL,00HOUT DX, ALMOV AL,05HOUT DX,AL;通道1的初始化程序MOV DX, 316HMOV AL, 001110011B OUT DX, ALMOV DX, 312HMOV AL, 80HOUT DX, ALMOV AL, 04HOUT DX, AL;通道2初始化程序MOV DX, 316HMOV AL, 10011011B OUT DX, ALMOV DX, 314HMOV AL,26HOUT DX,AL; MOV AL,00H; OUT DX,AL8255A初始化程序对8255A进行初始化,要求端口A工作于方式1,输入;端口B工作于方式0,输出;端口C的高4位配合端口A工作,低4位为输入。

1.确定控制字端口地址:006CH。

2.确定工作方式:端口A,工作方式1,输入端口B,工作方式0,输出端口C,C0为输入,C4为配合工作3.确定方式选择控制字:1 011 100 1H(B9H)对3个端口的初始化程序如下MOV AL,B9HMOV DX,006CHOUT DX,AL另一个8255A初始化程序已知某8255A在系统中占用88~8BH号端口地址,现欲安排其PA,PB,PC口全部为输出,PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序:1.确定端口地址控制字以及PC口置位复位端口,8BH2.确定工作方式3.确定方式选择控制字MOV AL,80HOUT 8BH,ALMOV AL,ODHOUT 8BH,ALMOV AL,06HOUT 8BH,AL在8259A内部有两组寄存器:一组为命令寄存器,用于存放CPU写入的初始化命令字ICW1~ICW4(initialization command words);另一组为操作命令寄存器,用于存放CPU写入的操作命令字OCW1~OCW3(operation command words)。

1.初始化命令字ICW的格式当地址线A0为1时,8259A提供了4个(ICW1~ICW4)初始化命令字,并规定了严格的初始化步骤。

8259A是中断系统的核心器件,对它的初始化编程要涉及中断系统的软、硬件的许多问题,而且一旦完成初始化,所有硬件中断源和中断处理程序都必须受其制约。

(1)ICW1的格式ICW1的格式如图6.12所示。

图6.12ICW1的格式IC4 (ICW4 needed /no ICW4 needed):指示在初始化时是否需要写入命令字ICW4。

在80x86 CPU系统中需要定义ICW4,设IC4=1。

SNGL(single/cascade mode):指示8259A在系统中使用单片还是多片级联。

SNGL =1为单片,SNGL=0为多片级联。

ADI(call address interval):设置调用时间间隔,在80486 CPU中无效。

LTIM(level/edge triggered mode):定义IRi的中断请求触发方式。

LTIM=1为电平触发,LTIM=0为边沿触发。

D4:ICW1的标志位,恒为1。

D5~D7:未用,通常设置为0。

(2)ICW2的格式ICW2用于设置中断类型号,格式如图6.13所示。

图6.13ICW2的格式ICW2中的低3位ID2~ID0由中断请求输入端IRi(i=0~7)的编码自动引入,高5位T7~T3由用户编程写入。

若ICW2写入40H时,则IR0~IR7对应的中断类型号为40H~47H。

(3)ICW3的格式ICW3是级联命令字,在级联方式下才需要写入。

主片和从片所对应的ICW3的格式不同,主片ICW3的格式如图6.14所示,从片ICW3的格式如图6.15所示。

图6.14主片ICW3的格式图6.15从片ICW3的格式S7~S0与IR7~IR0相对应,若主片IRi(i=0~7)引脚上连接从片,则Si=1,否则Si=0。

ID2~ID0是从片接到主片IRi上的标识码。

例如,当从片的中断请求信号INT与主片的IR2连接时,ID2~ID0应设置为010,D7~D3未用,通常设置为0。

在中断响应时,主片通过级联信号线CAS2~CAS0送出被允许中断的从片的标识码,各从片用自己的ICW3和CAS2~CAS0进行比较,二者一致的从片被确定为当前中断源,可以发送该从片的中断类型码。

(4)ICW4的格式ICW4用于设定8259A的工作方式,其格式如图6.16所示.图6.16ICW4的格式mP(microprocessor):设置CPU模式。

mP=1为80x86模式,mP=0为8080/8085模式。

AEOI(auto end of interrupt):设置8259A的中断结束方式。

AEOI=1为自动结束方式,AEOI=0为非自动结束方式。

(master/slave):选择缓冲级联方式下的主片与从片。

=1为主片,=0为从片。

BUF(buffer):设置缓冲方式。

BUF=1为缓冲方式,BUF=0为非缓冲方式。

SFNM(special fully nested mode):设置特殊完全嵌套方式。

SFNM=1为特殊完全嵌套方式,SFNM=0为非特殊完全嵌套方式D7~D5:未定义,通常设置为0。

需要注意:当多片8259A级联时,若在8259A的数据线与系统总线之间加入总线驱动器,引脚作为总线驱动器的控制信号,D3位BUF应设置为1,此时主片和从片的区分不能依靠引脚,而是由来选择,当=0时为从片;当=1时为主片。

如果BUF=0,则定义无意义。

2.操作命令字OCW的格式操作命令字有OCW1, OCW2和OCW3。

(1)OCW1的格式OWC1为中断屏蔽字,写入中断屏蔽寄存器(IMR)中,对外部中断请求信号IRi实行屏蔽,格式如图6.17所示。

图6.17OCW1的格式当某位Mi(interrupt mask)为1时,则对应的IRi请求被禁止;当Mi为0时,则对应的IRi请求被允许。

在工作期间可根据需要随时写入或读出。

(2)OCW2的格式OWC2用于设置中断优先级方式和中断结束方式,其格式如图6.18所示。

L2~L0(IR level to be acted upon):8个中断请求输入端IR7~IR0的标志位,用来指定中断级别。

L2~L0指定的中断级别是否有效,由SL(specific level)位控制。

当SL=1时,L2~L0定义有效;当SL=0时,L2~L0定义无效。

EOI(end of interrupt):中断结束命令。

若EOI=1时,在中断服务子程序结束时向8259A回送中断结束命令EOI,以便使中断服务寄存器(ISR)中当前最高优先权位复位(普通EOI方式),或由L2~L0表示的优先权位复位(特殊EOI方式)。

R(rotation):设置优先权循环方式位。

R=1为优先权自动循环方式;R=0为优先权固定方式。

D4, D3为OCW2标志位。

(3)OCW3的格式OCW3用于设置或清除特殊屏蔽方式和读取寄存器的状态,格式如图6.19所示。

RR(read register command):读ISR和IRR命令位,RIS(read interrupt register select)读寄存器选择位。

当RR=1,RIS=0时,读取IRR命令;当RR=1,RIS=1时,读取ISR命令。

在进行读ISR或IRR操作时,先写入读命令OCW3,然后紧接着执行读ISR 或IRR的指令。

图6.19OCW3的格式例如,设8259A的两个端口地址为20H和21H,OCW3, ISR和IRR共用一个地址20H。

读取ISR内容的程序段为MOV AL, 00001011BOUT20H, AL; 读ISR命令写入OCW3IN AL, 20H; 读ISR内容至AL中读取IRR内容的程序段为MOV AL, 00001010BOUT20H, AL ; 读IRR命令写入OCW3IN AL, 20H ; 读IRR内容至AL中P(poll command):为中断状态查询位。

当P=1时,可通过读入状态寄存器的内容,查询是否有中断请求正在被处理,如有则给出当前处理中断的最高优先级。

中断状态寄存器如图6.20所示。

图6.20中断状态寄存器在读取中断状态字时,先写入中断查询命令,然后读取中断状态字,程序如下:MOV AL, 00001111BOUT20H, AL ; 读中断状态字命令写入OCW3IN AL, 20H ; 读中断状态字ESMM(enable special mask mode)与SMM(special mask mode)组合可用来设置或取消特殊屏蔽方式。

当ESMM=1,SMM=1时,设置特殊屏蔽;当ESMM=1,SMM=0时,取消特殊屏蔽。

3.8259A的初始化编程8259A的初始化编程需要写入初始化命令字ICW1~ICW4,对它的连接方式、中断触发方式和中断结束方式进行设置。

但由于ICW1~ICW4使用两个端口地址,即ICW1用A0=0的端口,ICW2~ICW4使用A0=1的端口,因此初始化程序应严格按照系统规定的顺序写入,即先写入ICW1,接着写ICW2, ICW3, ICW4。

8259A的初始化流程如图6.21所示。

操作命令字OCW1~OCW3的写入比较灵活,没有固定的格式,可以在主程序中写入,也可以在中断服务子程序中写入,视需要而定。

下面通过例子来说明如何编写8259A的初始化程序。

图6.218259A初始化流程图【例6.1】某微机系统使用主、从两片8259A管理中断,从片中断请求INT与主片的IR2连接。

设主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型号为40H,端口地址为20H和21H。

从片工作于完全嵌套、非缓冲和非自动结束方式,中断类型号为70H,端口地址为80H和81H。

试编写主片和从片的初始化程序。

根据题意,写出ICW1, ICW2, ICW3和ICW4的格式,按图6.21的顺序写入。

编写初始化程序如下:主片8259A的初始化程序如下:MOV AL, 00010001B; 级联, 边沿触发, 需要写ICW4 OUT20H, AL; 写ICW1MOV AL, 01000000B; 中断类型号40HOUT21H, AL; 写ICW2MOV AL, 00000100B; 主片的IR2引脚接从片OUT21H, AL; 写ICW3MOV AL, 00010001B; 特殊完全嵌套、非缓冲、自动结束OUT21H, AL; 写ICW4从片8259A初始化程序如下:MOV AL, 00010001B; 级联, 边沿触发, 需要写ICW4 OUT80H, AL; 写ICW1MOV AL, 01110000B; 中断类型号70HOUT81H, AL; 写ICW2MOV AL, 00000010B; 接主片的IR2引脚OUT81H, AL; 写ICW3MOV AL, 00000001B ; 完全嵌套、非缓冲、非自动结束OUT81H, AL ; 写ICW4。

相关文档
最新文档