(18)8255A的编程6.52.ppt

上传人:仙人指路1688 文档编号:2933818 上传时间:2023-03-04 格式:PPT 页数:20 大小:332KB
返回 下载 相关 举报
(18)8255A的编程6.52.ppt_第1页
第1页 / 共20页
(18)8255A的编程6.52.ppt_第2页
第2页 / 共20页
(18)8255A的编程6.52.ppt_第3页
第3页 / 共20页
(18)8255A的编程6.52.ppt_第4页
第4页 / 共20页
(18)8255A的编程6.52.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《(18)8255A的编程6.52.ppt》由会员分享,可在线阅读,更多相关《(18)8255A的编程6.52.ppt(20页珍藏版)》请在三一办公上搜索。

1、6.5.3 8255A的编程(P211)(1)8255工作方式控制字,0-Output1-Input,例1:设8255A口、B口、C口都工作在方式0。A口输出;B口输出,C口输入,填出方式字,1 0 0 0 1 0 0 1,标 A A C高4 B B C低4志 方式0 输出 输入 方式0 输出 输入,方式控制字为 89H,例2:设8255A口、B口、C口都工作在方式0。A口输入;B口输出,C口高4位输出,低4位输入,填出方式字,1 0 0 1 0 0 0 1,标 A A C高4 B B C低4志 方式0 输入 输出 方式0 输出 输入,方式控制字为 91H,*C口的两个部分可以分别设置输入/输

2、出工作方式,例3:设8255A口工作在方式1输入;B口工作在方式1输出;C口输出,填出方式字,1 0 1 1 0 1 0 0,标 A A C高4 B B C低4志 方式1 输入 输出 方式0 输出 输出,方式控制字为 0B4H,注意:A口方式1输入占用PC3、4、5作为联络线;B口方式1输出占用PC0、1、2作为联络线;C口仅余PC6、7作为输出,(2)C口按位置位/复位控制字*专门用来对C口8条口线中任一口线置1/置0*用“按位置1/置0控制字”完成C口的按位操作。,*必须写入控制寄存器,例1:把PC4置1(置位),例2:把PC2置0(复位),(3)初始化举例例如,若规定端口A为方式1输出,

3、端口C上半部分为输出,端口B指定为方式0输入,端口C下半部分为输入,则方式选择控制字应是:10100011B或A3H。若将此控制字的内容写入8255A的控制寄存器,即完成了对8255A的初始化。初始化程序段为:,MOV DX,210H;假设控制端口的地址为210HMOV AL,0A3H;方式选择控制字OUT DX,AL;送到控制端口,又如:要使端口C的PC5置“1”,PC2置“0”,可通过下面的程序段实现(假设8255A的控制端口地址为83H):,MOV AL,0BH;PC5置“1”OUT 83H,AL;送到控制端口MOV AL,04H;PC2置“0”OUT 83H,AL;送到控制端口,(4)

4、读状态字 略,6.5.4 8255A的应用,(1)8255A在PC中的应用(暂缓)PC使用一片8255A管理键盘、控制扬声器和输入系统配置开关的状态等。这片8255A的端口A、B、C和控制口的地址分别为60H、61H、62H和63H。在PC机中,8255A工作在基本输入/输出方式。*端口A为方式0输入,用来读取键盘扫描码;*端口B工作于方式0输出,PB6和PB7控制键盘接口电路、PB0和PB1控制扬声器发声;端口C为方式0输入,存放系统配置开关的状态。这样,系统利用如下两条指令就完成了8255A的初始化编程:MOV AL,10011001B;8255A的方式控制字99 OUT 63H,AL;设

5、置端口A和端口C为方式0输入、;端口B方式0输出。80286以上的微机系统中,由其他的多功能芯片取代了8255A的功能,为了保证和低档微机的兼容性,系统仍使用8255A的口地址,仍然可从60H端口地址读取按键扫描码,可使用PB0和PB1来控制发声系统。,(2)8255A在输入/输出中的应用 设系统中外扩了一片8255A和相应的实验电路,如图所示。要求每按一次K键,则使发光二极管LEDi的状态随开关Ki的状态变化(Ki闭合,LEDi亮;Ki断开,LEDi灭)。(P214),操作结束条件:主机标准键盘有任意键按下。,1)开关量输入/输出说明K7闭合PB7=0 通过指令取反 PA7=1 LED7亮:

6、K0闭合PB0=0 通过指令取反 PA0=1 LED0亮,3)8255各个端口工作方式选择 由于开关K连接在PC2上,并且要求K控制操作。在方式1下PC2充当STBB信号(见P209 图6.41),该信号有效时锁存B口的信息(开关状态),完成选通输入。所以,口B:方式1输入。口A各条口线,只需要输出1或0就可以确定LED的亮或灭,选用方式0输出即可。,4)CPU与8255交换信息的方式 可以有两种:查询方式,或中断方式,*1按查询方式完成该例方式选择控制字为:10000110B,即86H.,1 0 0 0 0 1 1 0,标 A A C高4 B B C低4志 方式0 输出 输出 方式1 输入

