《微机原理与接口技术:18第8章 计数器定时器与DMA控制器 习题8》由会员分享,可在线阅读,更多相关《微机原理与接口技术:18第8章 计数器定时器与DMA控制器 习题8(55页珍藏版)》请在金锄头文库上搜索。
1、1Chap 8 Counter/Timer& DMAChap 8 Counter/Timer& DMA controllercontrollerContents:8.1 Working principle of Counter/Timer8.2 Programmable Counter/Timer 82538.3 Fundamental of DMA transmission8.4 DMA controller 8237A28.1 Working principle of Counter/Timer8.1 Working principle of Counter/Timer8.1.1 8.1.
2、1 微机系统中的定时微机系统中的定时计数计数/ /定时技术是计算机控制系统中必须具有的接口技术定时技术是计算机控制系统中必须具有的接口技术之一。之一。o微机系统常常需要为处理器和外设提供时间标记,或对外部事微机系统常常需要为处理器和外设提供时间标记,或对外部事件进行计数。件进行计数。 o内部定时内部定时是计算机本身运行的时间基准或时序关系,计算机是计算机本身运行的时间基准或时序关系,计算机每个操作都是按照严格的时间节拍执行的。每个操作都是按照严格的时间节拍执行的。o外部定时外部定时是外部设备实现某种功能时,本身所需要的一种时是外部设备实现某种功能时,本身所需要的一种时序关系。序关系。 定时定时
3、的本质就是的本质就是计数计数,只不过这里的,只不过这里的“数数”的单位是时的单位是时间单位,把每一小片计时单位累加起来,就可以获得一段时间。间单位,把每一小片计时单位累加起来,就可以获得一段时间。38.1.2 8.1.2 外部定时方法外部定时方法1. 软件定时软件定时 它是利用它是利用CPU内部定时机构,用软件编程,循环执行一内部定时机构,用软件编程,循环执行一段程序而产生的等待延时。段程序而产生的等待延时。优点优点是不需要增加硬件设备,只需编制响应的延时程序进行是不需要增加硬件设备,只需编制响应的延时程序进行调用。调用。主要用于短时延时主要用于短时延时。缺点缺点是增加了是增加了CPU的时间开
4、销,降低了的时间开销,降低了CPU的效率,浪费的效率,浪费CPU的资源。的资源。2. 硬件定时硬件定时 采用采用可编程可编程通用的定时通用的定时/计数器产生定时或延时。计数器产生定时或延时。不占用不占用CPU时间,定时时间长,使用灵活。时间,定时时间长,使用灵活。Intel 8253/8254,Zilog CTC等。等。48.1.3 可编程计数器可编程计数器/定时器的工作原理定时器的工作原理计计数数器器,即即在在设设置置好好计计数数初初值值后后,便便开开始始对对外外部部触触发发脉脉冲作冲作减减1计数,计数,减为减为0时时,输出一个信号。,输出一个信号。 定定时时器器,即即在在设设置置好好定定时
5、时常常数数后后,便便对对外外部部时时钟钟信信号号作作减减1计计数数,并并按按定定时时常常数数不不断断地地产产生生时时钟钟周周期期整整数数倍倍的的定定时间隔。时间隔。CPU数据总线数据总线地址总线地址总线控制总线控制总线控制寄存器控制寄存器计数初值寄存器计数初值寄存器计数器计数器计数输出寄存器计数输出寄存器计数脉冲输入计数脉冲输入CLK门控脉冲输入门控脉冲输入GATE输出输出OUT58.2 可编程计数器可编程计数器/定时器定时器8253 8253内部含有内部含有3个个16位位计数器,可以按照二进制计数或十计数器,可以按照二进制计数或十进制计数进制计数(BCD计数计数)。每个计数器都有。每个计数器
6、都有6种工作方式种工作方式,可以作,可以作为可编程控制器的事件计数器、分频器、频率发生器、脉冲为可编程控制器的事件计数器、分频器、频率发生器、脉冲发生器、实时钟等使用,并且可以产生准确的延时。发生器、实时钟等使用,并且可以产生准确的延时。1)实时钟实时钟,如果某个计数器输入准确的时钟信号,并且设置,如果某个计数器输入准确的时钟信号,并且设置了合适的工作方式及计数初值,则其输出就可以定时产生时了合适的工作方式及计数初值,则其输出就可以定时产生时钟中断,作为实时钟使用。钟中断,作为实时钟使用。62)事件计数器事件计数器,如果某个计数器输入连续的事件脉冲信号,如果某个计数器输入连续的事件脉冲信号,并
7、且设置了合适的工作方式及计数初值,则其输出就可以对并且设置了合适的工作方式及计数初值,则其输出就可以对事件进行计数,作为事件计数器使用。事件进行计数,作为事件计数器使用。3)频率及脉冲发生器频率及脉冲发生器,如果某个计数器输入连续的脉冲信,如果某个计数器输入连续的脉冲信号,并且设置了合适的工作方式及计数初值,则其输出就可号,并且设置了合适的工作方式及计数初值,则其输出就可以对输入的连续脉冲信号进行分频,改变频率,作为频率及以对输入的连续脉冲信号进行分频,改变频率,作为频率及脉冲发生器使用。脉冲发生器使用。4)延时延时,如果某个计数器输入准确的时钟信号,并且设置,如果某个计数器输入准确的时钟信号
8、,并且设置了合适的工作方式及计数初值,则其输出就可以在延时时间了合适的工作方式及计数初值,则其输出就可以在延时时间到以后,以某种方式通知外界。到以后,以某种方式通知外界。78.2.1 8253内部结构及引脚功能内部结构及引脚功能8253的内部结构的内部结构控制字控制字寄存器寄存器读读/写写逻辑逻辑计数器计数器0数据总线数据总线缓冲器缓冲器计数器计数器2计数器计数器1内内部部总总线线CLK0GATE0OUT0CLK2GATE20OUT2CLK1GATE1OUT1D7D0WRRDA0A1CS图图8-2 8253内部结构内部结构88253的引脚功能A1A0功能功能000000000011111110
9、00000100110100101读计数器读计数器0当前值当前值读计数器读计数器1当前值当前值读计数器读计数器2当前值当前值设置计数器设置计数器0的初始值的初始值设置计数器设置计数器1的初始值的初始值设置计数器设置计数器2的初始值的初始值设置控制字设置控制字D7D6D5D4D3D2D1D0VCCWRRDCSA1A0CLK2OUT2GATE2CLK1GATE1OUT11234567891011122423222120191817161514138253CLK0OUT0GATE0GND图8-3 8253 引脚表8-1 8253计数器的选择与操作98.2.2 8253的工作方式及特点的工作方式及特点
10、 8253的的每个每个计数器通道都有计数器通道都有6种种工作方式可供选工作方式可供选用区分这用区分这6种工作方式的主要标志有种工作方式的主要标志有3点:点:1)输出波形不同;)输出波形不同;2)启动计数器的触发方式不同;)启动计数器的触发方式不同;3)计数过程中门控信号)计数过程中门控信号GATE对计数操作的控制不对计数操作的控制不同。同。101.方式方式0低电平输出(低电平输出(GATE信号上升沿继续计数)信号上升沿继续计数)5 4 3 2 1 05 4 3 2 1 09 8 4 3 2 1 0n=5n=9n=5n=4WRGATEOUTWROUTCLKWROUTCPU写入的计数初值是在写入的
11、计数初值是在其后的下一个其后的下一个CLK脉冲下脉冲下降沿才装入降沿才装入上升沿上升沿 从写入后的下一个时钟脉冲开始,以新的初值计数。如果是8位计数,在写入新的初值(仅低字节)后即按新值开始计数;如是16位计数,则在写入第一字节后,计数器停止计数,在写入第二字节后,计数器才按新值开始计数。也称为计数结束中断112. 方式1低电平输出(GATE信号上升沿重新计数) 4 4 3 2 1 03 2 1 0 2 1 0n=4n=2n=3 4 3 2 1 0WRGATEOUTWRGATEOUTGATEOUTCLK图图8-5 8253的方式的方式1时序波形时序波形下降沿方式1:也称为硬件可重触发单稳方式在
12、微机实时控制系统中常用方式1来产生监视时钟。这类系统程序通常固化在ROM中,但由于存在干扰,仍有可能使程序不按规定的流程执行,而出现所谓“飞溢”或“死机”现象,从而使过程失控。一旦出现这种情况,希望能在允许时间内强迫系统重新启动,返回正常。利用8253方式1的可重触发特性可实现这种控制。方法是将OUT端引入到CPU的RESET输入端,利用其单脉冲后沿作为复位信号,使系统重新启动;133. 方式2周期性负脉冲输出(速率波发生器) 3 2 1 0 3 3 2 1 0 14 3 2 1 0(3) 2 1 (0) 3n=44 3 2 1 0 3 2 1 WROUTGATEWROUTn=4n=3n=3C
13、LKWROUT图图8-6 8253的方式的方式2时序波形时序波形144. 方式3周期性方波输出n=4n=5CLKWROUTWROUT2 22 22 23 3 图图8-7 8253的方式的方式3时序波形时序波形占空比:在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。1:2计数初值Ci = 输入端时钟频率CLK/ /输出端方波频率OUT155. 方式4单次负脉冲输出(软件触发)5 5 4 3 2 1 05 4 3 2 1 0CLKWROUTWROUTGATEOUTn=5n=3n=23 2 1 0 2 1 0图图8-8 82538-8 8253的方式的方式4 4时序波形时序波形
14、166. 方式5单次负脉冲输出(硬件触发)5 4 3 2 1 05 4 5 4 3 2 1 0GATEOUTn=4WRGATEOUTCLK 图图8-9 82538-9 8253的方式的方式5 5时序波形时序波形178.2.3 8253的编程 和其他可编程芯片一样,和其他可编程芯片一样,所谓对芯片编程所谓对芯片编程,就是对它,就是对它进行读进行读/ /写操作。下列情况需要对写操作。下列情况需要对82538253编程。编程。 1 1)工作之前要写入)工作之前要写入控制字控制字,以确定每个计数器通道,以确定每个计数器通道的工作方式;的工作方式; 2 2)工作之前写入每个计数器通道的)工作之前写入每个
15、计数器通道的计数初值计数初值; 3 3)工作过程中改变某通道的计数初值;)工作过程中改变某通道的计数初值; 4 4)写入命令字或状态字,以读出某一时刻某一通道)写入命令字或状态字,以读出某一时刻某一通道的的CECE内容或状态寄存器内容。内容或状态寄存器内容。 前两项叫前两项叫初始化编程初始化编程,后两项为,后两项为工作编程工作编程。181、设定方式控制字图8-10 8253的方式控制字SC1 SC0 RW1 RW0 M2 M1 M0 BCD读读/写写控制控制00 计数器锁存计数器锁存01 只读只读/写计数器低字节写计数器低字节10 只读只读/写计数器高字节写计数器高字节11 读读/写计数器写计
16、数器16位数位数 先低字节,后高字节先低字节,后高字节00 计数器计数器001 计数器计数器110 计数器计数器211 无意义无意义工作方式选择工作方式选择000 方式方式0001 方式方式110 方式方式211 方式方式3100 方式方式4101 方式方式5计数格计数格式选择式选择1 十进制计数十进制计数0 二进制计数二进制计数192.设定计数初值例8-1 设8253计数器0工作于方式3下,计数初值为6000(十进制格式),试写出其初始化程序。(设8253计数器0,计数器1,计数器2及控制端口地址分别为300H303H。)【分析】根据题目要求,8253方式控制字应为00110111,具体程序
17、如下: MOV DX,303H ;设定控制端口 MOV AL,37H ;写入控制字 OUT DX,AL MOV DX,300H ;设计数器0 MOV AL,0 ;写计数初值低字节 OUT DX,AL MOV AL,60 ;写计数初值高字节 OUT DX,AL例8-2 假定8253的4个端口地址分别为310H、312H、314H、316H,输入脉冲频率为2MHz,编写出采用计数器0、输出频率为2kHz方波的初始化程序。分析:依据题目要求,采用计数器0、工作方式3、二进制计数。计数初值N= 输入CLK的频率/输出OUT的频率=2MHz / 2kHz=1000。因此,方式控制字为 00 11 011
18、 0B,即36H。程序如下:MOVDX,316H; 控制字初始化MOVAL,36HOUTDX,ALMOVAX,1000;计数初值送AX暂存MOVDX,310H;计数器0端口地址OUT DX,AL;先送计数器低字节MOVAL,AHOUTDX,AL;再送计数器高字节例8-3 题略。【分析】:由于输入的时钟频率为2MHz,而输出方波频率为1Hz,计算出计数初值N= 2MHz / 1Hz=2M=2106。此数超出16位计数器所能表示的范围。为此,可先通过计数器1将2MHz的输入脉冲变成2kHz方波,然后用OUT1输出的方波作为计数器0的输入时钟。计数器1的计数初值N= 2MHz / 2kHz=1000
19、;计数器0的计数初值M=2kHz / 1 =2103。初始化编程如下:MOVAL,76H ;01 11 011 0初始化计数器1,方波MOV76H,AL ;写控制字端口76HMOVAX,1000;分两次写计数初值OUT72H,AL ;先写低字节MOVAL,AHOUT 72H,AL ;再写高字节MOVAL,36H ;00 11 011 0初始化计数器0,方波OUT76H,AL ;写控制字端口76HMOVAX,2000;分两次写计数初值OUT70H,AL ;先写低字节MOVAL,AHOUT70H,AL ;再写高字节23例-4 IBM PC/XT系统板上8253的3个计数器的使用。图8-11 825
20、3 与系统总线的连接24例8-5 8253的3个计数器串级连接起来,为某A/D子系统提供可调用的启动采样频率信号。OUT0CLK0GATE0OUT2GATE2CLK2OUT1GATE1CLK18253(方式方式2)(方式方式1)(方式方式3)启动转换启动转换A/D转换子系统转换子系统时钟发生器时钟发生器手动手动/继电器开关继电器开关+5V设设8253的的端端口口地地址址为为304H,305H,306H,307H。初初始始值值L,N为为二二进进制制数数,且且小小于于256,M为为BCD数,且大于数,且大于100。MOV AL,14HOUT 307H,AL MOV AL,LOUT 304H,ALM
21、OV AL, 73HOUT 307H,AL MOV AX,MOUT 305H,ALMOV AL,AHOUT 305H,ALMOV AL,96HOUT 307H,AL MOV AL,NOUT 306H,AL25例8-6 图8-13所示为一自动计数系统。当工件从光源与光敏电阻之间通过时,CLK0端即可接收到一个脉冲信号,由计数器0计数。每当有80个工件通过后,由输出端OUT0输出一个负脉冲作为中断请求信号通知CPU。CPU在处理该中断的中断服务程序中启动计数器1,由OUT1产生2000Hz的方波驱动蜂鸣器发声,提示工件以满80个,5秒后扬声器停止发声。光敏电阻驱动器扬声器CLK1GATE15MHz
22、8255PA4OUT0TNTOUT1光源工件R+5V MOV ALMOV AL,15H15H OUT 43H OUT 43H,AL AL MOV AL MOV AL,80 80 OUT 40HOUT 40H,ALAL STI STI LOOP LOOP: HLTHLT JMP LOOP JMP LOOP;中断服;中断服务务 MOV ALMOV AL,01H01H OUT 80H OUT 80H,ALAL MOV AL MOV AL,77H77H OUT 43H OUT 43H,ALAL MOV AL MOV AL,0 0 OUT 41H OUT 41H,ALAL MOV AL MOV AL,2
23、525 OUT 41H OUT 41H,ALAL CALL D5S CALL D5S MOV ALMOV AL,0 0 OUT 80H OUT 80H,ALAL268.3 Fundamental of DMA transmission8.3.1 DMA传送的特点传送的特点o直接存储器存取(直接存储器存取(Direct Memory Access, DMA)是指计)是指计算机的外部设备与存储器之间直接进行数据交换的一种输算机的外部设备与存储器之间直接进行数据交换的一种输入输出方式。入输出方式。oDMA控制器拥有控制器拥有总线总线控制权,控制数据不经过控制权,控制数据不经过CPU干预,干预,直接在
24、存储器与外设之间进行传输。直接在存储器与外设之间进行传输。oDMA方式实现方式实现外部设备外部设备与与存储器存储器之间数据之间数据高速高速传输;传输;oDMA传送主要用于需要高速传送主要用于需要高速大批量数据大批量数据传送的系统中,传送的系统中,以提高数据的吞吐量;(图像处理、高速数据采集)以提高数据的吞吐量;(图像处理、高速数据采集)oDMA传送方式是用传送方式是用硬件硬件控制代替软件控制;控制代替软件控制; oDMA传送虽然脱离传送虽然脱离CPU的控制,但并不是说的控制,但并不是说DMA传送传送不需要进行控制和管理;不需要进行控制和管理;278.3.2 DMA传送的机制传送的机制1 1周期
25、挪用(周期挪用(Cycle StealingCycle Stealing)DMACDMAC在处理器不访问存储器或在处理器不访问存储器或I/OI/O端口时控制总线;端口时控制总线; 2 2周期扩展周期扩展DMACDMAC利用延长的系统总线周期完成利用延长的系统总线周期完成DMADMA数据交换;数据交换; 3 3CPUCPU停机停机CPUCPU停机是指在停机是指在DMADMA操作期间,操作期间,CPUCPU交出总线控制权,由交出总线控制权,由DMADMA控制器控制器接管总线,完成数据传送。接管总线,完成数据传送。DMA控制器控制器系统总线系统总线存储器存储器I/O接口接口CPUI/O设备设备总线允
26、许总线允许(HLDA)DMA请求请求(DREQ)总线请求总线请求(HOLD)DMA允许允许(DACK) 图8-14 DMA传送机制示意图288.3.3 DMA传送的模式传送的模式单字节传送模式单字节传送模式 只能一个字节一个字节地传送(或校验或检索),每只能一个字节一个字节地传送(或校验或检索),每传送一个字节传送一个字节DMAC必须重新向必须重新向CPU申请占用总线。申请占用总线。 数据块传送模式数据块传送模式在数据块传送的整个过程中,只要在数据块传送的整个过程中,只要DMA传送一开始,传送一开始,DMAC始终占用总线,直到数据传送结束或校验完毕始终占用总线,直到数据传送结束或校验完毕或检索
27、到或检索到“匹配字节匹配字节”,才把总线控制权还给,才把总线控制权还给CPU。请求传送模式请求传送模式 DMAC控制总线以后,每传送完一个字节,都由控制总线以后,每传送完一个字节,都由DMAC检测外设是否有继续传送的要求。(检测外设是否有继续传送的要求。(常用常用)298.4 DMA控制器控制器8237A 8237A是是Intel系列高性能可编程系列高性能可编程DMA控制器,它使用控制器,它使用+5V电源、单相时钟,是一个电源、单相时钟,是一个40引脚引脚双列直插式的大规模集双列直插式的大规模集成电路芯片,其具有以下功能:成电路芯片,其具有以下功能: 1)每片)每片8237A内部有内部有4个个
28、独立的独立的DMA通道,每个通道可通道,每个通道可分别进行数据传送,一次传送最大达分别进行数据传送,一次传送最大达64KB,能够实现存储,能够实现存储器与外设间或存储器两个区域间的数据传送。器与外设间或存储器两个区域间的数据传送。 2)每个通道的)每个通道的DMA请求可以分别请求可以分别允许允许和和禁止禁止,具有不,具有不同的优先级,并且每个通道的优先级可以是固定的,也可以同的优先级,并且每个通道的优先级可以是固定的,也可以是循环的。是循环的。 3)8237A具有具有4种传送方式种传送方式:单字节传送方式、数据块:单字节传送方式、数据块传送方式、请求传送方式和级联方式,级联以后可以扩充传送方式
29、、请求传送方式和级联方式,级联以后可以扩充DMA通道。通道。308.4.1 8237A的内部结构及引脚功能的内部结构及引脚功能1.8237A的内部结构的内部结构图图8-15 8237A8-15 8237A的内部结构与主要引脚的内部结构与主要引脚312. 8237A的引脚功能的引脚功能4039383736353433323130292827262524232221IORIOWMEMRMEMWNCREADYHLDAADSTBAENHRQCSCLKRESETDACK2DACK3DREQ3DREQ2DREQ1DREQ0VSS(地)A7A8A5A4EOPA3A2A1A0VCC(+5V)DB0DB1DB2
30、DB3DB4DACK0DACK1DB5DB6DB712345678910111213141516171819208237A323.8237A的端口地址表8-2 8237A控制器的寄存器口地址端端口口通通道道I/O地址地址(Hex)寄寄 存存 器器读(读( )写(写( )DMA+0DMA+1DMA+2DMA+3DMA+4DMA+5DMA+6DMA+7DMA+8DMA+9DMA+10DMA+11DMA+12DMA+13DMA+14DMA+1500112233公公用用000102030405060708090A0B0C0D0E0F当前地址寄存器当前地址寄存器当前字节计数器当前字节计数器当前地址寄存器
31、当前地址寄存器当前字节计数器当前字节计数器当前地址寄存器当前地址寄存器当前字节计数器当前字节计数器当前地址寄存器当前地址寄存器当前字节计数器当前字节计数器状态寄存器状态寄存器 暂存寄存器暂存寄存器基地址与当前地址寄存器基地址与当前地址寄存器基字节计数器与当前字节计数器基字节计数器与当前字节计数器基地址与当前地址寄存器基地址与当前地址寄存器基字节计数器与当前字节计数器基字节计数器与当前字节计数器基地址与当前地址寄存器基地址与当前地址寄存器基字节计数器与当前字节计数器基字节计数器与当前字节计数器基地址与当前地址寄存器基地址与当前地址寄存器基字节计数器与当前字节计数器基字节计数器与当前字节计数器命令
32、寄存器命令寄存器请求寄存器请求寄存器屏蔽寄存器(单个屏蔽位)屏蔽寄存器(单个屏蔽位)方式控制寄存器方式控制寄存器清除先清除先/后触发器命令后触发器命令*复位命令复位命令*清四个通道屏蔽寄存器命令清四个通道屏蔽寄存器命令*综合屏蔽命令寄存器综合屏蔽命令寄存器338.4.2 8237A的工作过程与工作方式的工作过程与工作方式18237A的工作过程的工作过程就绪就绪未就绪未就绪有效周期有效周期空闲周期空闲周期向外提出向外提出HRQ单字节传送单字节传送数据块传送数据块传送接收到有接收到有效的效的DREQ接收到有接收到有效的效的HLDA就绪就绪SiS3S2S1S0S0S1S4SWSW 图图8-17 82
33、37A8-17 8237A的内部状态转换流程的内部状态转换流程3428237A的工作方式的工作方式(1)通道的优先级问题)通道的优先级问题 (2)工作模式)工作模式 单字节传送模式单字节传送模式 数据块传送模式数据块传送模式 请求传送模式请求传送模式 级联模式级联模式 (3)操作类型)操作类型 DMA读,用于把数据从存储器中读出,写入外设。读,用于把数据从存储器中读出,写入外设。 DMA写,用于将数据从外设中读出,写入存储器中。写,用于将数据从外设中读出,写入存储器中。 DMA校校验验,是是一一种种空空操操作作,并并不不是是真真正正的的DMA传传送送,只只产产生生时时序序。地地址址信信号号、外
34、外设设可可以以利利用用这这样样的的时时序序进进行校验。行校验。358.4.3 8237A的编程的编程 8237A工作前应先由工作前应先由CPU对其进行对其进行初始化编程初始化编程,即,即设定设定内部各寄存器的值内部各寄存器的值,8237A初始化编程包括两个方面:初始化编程包括两个方面: 一是设定通道计数初始值,即设置基地址与当前地址一是设定通道计数初始值,即设置基地址与当前地址寄存器、设置基字节数与当前字节计数寄存器;寄存器、设置基字节数与当前字节计数寄存器; 二是设置通道功能,即设置方式控制寄存器、设置屏二是设置通道功能,即设置方式控制寄存器、设置屏蔽寄存器、设置命令寄存器等,以下介绍通道的
35、功能寄存蔽寄存器、设置命令寄存器等,以下介绍通道的功能寄存器的格式:器的格式:361方式控制寄存器(模式寄存器)方式控制寄存器(模式寄存器)00 通道通道001 通道通道110 通道通道211 通道通道300 校验传送校验传送01 写传送写传送10 读传送读传送11 无意义无意义图图8-18 8-18 方式控制寄存器格式方式控制寄存器格式通道选择通道选择传送类型传送类型D7 D6 D5 D4 D3 D2 D1 D0预预置置选选择择0 禁止自动预置禁止自动预置1 允许自动预置允许自动预置地址增地址增减选择减选择0 递增递增1 递减递减00 请求方式请求方式01 单字节方式单字节方式10 块字节方
36、式块字节方式11 级联方式级联方式传送方传送方式选择式选择372命令寄存器图8-19 命令寄存器格式0:正常时序写:正常时序写1:扩展写入选择:扩展写入选择X:当:当D3=1时任意时任意优先级优先级 0:固定优先级:固定优先级选择选择 1:循环优先级:循环优先级0:禁止:禁止1:允许:允许X:D0=0任意任意是否允许是否允许存储器与存储器与存储器传输存储器传输是否允许通是否允许通道道0地址保持地址保持0:禁止:禁止1:允许:允许是否禁止是否禁止芯片工作芯片工作0:允许:允许1:禁止:禁止%0:正常时序:正常时序1:压缩时序:压缩时序时序控制时序控制D7 D6 D5 D4 D3 D2 D1 D0
37、DACK有效有效 0:低有效:低有效电平选择电平选择 1:高有效:高有效DREQ有效有效 0:高有效:高有效电平选择电平选择 1:低有效:低有效参考例8-7383状态寄存器图8-20 状态寄存器格式D7 D6 D5 D4 D3 D2 D1 D01已已接接收收到到终终止止计计数信息数信息0未未接接收收到到终终止止计计数信息数信息1有尚未处有尚未处理的理的DMA请求请求0无尚未处无尚未处理的理的DMA请求请求 通道通道3 通道通道2 通道通道1 通道通道0 通道通道0 通道通道1 通道通道2 通道通道3394请求寄存器00 通道001 通道110 通道211 通道30 撤消请求1 设置请求图8-2
38、1 请求寄存器格式通道选择DMA请求D7 D6 D5 D4 D3 D2 D1 D0X X X X X405屏蔽寄存器00 通道通道001 通道通道110 通道通道211 通道通道3图8-22 屏蔽寄存器格式屏蔽设置屏蔽设置0 撤除屏蔽撤除屏蔽1 设置屏蔽设置屏蔽通道选择通道选择D7 D6 D5 D4 D3 D2 D1 D0X X X X X416综合屏蔽寄存器1 设置屏蔽设置屏蔽0 撤除屏蔽撤除屏蔽1 设置屏蔽设置屏蔽0 撤除屏蔽撤除屏蔽图图8-23 8-23 综合屏蔽寄存器格式综合屏蔽寄存器格式通道通道0通道通道31 设置屏蔽设置屏蔽0 撤除屏蔽撤除屏蔽通道通道21设置屏蔽设置屏蔽0 撤除屏
39、蔽撤除屏蔽通道通道1D7 D6 D5 D4 D3 D2 D1 D0X X X X 427软件命令(1)清除高/低触发器(F/L触发器) (2)软件复位命令(主清除命令) (3)清屏蔽寄存器命令 438.4.4 8237A的应用举例的应用举例o8237A可可编编程程控控制制器器在在控控制制DMA操操作作前前,应应先先由由CPU对其进行初始化编程,设定工作模式及参数。步骤:对其进行初始化编程,设定工作模式及参数。步骤:1.输出总清除命令输出总清除命令2.设置基地址与当前地址寄存器设置基地址与当前地址寄存器3.设置基字节数与当前字节数寄存器设置基字节数与当前字节数寄存器4.写入模式寄存器写入模式寄存
40、器5.写入屏蔽寄存器写入屏蔽寄存器6.写入命令寄存器写入命令寄存器o若若不不用用软软件件请请求求,在在完完成成上上述述编编程程后后,由由各各通通道道的的DMA请求信号请求信号DREQ启动启动DMA传送过程;传送过程;o若若使使用用软软件件请请求求,需需将将请请求求寄寄存存器器内内容容写写入入指指定定通通道道后,开始后,开始DMA传送。传送。例例8-8 通道通道1、外设、外设、50字节、首地址字节、首地址6000H、内存区域、内存区域析:工作方式55H=0101 0101;综合屏蔽字02H;命令控制字00HMOV AL,04H;命令字04H=0000 0100,关闭8237(图8-19)OUT0
41、8H,AL;写入命令寄存器(表8-2)MOV AL,00H;OUT 0DH,AL;总清除,发复位命令(表8-2)MOV AL,00H;8237A只有8位数据总线缓冲器,而通道类寄存器都是OUT02H,AL;16位,需分两次写入或读出MOV AL,60H;写通道1的基地址与当前地址寄存器,目标数据区OUT02H,AL; 先低字节,后高字节MOV AL,32H;32H=50DOUT03H,AL;03H地址为基字节计数器与当前字节计数器MOV AL,00H;OUT03H,AL;先低字节,后高字节MOV AL,55H;55H=0101 0101(图8-18)OUT0BH,AL;0BH为方式控制寄存器(
42、表8-2)MOV AL,02H;02H=0000 0010OUT0FH,AL;0FH为综合屏蔽命令寄存器(表8-2)MOV AL,00H;OUT08H,AL;08H为命令寄存器45OUT 0DH, AL ;写入总清除命令MOV AL, 00HOUT 00H, AL ;写入0通道基地址和当前地址寄存器的低8位MOV AL,80HOUT 00H, AL ;写入0通道基地址和当前地址寄存器的高8位MOV AL, 00HOUT 01H, AL ;写入0通道基字节和当前字节寄存器的低8位MOV AL, 80H ;32KB=25KB=1000 0000 0000 0000OUT 01H, AL ;写入0通
43、道基字节和当前字节寄存器的高8位MOV AL,84H;84H=1000 0100OUT 0BH,AL ;写入模式控制字(块传送、地址增量、写传送、不自动预置)MOV AL, 00OUT 0AH,AL ;写入屏蔽寄存器(清除通道0的屏蔽)MOV AL, 80H ;写入命令寄存器(DREQ、DACK为高电平有效,固定优先级)OUT 08H,AL例例8-9 设定设定8237A端口地址为端口地址为00H0FH(表(表8-2),初始化程序如下:),初始化程序如下:47MOV AL,0FFH ;写入通道0计数初值为FFFFHOUT 01H,ALOUT 01H,ALMOV AL,58H;58H=0101 1
44、000OUT 0BH,AL ;写入模式控制字(单字节、地址递增、读传送、自动预置)MOV AL,00H ;写入命令寄存器OUT 08H,ALOUT 0AH,AL ;写入屏蔽寄存器(清除通道0的屏蔽位)MOV AL,54H ;设8253计数器1为方式2,只访问低位字节OUT 43H,ALMOV AL,18 ;设计数器1定时周期为15sOUT 41H,AL例例8-10 用用8237A通道通道0对动态存储器进行刷新,每隔对动态存储器进行刷新,每隔15s刷新一次,利用刷新一次,利用8253实现实现15s定时,试编出动态刷新程序。(定时,试编出动态刷新程序。(P137:DRAM刷新类似于读操作刷新类似于
45、读操作)48例例8-11 8-11 对对IBM PC/XTIBM PC/XT的的8237A8237A进行初始化和测试的程序段加注释说明。进行初始化和测试的程序段加注释说明。;对8237A进行初始化的程序段 MOV AL,04 OUT 08H,AL MOV AL,00 OUT 0DH,AL MOV DX,0 MOV CX,04 MOV AL,0FFHWRITE: OUT DX,AL OUT DX,AL INC DX INC DX LOOP WRITE MOV AL,58H OUT 0BH,AL MOV AL,41H OUT 0BH,AL MOV AL,42H OUT 0BH,AL MOV AL,
46、43H OUT 0BH,AL49 MOV AL,00H OUT 08H,AL MOV AL,00H OUT 0FH,ALp;对8237A通道13地址寄存器的值进行测试的程序段MOV DX,02 ;取通道1的地址寄存器端口地址MOV CX,03READ:IN AL,DX ;读地址低8位MOV AH,ALIN AL,,DX ;读地址高8位CMP AX,0FFFFH ;比较读取的值与写入的0FFFFH是否相等JNZ HHH;若不等,则转HHHINC DXINC DXLOOP READ ;对3个通道均测试;后续处理HHH:HLT ;测试出错,停机等待习题8.13 通道1、存储器两个区域BUF1和BUF
47、2、100个数据,连续传送方式、不自动预置初始化步骤:1)输出总清除命令2)设置基地址与当前地址寄存器3)设置基字节数与当前字节数寄存器4)写入模式寄存器5)写入屏蔽寄存器6)写入命令寄存器补充说明:存储器到存储器传送:这时就要用到两个通道,通道0的地址寄存器编程为源区地址;通道1的地址寄存器编程为目的区地址,字节数寄存器编程为传送的字节数。传送由设置一个通道0的软件DREQ启动,8237按正常方式向CPU发出DMA请求信号HRQ,待CPU用HLDA信号响应后传送就可以开始,每传送一个字节要用8个时钟周期,4个时钟周期以通道0为地址从源区读数据送入8237的临时寄存器;另4个时钟周期以通道1为
48、地址把临时寄存器中的数据写入目的区每传送一个字节,源地址和目的地址都要修改,字节数减量传送一直进行到通道1的字节数计数器减到零,产生TC引起在EOP端输出一个脉冲,结束DMA传送。MOV AL,04H;命令字04H=0000 0100,关闭8237(图8-19)OUT08H,AL;写入命令寄存器(表8-2)MOV AL,00H;MOV 0DH,AL;总清除,发复位命令(表8-2)MOV AL,00H;8237A只有8位数据总线缓冲器,而通道类寄存器都是OUT02H,AL;16位,需分两次写入或读出MOV AL,60H;写通道1的基地址与当前地址寄存器,OUT02H,AL; 先低字节,后高字节M
49、OV AL,32H;32H=50DOUT03H,AL;03H地址为基字节计数器与当前字节计数器MOV AL,00H;OUT03H,AL;先低字节,后高字节MOV AL,55H;55H=0101 0101(图8-18)OUT0BH,AL;0BH为方式控制寄存器(表8-2)MOV AL,02H;02H=0000 0010OUT0FH,AL;0FH为综合屏蔽命令寄存器(表8-2)MOV AL,00H;OUT08H,AL;08H为命令寄存器习题8.14 通道0、页面寄存器地址87H,成组方式、地址增、自动预置、基址2500H、1024个字节、内存到外设初始化步骤:1)输出总清除命令2)设置基地址与当前
50、地址寄存器3)设置基字节数与当前字节数寄存器4)写入模式寄存器5)写入屏蔽寄存器6)写入命令寄存器MOV AL,04H;命令字04H=0000 0100,关闭8237(图8-19)OUT08H,AL;写入命令寄存器(表8-2)MOV AL,00H;MOV 0DH,AL;总清除,发复位命令(表8-2)MOV AL,00H;8237A只有8位数据总线缓冲器,而通道类寄存器都是OUT00H,AL;16位,需分两次写入或读出MOV AL,25H;写通道0的基地址与当前地址寄存器,OUT00H,AL; 先低字节,后高字节MOV AL,00H;1024B=210=100 0000 0000=0400HOU
51、T01H,AL;01H地址为基字节计数器与当前字节计数器MOV AL,04H;OUT01H,AL;先低字节,后高字节MOV AL,94H;10 01 01 00=94H(图8-18)OUT0BH,AL;0BH为方式控制寄存器(表8-2)MOV AL,00H; OUT0FH,AL;0FH为综合屏蔽命令寄存器(表8-2)MOV AL,0C0H;1100 0000=0C0HOUT08H,AL;08H为命令寄存器(图8-19)55作业与习题作业与习题习题习题8 8要求所有课后习题都要要求所有课后习题都要在理解的基础上掌握。在理解的基础上掌握。阅读教材并理解和掌握的:阅读教材并理解和掌握的:1414,8 8,912912要求要求提交提交的作业(下周一):的作业(下周一):5 5、6 6、7 7、1414依据教学进度提供教学课件及习题答案依据教学进度提供教学课件及习题答案