目录
1、8253定时器/计数器
2、8259A中断控制器
3、8255A并行通信接口芯片
4、8251A串行通信接口芯片
1、8253定时器/计数器
1)D7、D6 计数器:题目会明确
2)D5、D4 读/写格式:看计数初值大小及数制
- 若D0为二进制,计数范围:0-65535。
当计数初值小于255,只读/写低8位,D5D4=01;
若大于255,当低8位全为0时,可令D5D4=10,只读/写高8位,
否则令D5D4=11,先读/写低8位,后读/写高8位。
- 若D0为BCD码,计数范围0-9999。
两位数以内,令D5D4=01,只读/写低8位;
两位数以上,若低两位数全为0,令D5D4=10,只读/写高8位,
否则令D5D4=11,先读/写低8位,后读/写高8位。
3)D3D2D1 工作方式:看输出波形及启动方式
不能自动重复计数的工作方式--不会输出连续波形
◆方式0:软件启动,计数结束输出高电平。
◆方式1:硬件启动,计数开始输出低电平,结束后又变高。
◆方式4:软件启动,计数结束输出一个CLK宽度的低电平。
◆方式5:硬件启动,波形与方式4相同。
能够自动重复计数的工作方式--会输出连续波形
◆方式2:软、硬件启动,计数到最后一个脉冲时输出低电平。
◆方式3:软、硬件启动,输出对称方波。
常见举例:
(1)输出方波:选方式3
(2)计数满后向CPU申请一次中断:选方式0
(3)每隔一段时间输出一个负脉冲:选方式2
4)D0 数制:D0=0 二进制计数 , D0=1 BCD码计数
2、8259A中断控制器
(1)初始化命令字ICW1
- ICW1必须写入A0=0的端口地址
- D7~D5和D2 --- 在8086/8088系统中不用,用户编程时可写入任意值
- D4 --- 恒为1,为ICW1的标志位
- D3 --- LTIM位,规定中断请求信号的触发形式。当D3=1时,表示为电平触发方式;当 D3=0时,表示为边沿触发方式
- D1 --- SNGL位,若8259A单片工作,D1=1,否则D1=0
- D0 --- IC4位,若使用ICW4,则D0=1,否则D0=0
(2)初始化命令字ICW2
- ICW2必须写入A0=1的端口地址,用来设置中断类型码,其高5位即T7~T3为中断类型码的高5位,低3位无意义,用户编程时可写入任意值。
(3)初始化命令字ICW3
ICW3只有系统中有多片8259A时才有意义,即只有ICW1中的D1=0时才需送此字。ICW3必须写入A0=1的端口地址,且对主片和从片编程时的定义不同.
- 主片ICW3:若IRi接有从片,则相应位置1,否则相应位置0
- 从片ICW3:D7-D3 随意设置,D2-D0 等于该从设备的INT端所连接的主片的IRi引脚的编码i。例如,某从片连在主片的IR3,则该从片的ICW3的低3位即为011B。因此,从片的ICW3是用来指出本片连在主片的哪一个引脚。ICW3的高5位无用,可写人任意值。
(4)初始化命令字ICW4
- ICW4必须写入A0=1的端口地址,其中 D7D6D5=000是ICW4的标志位
- D4 --- SFNM位,D4=1,中断优先级设置为特殊的全嵌套方式;D4=0,中断优先级设置为普通的全嵌套方式
- D3 --- BUF位,用来指出本片是否工作在缓冲方式,并由此决定了SP/EN的功能。D3=1表示8259A工作在缓冲方式(经缓冲器与总线相连),反之,8259A 工作在非缓冲方式(直接与总线相连)
- D2 --- M/S位,在缓冲方式下,用来表明相应8259A是否为主片,若为主片,置D2=1;否则置D2=0;非缓冲方式下随意设置
- D1 --- AEOI位,D1=1,置自动中断结束方式;D1=0,中断结束需用中断结束命令
- D0 --- μPM位,在8086/8088系统中,μPM=1;在8080/8085系统中,μPM=0
(5)操作命令字OCW1
- OCW1 即为中断屏蔽字,用来设置8259A的屏蔽操作。M7~M0代表8个屏蔽位,分别用来控制 IR7~IR0 输入的中断请求信号。如果某位Mi为1,则屏蔽相应的 IRi 输人的中断请求;如果某位 Mi 为0,则清除屏蔽,允许相应的 IRi 的中断请求信号进入优先级排队
(6)操作命令字OCW2
- OCW2必须写入A0=1的端口地址,且要求 D4D3=00
- D7 --- R位,优先权循环控制位。D=1表示为循环优先权方式,反之为固定优先权方式
在固定优先权方式下,中断优先级排序是IR0>IR1>…>IR7,即来自IR0的中断优先级最高,来自IR7的中断优先级最低。而在循环优先权方式下,优先级的队列是在变化的,刚刚服务过的中断请求的优先级降为最低,例如,目前的优先权队列是IR0>IR1>…>IR7,而来自IR3的中断刚刚被服务过,则优先权队列变为IR4>IR5 >…>IR0>IR1>IR2>IR3。初始时可以是IR7级别最低,也可由L2~L0的编码来确定(此时要求D6=1)。
- D6 -- SL位,用来指定L2~L0是否有效。D6=1时,OCW2的低3位即L2~L0有效,反之无效
- D5 --- EOI位,D5=1 表明相应操作命令是中断结束命令
- D2~D0 --- L2~L0位,表明所对应的中断源,注:只有D6=1时有效
(7)操作命令字OCW3
- OCW3必须写入A0=0的端口地址,且要求D4D3=01、D7=0
- D6 --- ESMM位,特殊屏蔽方式允许位,D6=1即允许特殊屏蔽方式
- D5 --- SMM位,特殊屏蔽方式位,只有当D6=1时这位才起作用。若D6D5=11,则8259A进入特殊屏蔽方式;若D6D5 =10,则恢复原来的屏蔽方式
- D2 --- P位,查询方式位,D4=1表示相应的操作字是查询中断源命令
- D1 --- RR位,读寄存器命令字,D1=1时允许读ISR和IRR寄存器,前提是D2必须为0,即不处于查询方式
- D0 --- RIS位,读ISR和IRR的选择位,它必须和D1位结合起来使用。当D1D0= 10时,允许读IRR的内容;当D1D0=11时,允许读ISR的内容
3、8255A并行通信接口芯片
D3 ---设置C口的PC4-PC7是做输入还是输出
D0 ---设置C口的PC0-PC3是做输入还是输出
例 若系统要求8255A 的A口方式2,B口方式1输出。编写初始化程序(假设8255A的端口地址为04H~07H)。
分析 确定控制字为:11×××10×B
这时,共有4位的取值是任意的,其中D0和D3是由于此时C口用作应答联络线,是无法用编程来改变的,D4位是由于A口方式2是双向(即可同时输人/输出),此位的编程已失去意义,D5位则是控制字本身格式决定。
A口方式2要求使PC4和 PC6置位来开放两个中断,B口方式1要求使PC2置位来开放中断,需要确定相应的按位置位/复位的控制字。
PC4置位:0×××1001B
PC6置位:0×××1101B
PC2置位:0×××0101B
初始化程序如下(以上控制字中不用的位均置0)。
MOV AL,0C4H
OUT 07H,AL ;设置工作方式
MOV AL,09H
0UT 07H,AL ;PC4置位,A口输入允许中断
M0V AL,ODH
0UT 07H,AL ;PC6置位,A口输出允许中断
MOV AL,05H
OUT 07H,AL ;PC2置位,B口输出允许中断
总结:8255初始化一般只需将控制字写入控制端口地址,若要求PCn置/复位,则将置/复位控制字也写入同一控制端口地址。
4、8251A串行通信接口芯片
(1)方式选择控制字(模式字)
- D1、D0 --- 用来确定8251A是工作于同步方式还是异步方式,如果是异步方式则可由D1D0的取值来确定传送速率,×1表示输入的时钟频率与波特率相同;×16表示时钟频率是波特率的16倍,×64表示时钟频率是波特率的64倍。因此通常称1、16、64 为波特率系数,它们之间存在着如下关系:发送/接收时钟频率=发送/接收波特率×波特率系数
- D3、D2 --- 用来定义数据字符的长度,每个字符可为5、6、7或8位
- D4 --- 用来定义是否允许带奇偶校验。当D4=1时,由D5位定义是采用奇校验还是偶校验
- D5 --- 用来定义是采用奇校验还是偶校验,D5=1时,采用偶校验,反之采用奇校验
- D7、D6 ---这两位在同步方式和异步方式时的定义是不相同的。异步方式时,通过它们的不同编码来定义停止位的长度(1、1.5或2位);而同步方式时,则通过它们的不同编码来定义是外/内同步或单/双同步
(2)操作命令控制字(控制字)
- D0(TxEN) --- 允许发送。D0=1则允许发送,反之则不允许发送。8251A 规定,只有当TxEN=1时,发送器才能通过TxD线向外部发送数据
- D1(DTR) --- 数据终端准备就绪。D1=1表示终端设备已准备好,反之表示终端设备未准备好
- D2(RxE) --- 允许接收。D2=1允许接收,反之则不允许接收。8251A规定,只有当RxE=1时,接收器才能通过RxD线从外部接收数据
- D3(SBRK) --- 发送终止字符。D3=1,强迫TxD为低电平,输出连续的“0”信号
- D4(ER) --- 错误标志复位。D4=1,使状态寄存器中的错误标志(PE/OE/FE)复位
- D5(RTS) --- 请求发送。D5=1,使8251A 的
输出引脚有效,表示CPU已作好发送数据准备,请求向调制解调器或外设发送数据
- D6(IR) --- 内部复位。D6=1,追使8251A内部复位重新进入初始化
- D7(EH) --- 外部搜索方式。该位只对同步方式有效。D7=1,表示开始搜索同步字符。
(3)状态字
- D0(TxRDY) --- 发送准备好标志,它与引脚TxRDY的含义有些区别。TxRDY状态标志为“1”只反映当前发送器已空,而TxRDY引脚为“1”的条件,除发送数据缓冲器已空外,还要求
=0和 TxEN=1,也就是说它们存在下列关系: TxRDY引脚端=(TxRDY状态位=1)且(
=0)且(TxEN=1)
- D3(PE) --- 奇偶错标志位。PE=1,表示产生了奇偶错,但它不中止8251A 的工作
- D4(OE) --- 溢出错标志位。OE=1,表示当前产生了溢出错,即CPU还没来得及将上一个字符取走,下一个字符又来了。虽然它不中止8251A 继续接收下一个字符,但上一个字符将丢失
- D5(FE) --- 帧校验错标志位,只对异步方式有效。FE=1,表示未检验到停止位,但它不中止8251A 的工作