




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、常用的可编程接口芯片介绍第1页,共172页,2022年,5月20日,20点53分,星期三 定时信号可用三种方法:软件延时不可编程的硬件定时可编程的硬件定时第2页,共172页,2022年,5月20日,20点53分,星期三第一节 定时/计数器及其应用 一、 Intel 8254的内部结构 数据总线 缓冲器 读/写 逻辑电路 控制 寄存器内部总线0#计数器1#计数器2#计数器CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 RD WR A0 A1 CSD0-D7CRCEOL第3页,共172页,2022年,5月20日,20点53分,星期三 二、8254与系
2、统的连接:CLKGATEOUTD0D7WRRDA1A0CSDBWRRDA1A0译码器高位地址外设Intel 8254第4页,共172页,2022年,5月20日,20点53分,星期三三、 Intel 8254端口操作表 第5页,共172页,2022年,5月20日,20点53分,星期三四、Intel 8254控制字/状态字 1. 方式控制字 D7D6D5D4D3D2D1D0SC1SC2RW1RW0M2M1M0BCDSC1,SC000;选择0#计数器.SC1,SC001;选择1#计数器.SC1,SC010;选择2#计数器.SC1,SC011;读出命令(8253为非法操作).RW1,RW000;锁存命
3、令. RW1,RW001;只访问低8位.RW1,RW010;只访问高8位.RW1,RW011;先访问低8位,后访问高8位.第6页,共172页,2022年,5月20日,20点53分,星期三 方式控制字(续) M2M1M0000方式0M2M1M0001方式1M2M1M0 x10方式2M2M1M0 x11方式3M2M1M0100方式4M2M1M0101方式5D00,按二进制减1计数,初值范围0000HFFFFHD01,按十进制减1计数,初值范围0000H9999H第7页,共172页,2022年,5月20日,20点53分,星期三 2. 读出控制字D7D6D5D4D3D2D1D011锁存当前计数值 锁存
4、计数器状态 计数器2 计数器1计数器00D7=1、D6=1和D0=0是标识位D5=0表示锁存计数值,以便CPU读取;D4=0是将计数器的状态锁存到状态寄存器;D3D1是选择计数器,D31选中2#计数器;D21选中1#计数器;D11选中0#计数器。 第8页,共172页,2022年,5月20日,20点53分,星期三3. 状态字D7D6D5D4D3D2D1D0输出电平计数值是否有效 RW1RW0M2M1M0BCDD5D0位与控制字对应位的意义相同.D7OUT状态,1表示高电平, 0表示输出低电平.D6计数初值是否已装入计数器中, 1表示无效计数, 0表示已将计数初值装入计数器中,可以读计数器的值。
5、第9页,共172页,2022年,5月20日,20点53分,星期三五、Intel 8254的编程命令1写入命令(先写控制字,再写计数初值)任何一个计数器都有3个写入命令:设置控制字命令用来选择计数器、写入计数初值的规则、设定工作方式和计数格式.设置计数初值命令写入计数初值寄存器.输出锁存器的锁存命令锁存命令与读出命令一起使用,当前计数值在输出锁存器中锁定后才读出.第10页,共172页,2022年,5月20日,20点53分,星期三 2读出命令(先锁存,再读操作)在读操作之前先将计数锁存命令送入要读的计数器的控制端口中.读出命令的目的是CPU读计数器中的计数值,读操作由方式控制字中的RW1,RW0的
6、状态组合来控制.第11页,共172页,2022年,5月20日,20点53分,星期三例:读取0#计数器当前的计数值,程序段如下:(设8254的片选地址范围是0E0H0E3H)MOV AL,00H ;0#计数器的锁存命令OUT 0E3H,AL ;锁存命令写到控制口IN AL,0E0H ;读锁存器的低字节MOV BL,AL ;低字节送BLIN AL,0E0H ;读锁存器的高字节MOV BH,AL ;高字节送BH则BX的内容就是0#计数器当前的计数值。第12页,共172页,2022年,5月20日,20点53分,星期三六、Intel 8254的工作方式按功能分1、计数器方式:当计数器被赋予初值时,在门控
7、信号GATE开启状态下,由输入的CLK时钟对计数器进行减1计数。在CLK连续脉冲作用下,计数器减到0时,由OUT端输出信号。作为对外部事件计数的CLK可以是均匀的、连续的,也可以是非均匀连续的,它只是脉冲数量问题,不是脉冲的时间问题。第13页,共172页,2022年,5月20日,20点53分,星期三2、定时器方式:当定时器被赋予初值时,在GATE开启状态下,由CLK时钟脉冲触发定时器开始工作,定时器在OUT端不间断地产生CLK时钟整数倍的定时时间间隔。CLK必须是连续的、均匀的、周期精确的时间脉冲,并且最终结果还与CLK脉冲周期有关,即计时时间等于计数值乘CLK脉冲周期。第14页,共172页,
8、2022年,5月20日,20点53分,星期三每个计数器都有6种工作方式共同特点:1、控制字写入计数器的控制寄存器时,输出端OUT进入初始状态。设置成方式0时,OUT端的初始状态为低电平;设置成其他方式时,OUT端的初始状态为高电平。2、初始值被写入8254相应计数器的初值寄存器CR以后,要用一个时钟脉冲的上升沿和下降沿将初值送入计数执行部件(减计数器),减计数器从下一个时钟开始进行计数。第15页,共172页,2022年,5月20日,20点53分,星期三3、用时钟脉冲的上升沿对门控信号GATE进行采样。如果计数器工作在方式0或方式4,则门控信号为电平触发;工作在方式1或方式5时,则门控信号为上升
9、沿触发;工作在方式2或方式3时,门控信号可以用上升沿触发,也可用下降沿触发。4、在时钟脉冲的下降沿,计数器作减1计数。5、0000H是计数器的最大初始值。二进制计数时该初值相当于65536,BCD码计数时相当于10000.第16页,共172页,2022年,5月20日,20点53分,星期三计数器在不同的工作方式下,主要区别:1、OUT引脚的输出波形不同。2、启动计数器计数的触发方式不同。3、门控信号GATE对计数器的影响不同。4、有的工作方式具备“初值自动重装”的功能。第17页,共172页,2022年,5月20日,20点53分,星期三六、Intel 8254的工作方式 1. 方式0计数结束输出正
10、跳变信号 第18页,共172页,2022年,5月20日,20点53分,星期三第19页,共172页,2022年,5月20日,20点53分,星期三第20页,共172页,2022年,5月20日,20点53分,星期三2. 方式1硬件可重复触发的单稳第21页,共172页,2022年,5月20日,20点53分,星期三第22页,共172页,2022年,5月20日,20点53分,星期三第23页,共172页,2022年,5月20日,20点53分,星期三 3. 方式2分频器第24页,共172页,2022年,5月20日,20点53分,星期三第25页,共172页,2022年,5月20日,20点53分,星期三第26页,
11、共172页,2022年,5月20日,20点53分,星期三4. 方式3方波发生器第27页,共172页,2022年,5月20日,20点53分,星期三第28页,共172页,2022年,5月20日,20点53分,星期三第29页,共172页,2022年,5月20日,20点53分,星期三5. 方式4软件触发的选通信号发生器第30页,共172页,2022年,5月20日,20点53分,星期三第31页,共172页,2022年,5月20日,20点53分,星期三第32页,共172页,2022年,5月20日,20点53分,星期三6. 方式5硬件触发的选通信号发生器第33页,共172页,2022年,5月20日,20点5
12、3分,星期三第34页,共172页,2022年,5月20日,20点53分,星期三第35页,共172页,2022年,5月20日,20点53分,星期三七、Intel 8254的初始化程序流程写控制字写计数值低8位写计数值高8位 写入顺序:以计数器为单位初始化,也可以先写所有计数器控制字,再写入初值第36页,共172页,2022年,5月20日,20点53分,星期三Intel 8254的初始化编程1、计数初值已知 初值FFH 初值 FFH2、计数初值未知 或 3、读当前计数值:先锁存再读4、级联:计数时间超出一个16位计数器 范围第37页,共172页,2022年,5月20日,20点53分,星期三例:82
13、54的1#计数器工作在方式0,二进制计数,计数初值为4.设端口地址为E0H,E2H,E4H和E6H.初始化程序段:MOV AL,50H ;设置1#计数器的控制字OUT 0E6H,AL ;写控制字MOV AL,4 ;设置计数初值OUT 0E2,AL ;初值写入1#计数器1、计数初值已知:初值FFH第38页,共172页,2022年,5月20日,20点53分,星期三例:设8254的0#计数器工作于方式1,计数初值为3,按二进制计数.初始化程序段为: MOV AL, 12H ;设置0#计数器控制字OUT 0E6H,ALMOV AL, 3 ;设置计数初值OUT 0E0H,AL第39页,共172页,202
14、2年,5月20日,20点53分,星期三例:设8254的2#计数器工作在方式2,按二进制计数,计数初值为3.初始化程序段如下: MOV AL,94H ;设控制字OUT 0E6H,ALMOV AL,3 ;设置计数初值OUT 0E4H,AL第40页,共172页,2022年,5月20日,20点53分,星期三例:设8254的2#计数器工作在方式3,按二进制计数,计数初值为4。初始化程序段如下: MOV AL,96H ; 设置控制字OUT 0E6H,ALMOV AL,4; 设置初值OUT 0E4H,AL 第41页,共172页,2022年,5月20日,20点53分,星期三例:设8254的1#计数器工作于方式
15、4,按二进制计数,计数初值为40.初始化程序如下: MOV AL,58H;设置控制字OUT 0E6H,ALMOV AL,40 ;设置计数初值OUT 0E2H,AL第42页,共172页,2022年,5月20日,20点53分,星期三例:设8254的0#计数器工作在方式5,按二进制计数,计数初值为3.初始化程序如下: MOV AL,1AH;设置控制字OUT 0E6H,ALMOV AL,3;设置计数初值OUT 0E0H,AL第43页,共172页,2022年,5月20日,20点53分,星期三例:设8254的2#计数器工作在方式2,按二进制计数,计数初值为0304H,初始化程序段如下:M0V AL,0B4
16、H ;设控制字,按16位读写格式OUT 0E6H,AL ;写控制字MOV AL,04H ;计数值的低字节OUT 0E4H,AL ;写计数值的低字节MOV AL,03H ;计数值的高字节OUT 0E4H,AL ;写计数值的高字节初值FFH第44页,共172页,2022年,5月20日,20点53分,星期三例:设8254的1#计数器工作在方式1,按BCD码计数,计数初值为4000.初始化程序如下: MOV AL,63H ; 控制字:只读写高 8位, BCD码计数OUT 0E6H,ALMOV AL,40H ;设置计数初值4000OUT 0E2H,AL第45页,共172页,2022年,5月20日,20点
17、53分,星期三本例中如果按二进制计数,控制字应该设置成01110010B。初始化程序如下:MOV AL,72H;设置控制字:读写16位,二进 制计数OUT 0E6H,ALMOV AX,4000;设置计数初值4000OUT 0E2H,AL;送初值的低8位MOV AL,AHOUT 0E2H,AL;送初值的高8位第46页,共172页,2022年,5月20日,20点53分,星期三例:设一个8254的计数器0能产生20ms的定时信号,设它的地址为2F02F3H,CLK为500KHZ。试对它进行初始化编程。解: 16进制为2710H,作为CPU的中断申请,方式控制字为00110000B,或30H2、计数初
18、值未知第47页,共172页,2022年,5月20日,20点53分,星期三MOV DX,2F3HMOV AL,30HOUT DX,ALMOV DX,2F0HMOV AL,10HOUT DX,ALMOV AL,27HOUT DX,AL第48页,共172页,2022年,5月20日,20点53分,星期三例:读取0#计数器当前的计数值(设8254的片选地址范围是0E0H0E3H)MOV AL,00H ;0#计数器的锁存命令OUT 0E3H,AL ;锁存命令写到控制口IN AL,0E0H ;读锁存器的低字节MOV BL,AL ;低字节送BLIN AL,0E0H ;读锁存器的高字节MOV BH,AL ;高字
19、节送BH则BX的内容就是0#计数器当前的计数值。3、读当前计数值:先锁存再读第49页,共172页,2022年,5月20日,20点53分,星期三例:用Intel8254实现1秒标准时钟。8254的端口地址是40H43H,频率为10MHz。设计提示:计数初值=10MHz1Hz=10 000 00065 535,显然已经超出了8254内部一个计数器的计数范围,需要用两个计数器级联。将0#计数器工作于方式3,其CLK输入10MHz的信号源,产生5KHz的方波信号,作为2#计数器的输入CLK信号。2#计数器工作在方式2,从2#计数器的OUT输出频率为1Hz的连续脉冲,就是周期为1秒的时钟。这样,0#计数
20、器的控制字为00100111B、计数初值为2000;2#计数器的控制字为10100101B、计数初值为5000。4、级联第50页,共172页,2022年,5月20日,20点53分,星期三初始化编程:MOV AL,27H;写控制字:0#计数器方 式3,只写高8位,BCD码计数OUT 43H,ALMOV AL,20HOUT 40H,AL;0#计数器送初值2000MOV AL,0A5H;写控制字:2#计数器方 式2,只写高8位,BCD码计数OUT 43H,ALMOV AL,50HOUT 42H,AL;2#计数器送初值5000第51页,共172页,2022年,5月20日,20点53分,星期三八、Int
21、el 8254在微机系统中的应用0#计数器用于定时中断工作于方式3,门控端GATE常有效,计数初值=0,定时时间为55ms ,OUT0接8259的IRQ0端,用作中断请求信号,每隔55ms申请1次中断.系统利用0#计数器和08号中断实现日时钟的计时功能.第52页,共172页,2022年,5月20日,20点53分,星期三1#计数器用于动态存储器刷新定时(间隔15s进行一次请求)方式2或方式3,门控端GATE常有效,计数初值=18,每隔15s刷新1次.2#计数器用于产生900Hz的方波送扬声器工作于方式3,其输出经滤波后得到近似的正弦波,以驱动扬声器发声,输出信号的频率通过初始化设置可以改变. 第
22、53页,共172页,2022年,5月20日,20点53分,星期三CLK0 OUT0GATE0 CLK1 OUT1 GATE1 CLK2 OUT2GATE2Intel 8254分频器+5V PB0 Intel 8255 PB11.1931816MHzIntel8259的IR0产生系统时钟Intel8237DREQ0存储器刷新驱 动喇 叭&图5.8 Intel 8254在PC机系统中的应用第54页,共172页,2022年,5月20日,20点53分,星期三系统中8254的三个计数器的初始化程序如下(这些程序已经在ROM-BIOS中):MOV AL,36H ;写0#计数器控制字:OUT 43H,AL
23、;读写16位,方式3, ;二进制计数MOV AL,00H ;初值0,信号周期55msOUT 40H,AL ;先写低8位OUT 40H,AL ;后写高8位第55页,共172页,2022年,5月20日,20点53分,星期三MOV AL,54H ;写1#计数器控制字:OUT 43H,AL ;方式2,只写低8位,二进制计数MOV AL,12H ;初值为18,信号周期15sOUT 41H,AL ;写初值MOV AL,0B6H ;写2#计数器控制字: OUT 43H,AL ;读写16位,方式3,二进制计数MOV AX,533H ;初值为533H,信号频率900HzOUT 42H,AL ;先写低8位MOV
24、AL,AHOUT 42H,AL ;后写高8位续:第56页,共172页,2022年,5月20日,20点53分,星期三第二节 可编程并行接口 及其应用串行通信接口并行通信接口第57页,共172页,2022年,5月20日,20点53分,星期三并行通信接口数据是以字节或字为单位进行传送或交换的。并行接口通常具有输入或输出数据的功能,这里所说的输入输出,是以CPU作为参照物的。并行接口起着数据锁存或缓冲的作用。通常用于数据传输率高、传输距离比较短的场合。第58页,共172页,2022年,5月20日,20点53分,星期三 第二节 可编程并行接口 及其应用Intel 8255的内部结构和引脚第59页,共17
25、2页,2022年,5月20日,20点53分,星期三8255与系统的连接图D0D7WRRDA1A0CSDB WR RDA1A0译码器8255A口B口C口D0D7外 设CPUA2 A7第60页,共172页,2022年,5月20日,20点53分,星期三Intel 8255端口操作 第61页,共172页,2022年,5月20日,20点53分,星期三一、Intel 8255控制字1方式选择控制字特征位第62页,共172页,2022年,5月20日,20点53分,星期三对8255初始化编程,A口:方式1输入,B口:方式0输出,C口的上半口输出,C口的下半口输入. 设8255的端口地址为:60H、61H、62
26、H和63H,方式选择控制字为:10110001B或B1H,初始化程序段如下:MOV AL,0B1H ;方式选择控制字OUT 63H,AL ;写控制端口例:第63页,共172页,2022年,5月20日,20点53分,星期三2C口按位置1/置0操作控制字第64页,共172页,2022年,5月20日,20点53分,星期三要求把8255C口的PC0置1 设端口地址分别为:60H、61H、62H和63H,初始化程序段:MOV AL,01H ;使PC01的控制字OUT 63H,AL ;写控制端口例:第65页,共172页,2022年,5月20日,20点53分,星期三 对C口的若干位置1/置0操作对PC7置1
27、,PC6置0,则程序段为:MOV AL,0FH ;PC7置1控制字OUT 63H,AL ;写控制端口MOV AL,0CH ;PC6置0控制字OUT 63H,AL ;写控制端口例:第66页,共172页,2022年,5月20日,20点53分,星期三在PC5输出一个负跳变的信号初始化程序段如下: MOV AL,0BH ;PC5置1控制字OUT 63H,AL ;写控制端口MOV AL,0AH ;PC5置0控制字OUT 63H,AL ;写控制端口例:第67页,共172页,2022年,5月20日,20点53分,星期三例:在PC5输出一个负脉冲信号MOV AL,0BH;PC5置1控制字OUT 63H,AL;
28、写控制端口MOV AL,0AH;PC5置0控制字OUT 63H,AL;写控制端口MOV AL,0BH;使PC5再置1的控制字OUT 63H,AL;写控制端口第68页,共172页,2022年,5月20日,20点53分,星期三A口和B口都是输出端口,要求对B口的PB7位置1,对A口的PA7、PA6位置0,而不改变其余位的状态.MOV AL,80H ;方式选择控制字OUT 63H,AL ;写控制端口 IN AL,61H ;读入B口原输出值MOV BL,AL ;保存B口原输出值OR AL,80H ;使PB7=1,B口的其余位不变OUT 61H,AL ;对B口输出新的内容IN AL,60H ;读入A口原
29、输出值MOV BH,AL ;保存A口原输出值AND AL,00111111B ;使PA7=0,PA60OUT 60H,AL 例:第69页,共172页,2022年,5月20日,20点53分,星期三二、Intel 8255的三种工作方式1.方式0-基本输入输出方式2.方式1-选通式输入输出方式3.方式2-双向选通式输入输出方式端口A可以工作在方式0、方式1、方式2端口B只能工作在方式0、方式1第70页,共172页,2022年,5月20日,20点53分,星期三1方式0基本输入输出方式无条件传送(同步传送)不需要联络信号,CPU可以随时对该外部设备进行读或写。有条件传送(查询式传送)把C口的一个半口设
30、置为输出,用作端口A或端口B的状态信号输出;把C口的另一个半口设置为输入,用作外设的状态信号输入。究竟使用C口的哪些位作联络线不是固定的,是由程序设定的。第71页,共172页,2022年,5月20日,20点53分,星期三设8255的端口地址为A00HA03H,端口A和B都工作在方式O,A口用来读一组开关数据,B口连一组发光二极管,以显示开关状态. 无条件传送的程序段如下: MOV DX,0A03H ;8255控制口地址 MOV AL,90H ;方式选择字 0UT DX,AL ;写控制字LOP:MOV DX,0A00H ;端口A地址 IN AL,DX ;输入开关状态 MOV DX,0A01H ;
31、端口B地址 0UT DX,AL ;显示开关的状态 JMP LOP例:第72页,共172页,2022年,5月20日,20点53分,星期三(1)将A口设置成工作方式0、输出,在A口连一台打印机。(2)C口作状态口,用来传送打印机的状态:用 向打印机输出一个负脉冲作为数据选通信号 (低电平有效),把A口的数据传送到打印机缓冲器中;用 接收一个来自打印机的状态信号BUSY(高电平有效),BUSY=1表示外设正在处理数据(忙),当打印机处理完输入的数据后,会撤销忙信号,置BUSY=0,等待接收CPU输出的下一个数据。 例:用8255作打印机的接口. (查询式传送)第73页,共172页,2022年,5月2
32、0日,20点53分,星期三(3)8255方式0使用查询式传送时,其联络信号是不固定的,这里选用 和 作为联络信号,我们把 设置为输入,把 设置为输出。(4)用查询式传送实现上述过程。设8255在系统中的端口地址为 。第74页,共172页,2022年,5月20日,20点53分,星期三CPU PA0-7 PC7 PC1 GNDD0-7STBBUSYGND Intel 8255 打印机第75页,共172页,2022年,5月20日,20点53分,星期三用查询式传送实现上述过程:MOV DX,0A03H ;8255控制口地址MOV AL,81H ;控制字OUT DX,AL ;写方式选择控制字MOV AL
33、,0FH ;PC7=1,使打印机 选通信号无效OUT DX,AL ;写C口置1/置0控制字MOV CX,100H ;打印的字符数L: MOV DX,0A02H;状态口地址H: IN AL,DX ;读打印机状态 TEST AL,02H ;检查BUSY是否忙JNZ H ;若PC1=1,打印机 忙,则循环等待第76页,共172页,2022年,5月20日,20点53分,星期三MOV AL,BX ; 取出要打印的数据MOV DX,0A00H ;端口A地址OUT DX,AL ;打印的数据送A口MOV AL,0EH ;置PC7=0,数据选通有效MOV DX,0A03H ;控制口地址OUT DX,AL ;写C
34、口置1/置0控制字NOP ;延时NOP ;使PC7输出的低电平有一定宽度,保证送 打印机的数据稳定NOP MOV AL,0FH ;置PC7=1,产生一个上升沿,打开打印机 的数据缓冲器OUT DX,AL ;写C口置1/置0控制字INC BX ;修改内存指针,指向下一个数据LOOP L ;未打印完,继续第77页,共172页,2022年,5月20日,20点53分,星期三2.方式1选通式输入输出方式端口C中的一些固定位是用于配合A口和B口的输入输出应答信号,C口的其余位用作基本输入输出传送。有条件传送(查询式传送)CPU输入时:查询IBF位的状态CPU输出时:查询OBF的状态中断传送CPU不需要中断
35、向量:直接将8255的INTR输出线连到CPU的中断请求输入线上。CPU需要中断向量:将8255的INTR连到中断控制器8259的中断请求输入端IR,由中断控制器8259向CPU发中断请求。第78页,共172页,2022年,5月20日,20点53分,星期三 (a) 方式1输入第79页,共172页,2022年,5月20日,20点53分,星期三 B口方式1输入第80页,共172页,2022年,5月20日,20点53分,星期三方式1输入时各状态信号的时序关系:第81页,共172页,2022年,5月20日,20点53分,星期三数据输入过程如下:当外设准备好数据后,发一个 信号,将数据打入8255输入锁
36、存器中。 信号的下降沿使 ,表示输入缓冲器满,不允许外设再送数据。若接口处于允许中断状态(则 ), 的上升沿使 ,向CPU发出中断请求,CPU响应后,转到相应的中断服务程序,通过执行输入指令,使 信号有效,CPU将8255锁存器中的数据读入。第82页,共172页,2022年,5月20日,20点53分,星期三在CPU执行输入操作时, 信号的下降沿使INTR复位,即撤销中断请求。上升沿使IBF复位,表示8255输入缓冲器已空,外设可以输入新的数据。至此,一个数据输入过程结束。当下一个 信号(负脉冲)到来时,重复上述过程。 第83页,共172页,2022年,5月20日,20点53分,星期三 (b)
37、方式1输出第84页,共172页,2022年,5月20日,20点53分,星期三方式1输出第85页,共172页,2022年,5月20日,20点53分,星期三方式1各状态信号的时序关系 第86页,共172页,2022年,5月20日,20点53分,星期三数据输出过程如下:当CPU执行OUT指令输出数据时, 信号有效,该信号将CPU数据总线上的数据写入到8255的数据输出缓冲器中。 的上升沿使 ,表示8255输出缓冲器已满,通知外设读取数据,并且 使中断请求INTR=0,撤销中断请求信号。外设读取数据后,向8255发响应信号 。第87页,共172页,2022年,5月20日,20点53分,星期三 的下降沿
38、使 (无效),表示8255输出缓冲器已空。在8255内部开放中断INTE=1的条件下, 的上升沿使INTR=1,向CPU发中断请求。在中断服务程序中,CPU向8255输出一个新的数据,至此,一个数据输出过程结束。当下一个 信号(低电平)到来时,重复上述过程。第88页,共172页,2022年,5月20日,20点53分,星期三例:方式1的应用方式1通常用于有条件(查询)传送或中断传送用8255为两台8088 CPU设计一个并行数据传送接口(单向传送),甲机发送数据和乙机接收数据都采用方式1的查询方式传送。(1)甲机用A口方式1输出数据,一对输出应答信号是固定的:输出缓冲器满 用 ,外设收到数据后的
39、响应信号 用 。(2)乙机用A口方式1输入数据,一对输入应答信号也是固定的:输入缓冲器满IBF用 ,数据选通信号 用 。第89页,共172页,2022年,5月20日,20点53分,星期三(3)甲机的数据端口 与乙机的数据端口 相连。(4)甲机的 、 分别与乙机的 、相连,构成相互之间的应答信号。(5)用查询式传送实现上述过程。设8255在系统中的端口地址为 。第90页,共172页,2022年,5月20日,20点53分,星期三第91页,共172页,2022年,5月20日,20点53分,星期三当甲机CPU将数据输出到端口A时, 变低,表示甲机的数据端口A的输出缓冲器满,同时给乙机端口A一个选通信号
40、( 变低),数据从甲机输出到乙机并在乙机的数据端口A锁存。当乙机CPU从端口A取回数据后, 变低,表示乙机的数据端口A的输入缓冲器为空,给甲机一个回答信号, 变低,同时甲机的 变高,甲机CPU查询到 变高后,会将下一个数据送到端口A。如此重复上述过程,便可完成全部数据的传送。第92页,共172页,2022年,5月20日,20点53分,星期三;甲机发送程序 MOV CX,0400H ;发送数据块长度1KB MOV DX,0A03H ;8255控制口地址 MOV AL,10100000B ;方式字(A口方式1输出) OUT DX,AL MOV AL,00001111B ;置PC71,输出缓冲器空
41、OUT DX,ALL: MOV DX,0A02H ;8255状态口地址(端口C) IN AL,DX ;读状态口 AND AL,80H ;输出缓冲器是否满(PC7=0) JZ L ;缓冲器满则等侍 MOV DX,0A00H ;否则向A口发送数据 MOV AL,BX 0UT DX,AL ;内存一个数据向乙机发送 INC BX ;修改内存单元地址 LOOP L ;未发送完,继续 HLT ;传送完毕,暂停第93页,共172页,2022年,5月20日,20点53分,星期三;乙机接收程序 MOV CX,400H ;接收数据块长度1KB MOV DX,0A03H ;8255控制口地址 MOV AL,1011
42、0000B ;8255工作方式(A口方式1输入) 0UT DX,AL MOV AL,00001010B ;置PC50,输入缓冲器空 0UT DX,ALL: MOV DX,0A02H ;8255状态口地址(端口C) IN AL,DX ;读状态口 AND AL,20H ;查输入缓冲器是否满 JZ L ;8255未接收到数据,等侍 MOV DX,0A00H ;8255端口A地址 IN AL,DX ;读A口 MOV BX,AL ;从甲机接收一个数据送内存单元 INC BX ;修改内存单元地址 LOOP L ;未接收完,继续 HLT第94页,共172页,2022年,5月20日,20点53分,星期三3.方
43、式2:双向选通式输入/输出方式第95页,共172页,2022年,5月20日,20点53分,星期三方式2各状态信号的时序关系 第96页,共172页,2022年,5月20日,20点53分,星期三 方式2的应用用8255为两台8088 CPU设计一个双向并行数据传送接口例:第97页,共172页,2022年,5月20日,20点53分,星期三;主机,A口方式2.主程序: MOV AL,0C0H ;方式选择控制字 OUT 63H,AL MOV AL,09H ;PC41允许输入中断 OUT 63H,AL ;C口置1/置0控制字 MOV AL,ODH ;PC61允许输出中断 0UT 63H,AL ;C口置1/
44、置0控制字 LEA SI,ARY1 ;发送数据块首址 MOV CX,400h ;发送数据块长度 LEA DI,ARY2 ;接收数据块首址 MOV BX,800H ;接收数据块长度 STI ;CPU开中断(IF=1) 第98页,共172页,2022年,5月20日,20点53分,星期三 ;中断服务程序 IN AL,62H ;读状态口(端口C)的状态 MOV AH,AL AND AL,20H ;判断输入缓冲器的状态IBFA(PC5) JZ 0THER ;IBFA=0,不是输入中断,转移INA:IN AL,60H ;IBFA=1,是输入中断,从A口读取数据 MOV DI,AL ;接收的数据送内存单元
45、INC DI DEC BX JNZ NEXT JMP DONEOTHER: MOV AL,AH AND AL,80H ;判断输出缓冲器的状态(PC7) JZ NEXT ;PC7=0,不是输出中断,转移OUTA:MOV AL,SI ;PC7=1,是输出中断 OUT 60H,AL ;向A口写入数据 INC SI DEC CX JNZ NEXT JMP DONENEXT: STI DONE: IRET ;中断返回 第99页,共172页,2022年,5月20日,20点53分,星期三;从机,A口方式1输出,B口方式1输入;数据发送子程序(从A口发送)R:IN AL,62H ;读状态口的状态 TEST A
46、L,80H ;从机输出缓冲器是否空 JZ R ;从机输出缓冲器满则等待 MOV AL,SI ;PC71,从内存取一数据 OUT 60H,AL ;向主机CPU发送数据 RET ;返回主程序第100页,共172页,2022年,5月20日,20点53分,星期三 ;数据接收子程序(从B口接收)H:IN AL,62H ;读状态口 AND AL,02H ;从机输入缓冲器是否满 JZ H ;从机输入缓冲器空则等待 IN AL,61H ;从机从B口输入数据 MOV DI,AL ;输入数据存内存单元 RET ;返回主程序第101页,共172页,2022年,5月20日,20点53分,星期三第三节 串行通信接口及其
47、应用 第102页,共172页,2022年,5月20日,20点53分,星期三串行通信的基本方式 异步串行通信一帧起始位,数据位,奇偶校验位,停止位.发送器和接收器各有频率一样的局部时钟.同步串行通信在数据块的开始加同步字符,末尾加校验字符,数据按约定的速率连续发送和接收.数据流中字符之间、位与位之间都是同步的,收发双方必须用同一时钟来控制数据的发送和接收.当前PC机串行接口基本上都采用异步通信方式.第103页,共172页,2022年,5月20日,20点53分,星期三 波特率和数据传输率波特率是衡量串行数据传送速度快慢的重要指标,也称数据传输率,它表示单位时间内传送的二进制数据的位数,以bps(位
48、/秒)为单位.发送时钟和接收时钟的频率与波特率之间的关系为: 收/发时钟频率=n波特率 其中,n是波特率因子,一般取1,16,32,64等。对于异步通信,常采用n=16或64,而对同步通信,必须取n=1。第104页,共172页,2022年,5月20日,20点53分,星期三 可编程串行接口Intel 8251 内部结构与引脚第105页,共172页,2022年,5月20日,20点53分,星期三 8251与CPU及外设的连接第106页,共172页,2022年,5月20日,20点53分,星期三 8251端口操作表CS C/D RD WRI/O 操 作 0 0 0 1 0 1 0 1 输 入(读) CP
49、U 从 8251读数据CPU 从 8251读状态 0 0 1 0 0 1 1 0 输 出(写) CPU向8251写数据CPU向8251写控制字 0 1 1 高 阻 8251数据线高阻态 1 高 阻 8251数据线高阻态第107页,共172页,2022年,5月20日,20点53分,星期三 8251初始化编程 通信方式选择控制字第108页,共172页,2022年,5月20日,20点53分,星期三 操作命令控制字第109页,共172页,2022年,5月20日,20点53分,星期三 状态控制字 第110页,共172页,2022年,5月20日,20点53分,星期三初始化流程第111页,共172页,202
50、2年,5月20日,20点53分,星期三用查询方式从8251输入数据,要求:(1) 异步方式工作,波特率因子为64,采用奇校验,8位字符,1个停止位,字符长度为10.(2)允许接收和发送,使错误位全部复位.(3)查询8251状态字,当接收准备就绪时,则从825l输入数据,否则等待.8251应用编程例:第112页,共172页,2022年,5月20日,20点53分,星期三方式选择字格式:01011111;规定了8251为异步方式,波特率因子64,8位字符,奇校验,1个停止位.操作命令字格式:00110111;规定了8251是异步方式,无内部复位,错误标志位清零,允许发送,允许接收,使请求发送信号有效
51、,并使“数据终端准备好”信号处于有效电平.CPU从825l输入数据的程序段如下:第113页,共172页,2022年,5月20日,20点53分,星期三 MOV DX,0FF02H ;8251控制口地址 MOV AL,5FH ;写方式选择控制字 OUT DX,AL MOV AL,37H ;写操作命令控制字 OUT DX,AL MOV CX,100 ;共接收100个字符WAT:IN AL,DX ;读入状态字 TEST AL,02H ;检查RxRDY=1? JZ WAT ;接收未准备就绪,等侍第114页,共172页,2022年,5月20日,20点53分,星期三MOV DX, 0FF00H ;从8251
52、读取字符IN AL,DXMOV BX,AL ;将字符送内存INC BX ;修改内存指针MOV DX,0FF02H ;读状态字,测试是否出错IN AL,DX TEST AL,38H ;测状态字D5,D4,D3位JNZ ERROR ;有错,转出错处理程序LOOP WAT ;没有错误,接收下一个字符JMP EXT ;接收到100个字符,则结束ERROR: ;调用出错处理程序EXT: 第115页,共172页,2022年,5月20日,20点53分,星期三试用8251作为串行通信接口,完成8086CPU对CRT终端的控制.要求:(1)异步方式传送,数据格式为1个停止位、8个数据位、偶校验.(2)波特率因子
53、为64.(3)CPU用查询方式将缓冲区字符“HELLO”送CRT上显示.例:第116页,共172页,2022年,5月20日,20点53分,星期三DATA SEGMENTDBUF DB HOW ARE YOUCOUNT DB DBUFDATA ENDSL1: MOV AL,0 MOV DX,0FF02H ;8251控制端口 MOV CX,3L2: OUT DX,AL LOOP L2 MOV AL,40H ;软件复位 OUT DX,ALMAIN: MOV DX,0FF02H ;送方式选择字MOV AL,7FH ;异步方式,1个停止位,8个数据位,偶校验OUT DX,AL第117页,共172页,20
54、22年,5月20日,20点53分,星期三MOV AL,00110011B ;操作命令字,启动发送器OUT DX,ALLEA BX,DBUF ;取缓冲区首地址MOV CX,COUNT ;缓冲区长度WAT: MOV DX,0FF02HIN AL,DX ;读状态字 TEST AL,80H ;数据设备准备就绪? JZ WAT ;未准备就绪,等侍 MOV DX,0FF0OH ;8251数据端口 MOV AL,ES:BX ;从缓冲区取数据 OUT DX,AL ;往8251数据口输出一个字符 INC BX LOOP WAT HLT第118页,共172页,2022年,5月20日,20点53分,星期三试用825
55、1芯片为两台微机之间实现双机串行通信的接口. 要求:异步工作方式,波特率因子64.采用数据格式:8位数据位,无校验位,2位停止位. 控制口地址为52H,数据口地址为5OH.两机采用查询方式交换数据.近距离传送直接用TxD、RxD和GND三条线互连例:第119页,共172页,2022年,5月20日,20点53分,星期三图 4.23第120页,共172页,2022年,5月20日,20点53分,星期三 ;甲机发送程序 DATA SEGMENT SRC DB 40H,41H,42H,43H,44H,45H COUNT DB l00 DATA ENDS CODE SEGMENT ASSUME CS:CO
56、DE,DS:DATAMAIN PROC FAR MOV AX,DATA ;数据段寄存器初值 MOV DS,AX MOV AL,00H ;空操作,等待内部操作的完成 OUT 52H,AL NOP NOP第121页,共172页,2022年,5月20日,20点53分,星期三 MOV AL,00H ;空操作 OUT 52H,AL NOP NOP MOV AL,00H 0UT 52H,AL NOP NOP MOV AL,40H ;8251复位 OUT 52H,AL NOP NOP第122页,共172页,2022年,5月20日,20点53分,星期三MOV AL,11001111B ;通信方式选择控制字0U
57、T 52H,ALMOV AL,00110111B ;操作命令字 ;使RTS,ER, RxE,DTR,TxEN置位OUT 52H,AL LEA SI,SRC ;发送数据缓冲区首址MOV CX,COUNT ;发送数据块长度BEGIN:IN AL,52H ;读取8251状态字TEST AL,01H ;检测D0位(TxRD是否为1)JZ BEGIN ;发送未准备就绪,等待第123页,共172页,2022年,5月20日,20点53分,星期三 MOV AL,SI ;发送准备就绪 OUT 50H,AL INC SI ;修改地址指针 DEC CX JNZ BEGIN ;未发送完,继续发送 MOV AX,4C0
58、0H INT 21HMAIN ENDPCODE ENDS END 第124页,共172页,2022年,5月20日,20点53分,星期三;乙机接收程序 DATA SEGMENT DST DB DUP(100) COUNT DB l00 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARMOV AX,DATA ;数据段寄存器初值 MOV DS,AX MOV AL,00H ;空操作,等待内部操作的完成 OUT 52H,AL NOP NOP 第125页,共172页,2022年,5月20日,20点53分,星期三 MOV AL,00H 0U
59、T 52H,AL NOP NOP MOV AL,00H ;空操作 0UT 52H,AL NOP NOP MOV Al,40H ;复位8251 0UT 52H,AL NOP NOP第126页,共172页,2022年,5月20日,20点53分,星期三 MOV AL,11001111B ;方式选择字 OUT 52H,AL MOV AL,00010100B ;操作命令字 OUT 52H,AL ; 使ER和RxE置位 LEA DI,DST ;接收数据缓冲区首址 MOV CX,COUNT ;接收数据块长度BEGIN: IN AL,52H ;读8251状态端口 TEST AL,02H ;检查RxRDY位(D
60、1) JZ BEGIN ;接收末准备就绪,等侍第127页,共172页,2022年,5月20日,20点53分,星期三 IN AL,50H ;否则,读8251数据口 MOV DI,AL ;接收一字节数据送内存 INC DI ;修改内存缓冲器指针 DEC CX JNZ BEGIN ;接收未完,继续 RETMAIN ENDP CODE ENDS END 第128页,共172页,2022年,5月20日,20点53分,星期三 第四节 模拟量输入输出接口及其应用 运放 控制对象 传感器 执行部件 A/D 转换器 I/O接口 D/A 转换器 I/O接口 功率 放大 微型计算机 模拟量 模拟量 一个包含AD和D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生活习俗舞蹈保护AI应用行业深度调研及发展项目商业计划书
- 环保博物馆行业跨境出海项目商业计划书
- 电子书转化服务企业制定与实施新质生产力项目商业计划书
- 古镇文化商业街行业深度调研及发展项目商业计划书
- 演员培训机构行业跨境出海项目商业计划书
- 汽车广告摄影企业制定与实施新质生产力项目商业计划书
- 沙漠探险与露营体验行业深度调研及发展项目商业计划书
- 物流与仓储管理企业制定与实施新质生产力项目商业计划书
- 商业零售业数字化转型的成功案例与启示
- 证券大数据分析与应用中心行业跨境出海项目商业计划书
- 2024年秋江苏开放大学文献检索与论文写作参考范文一:行政管理专业
- 2024年工业区办公厂房无偿出租协议
- 培训学校卫生管理制度大全
- 《阻燃材料与技术》课件全套 颜龙 第1讲 绪论 -第11讲 阻燃性能测试方法及分析技术
- 会议服务倒水礼仪培训
- 患者投诉与满意度反馈管理制度
- 2024-2025学年中职数学拓展模块一 (下册)高教版(2021·十四五)教学设计合集
- 2024年吉林省长春市中考地理试卷(含答案与解析)
- 人工智能算法自主进化
- 基于平衡计分卡绩效管理研究-以青岛啤酒为例
- 路基土石方施工作业指导书
评论
0/150
提交评论