7、输出,*查询什么信号?查询STBB(PC2)?,5)关于BIOS INT 16H 键盘输入子功能 格式:MOV AH,01;1号功能调用号:读键盘缓冲区字符 INT 16H;完成操作 出口参数:Z=0,有键入,AL=键入字符的ASCII码 AH=扫描码 Z=1,无键入。,参考程序如下:CODE SEGMENT ASSUMECS:CODEMAIN:MOVAL,86HOUT83H,AL;写入8255的方式选择控制字AGAIN:MOVAH,1;INT 16H;标准键盘有键按下?,JNZDONE;有键入,转DONE,准备结束操作 INAL,82H;无键入,读8255A C口TESTAL,0000001

8、0B;K键已按下(PC1=1?)?;通过判断PC1是否为1来实现。JZ AGAIN;没有按下,继续查询K状态。IN AL,81H;K键已经按下,读8255A B口NOTAL;取反OUT80H,AL;输出到A口,使对应的LED亮JMPAGAIN;继续DONE:MOVAH,4CH;INT21HCODEENDSENDMAIN,*2按中断方式完成该例方式选择控制字为:10000110B,即86H.通过INTRB向CPU发中断请求,必须把INTEB设为1,以允许B口发出中断请求。为此必须把PC2置“1”,对应的“置位/复位控制字”为:00000101B或05H,0 000 010 1 05H标志 无定义

9、 选中 把选中位 PC2 置1参考程序如下:CODESEGMENT ASSUMECS:CODE;以下是主程序,MAIN:MOVAL,86H OUT83H,AL;写入8255的方式选择控制字 MOVAL,05H;置位/复位控制字 OUT83H,AL;PC2=1(INTEB=1)允许B口发中断请求 MOVAX,0;0段 MOVDS,AX;填充段基址 MOVBX,0AH*4;确定中断向量在“表”中的起始位置 LEAAX,INTSUB;取中断向量的偏移地址 MOVBX,AX;偏移地址填入“表”中 MOVAX,SEGINTSUB;取中断向量的段基址 MOVBX+2,AX;段基址填入“表”中 IN AL,

10、21H;读8259A的IMR ANDAL,11111011B;OUT21H,AL;开放8259A IR2的中断 STI;CPU开中断AGAIN:MOVAH,1 INT16H;标准键盘有键按下?JZAGAIN;没有,等待按键或中断 MOVAH,4CH INT21H;返回DOS操作系统,;以下是中断服务程序(注意,什么时候CPU执行本程序?)INTSUB PROCFARIN AL,81H;读8255A端口BNOT ALOUT 80H,AL;输出至8255A端口AMOV AL,20HOUT 20H,AL;中断结束命令IRET;中断返回INTSUB ENDPCODE ENDS;代码段结束 ENDMAI

11、N,8255应用(补充)(1)中断控制功能 8255有两个中断请求输出引脚 INTRA 和INTRB,可以通过8259中断控制器进行中断管理,向CPU发出中断请求。,CPU,8259,8255,*INTRA 能够发出中断请求的必要条件:INTEA=1;控制INTEA=1的操作是:用C口置位/复位控制字,使PC4置1(输入)。用C口置位/复位控制字,使PC6置1(输出)*INTRB 能够发出中断请求的必要条件:INTEB=1;控制INTEB=1的操作是:用C口置位/复位控制字,使PC2置1(输入、输出)。,见P209图6.41,P210 图6.42,例1:设8255A口工作在方式1输入(选通输入

12、,占PC5、4、3),B口方式1输出(选通输出,占PC2、1、0),见P209图6.41,P210 图6.42两个口都允许发出中断请求。C口余下的PC6,PC7作为输入。编写初始化程序,1)方式控制字:BCH,1 0 1 1 1 1 0 0,标 A A C高4 B B 无意义志 方式1 输出 输入 方式1 输出,PC4置位/复位控制字 0 000 100 1 09H PC2置位/复位控制字 0 000 010 1 05H,初始化编程:MOV DX,20BH;控制寄存器地址 MOV AL,0BCH;方式控制字 OUT DX,AL;MOV AL,09H;OUT DX,AL;INTEA=1,允许A口

13、发中断 MOV AL,05H OUT DX,AL;INTEB=1,允许B口发中断,注意:方式控制字和置位/复位控制字都是送入控制口,请看一看P209图6.41和P210 图6.42!,例2:在如下电路中,74LS138,8255,1)如果要求8255的4个口地址为:31CH,31DH,31EH,31FH138的输入端应当如何与CPU的地址总线连接?2)8255的其它信号线应当怎么连接?3)要求A口控制8个LED,B口采集8个开关信号,那么,A、B口各自应当工作在什么方式下?4)要求LED的亮、灭与开关的开闭状态对应,编写程序,只要满足A9A2的电平要求,可以有多种构成方法,2)连线如图所示3)

