3).8251A的引脚功能
5.8251A的命令字和状态字 1)方式选择命令字
31
2)工作命令字
3)状态字
【例9-10】试编写程序段,用异步串行通信方式输出STRING开始字符串‘Receiver ready $’,$字符串的结束标记。设8251A数据端口地址为90H,方式命令状态端口地址为91H。 MOV AL,0 OUT 91H, AL OUT 91H, AL OUT 91H, AL MOV AL,40H
OUT 91H, AL ;写入复位命令
MOV AL,7EH ;一个停止位,偶校验,8个数据位 ;波特率因子16
OUT 91H, AL ;写入方式选择命令字 MOV BX, OFFSET STRING ;BX指向缓冲区首址 WAIT:IN AL, 81H ;读状态字
TEST AL, 1 ;测试TxRDY位
JZ WAIT ;为0,未准备好 等待 MOV AL ,[BX] ;取一个字符
CMP AL, ’ $ ’ ;判断是否是结束标志
32
JE EXIT
OUT 90H,AL ;输出字符 JMP WAIT
EXIT: …… ;结束
【例9-11】试编写程序段,用异步串行输入方式输入1000个数据,存放到内存BUF开始的单元中。要求使8251A工作在异步方式,波特率系数为16,数据长度为7位,偶校验,2个停止位。设8251的端口地址为80H和81H。 MOV AL,0FAH
OUT 81H, AL ;写入方式选择字 MOV AL,37H
OUT 81H, AL ;写入工作命令字 LEA BX, BUF ;BX指向缓冲区首址 MOV CX, 1000 ;设置计数器初值 WAIT0:IN AL, 81H ;读状态字 TEST AL, 2 ;测RxRDY位
JZ WAIT0 ;未收到字符等待 IN AL, 80H ;从数据口读入数据
MOV [BX],AL ;将字符保存到缓冲区 INC BX ;缓冲区指针下移一个单元 IN AL,81H ;读状态字
TEST AL, 38H ;判断有无三种错误 JNZ ERROR ;有错,则转出错处理程序 LOOP WAIT0 ;没错,判是否结束循环 JMP EXIT ;结束
ERROR: CALL ERR_PRO ;转入错误处理程序 EXIT: ……
四、中断技术
1.中断的基本概念
33
1)中断:随机事件、暂停现行程序、处理(执行)中断程序、返回原程序继续执行。 2)中断的优点:节省CPU时间,实现实时处理。 3)中断过程描述
4)中断过程的基本概念
(1)中断源:抽象随机事件;实际设备发出的中断申请中断的信号
(2)中断类型号——中断源的(名字)编号,0~255。
(3)中断服务子程序——处理事件的程序(每个中断源对应自己的)
(4)中断向量——中断服务子程序(入口)起始地址,逻辑地址=段地址:偏移地址 (5)中断向量表——集中存放中断向量的表。
一张中断向量表包含256个中断向量,每个向量包含4个字节,2个低地址字节是IP偏移量,2个高地址字节是CS段地址,中断向量表需256*4K=1M存储空间,设置在存储器的最低端,即00000H~003FFH。CPU对编号n(中断类型码)乘以4得到4n指向该中断向量的首字节,CPU将把有关的标志位和断点地址的CS和IP值入栈。
四、8259A
8259的工作状态和操作方式,由CPU的命令而定。
命令有两种
34
ICW1~ICW4是在计算机系统启动时由初始化程序设置的,一旦确定,在系统工作过程中,一般不再改变。
OCW1~OCW3是由应用程序设定的,用来对中断处理过程实现动态控制。 1、8259的初始化命令字ICW1~ICW4
● ICW1~ICW4在初始化程序中设定,且在整个工作过程中保持不变。 ● ICW1~ICW4必须按顺序设定。 ●ICW1写入8259偶地址中(A0=0)。 ●ICW2~ICW4写入8259奇地址中(A0=1)。 ①ICW1的格式及含义 D7~D5位无效
D4=1,特征位,表示初始化命令ICW1。 D3:LTIM 中断信号IR0~IR7的触发方式 0:边沿 1:高电平 D1:SGNL 是否单片方式 0:多片级联 1:单片 D0:IC4 是否有 ICW4
0:无 1:有 ②ICW2的格式及含义 在写ICW1之后,对A0=1
的端口第一次写入的数据是ICW2 。
中断类型码=(T7~T3)+ 中断源引入管脚编号 如:写入20H,中断类型码为20H~27H; 00100000 写入40H,中断类型码为40H~47H; 01000000 写入45H,中断类型码仍为40H~47H. 01000101 ③ICW3的格式及含义
系统中有级联(ICW1.SNGL=0),在ICW2之后写ICW3。 对于主片:置1的位表示对应的引脚IR有从片级联。
对于从片:用D2~D0表示和主片的对应引脚级联。
④ICW4的格式及含义(ICW1.IC4=1)
例:设某8086系统中使用一片8259A,其端口地址为210H、211H,若系统要求中断请求为电平触发,其8个中断源的类型码为
60H~67H,不用缓冲方式,采用中断自动结束方式,试编写初始化程序段。 解:按要求确定初始化命令字
ICW1: 0 0 0 1 1 0 1 1 B=1BH ICW2: 0 1 1 0 0 0 0 0 B=60H ICW4: 0 0 0 0 1 0 1 0 B=0AH 初始化程序段:
MOV DX,210H ;DX指向偶地址端口 MOV AL,1AH ;
35