14、A口方式0,输出;B口方式0,输入4)程序段:MOV DX,31FH;控制口地址 MOV AL,82H;方式控制字 OUT DX,ALLOOP:MOV DX,31DH;B口地址 IN AL,DX;读入开关状态 DEC DX;取A口地址31CH OUT DX,AL;开关状态控制LED亮、灭 JMP LOOP;:,例3:8254,8255,8259综合应用,1MHz,8255 B口控制8个LED(L1L8),初始状态为L8亮,其余灭。8254每秒产生一次中断请求信号,加在8259的IR3(其中断向量号为0BH)引脚上,通过8259向CPU请求中断,在中断服务程序中,依次点亮右边一个LED(其余灭)

15、。当K11时,结束运行。,1)8254的通道1(T1)工作于方式3,其OUT1输出频率为1KHz(周期=1ms)的方波,输入到CLK0(T0工作于方式0),使OUT0输出频率为1Hz(周期1秒)的信号,作为中断请求信号。口地址:20CH20FH,2)利用系统机内的8259,因初始化工作已经由系统完成,我们只需按要求送入操作控制字OCW。口地址:20H21H,3)8255 B口工作于方式0输出,控制LED;A口工作于方式0输入,读入PA0(K1)的状态,以确定是否结束运行。口地址:208H20BH4)OUT0加在三态门的输入端,PC7为0时,打开三态门。,*在80X86中,主片8259的IR0I

16、R7的中断向量号已经设定为:08H0FH,8254,8255,8259综合应用程序清单CODE SEGMENT ASSUME CS:CODE;8255初始化START:MOV DX,20BH;取8255控制口地址 MOV AL,90H;B,C方式0输出,A口方式0,入 OUT DX,AL;8255初始化 MOV AL,0EH;置位/复位控制字 OUT DX,AL;PC7置0,打开三态门;中断逻辑 mov ax,350bh;DOS 35号功能调用:;取原来0B*4处中断向量 int 21h;入口:AH=35,AL=0BH;出口:ES:BX push es;保存原中断向量段基址 push bx;保

17、存偏移地址 MOV AX,SEG INTP;取中断服务程序入口地址的段基址 MOV DS,AX;段基址在DS MOV DX,OFFSET INTP;DX:偏移地址 MOV AX,250BH;DOS 25号功能调用:填充中断向量表 INT 21H;入口:AH=25H,AL=0BH,DS:DX IN AL,21H;从中断屏蔽寄存器IMR读屏蔽字 AND AL,0F7H;D3位(IMR3)=0,其它位状态不变 OUT 21H,AL;回送屏蔽字(OCW1),开放IR3的中断 STI;CPU开中断,;8254初始化 MOV DX,20FH;8254控制寄存器地址 MOV AL,76H;通道1:方式3(方

18、波发生器),字读/写 OUT DX,AL;通道1初始化 MOV DX,20DH;通道1地址 MOV AX,1000;通道1计数初值 OUT DX,AL;先写低字节 MOV AL,AH;OUT DX,AL;再写高字节 MOV DX,20FH;控制寄存器地址 MOV AL,30H;通道0:方式0(计数),字读/写 OUT DX,AL;通道0初始化 MOV DX,20CH;通道0地址 MOV AX,1000;通道0计数初值 OUT DX,AL;先低 MOV AL,AH OUT DX,AL;后高;LED初始状态 MOV BL,80H;BL保存LED状态 MOV AL,BL;MOV DX,209H;82

19、55B口地址 OUT DX,AL;点亮最左边一个LED(L8),WAIT0:HLT;等待外中断(IR3)MOV DX,208H;从中断服务程序返回到此.;取8255A口地址 IN AL,DX;读入开关状态 TEST AL,01H;检测PA0(K1)JZ WAIT0;K1未打开,继续运行程序 pop dx;K1打开,准备结束运行,取原中断向量 pop ds mov ax,250bh;回填 int 21h MOV AL,0;MOV DX,209H;B口地址 OUT DX,AL;熄灭全部LED MOV AH,4CH;INT 21H,;中断服务程序INTP PROC FAR ROR BL,1;循环右移一位 MOV AL,BL MOV DX,209H;B口地址 OUT DX,AL;点亮下一个LED MOV DX,20CH;8254通道0 MOV AX,1000;重装计数初值 OUT DX,AL;,MOV AL,AH;OUT DX,AL;MOV AL,20H;置EOI(OCW2),结束中断 OUT 20H,AL;中断返回 IRETINTP ENDP;CODE ENDS END START,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号