1、 目 录一. 设计任务和要求2二. 系统方案2三. 设计方法2 1.硬件设计2 2.8237简单介绍3四. 系统调试7 1.仪器和仪表7 2.实验步骤7 3.实验数据7 4.故障与阻碍9五. 设计结论10六. 收获和体验10七. 附件11一. 设计任务和要求掌握DMA方式的工作原理和8237DMA控制器的编程使用方法,以及如何在实验系统环境下,使用DMA的CH0进行数据传送。二. 系统方案8237是早期PC中采用的DMAC(现其功能已集成进芯片组),8237具有4个用于连接I/O设备进行数据传送的通道。当I/O设备向某通道发出DMA请求时,该通道即可通过8237进行DMA数据传送。利用本实验系
2、统提供的8237A-5 DMA控制的CH0,实现DMA的内存到内存的读、写传送,采用DMA软件请求,把内存中3000H4FFFH单元内容传送到5000H6FFFH单元中。采用已有的DJ-598K三合一单片机微机试验仪作为设计平台,来构建系统,以减少设计工作量。三. 设计方法1.硬件设计硬件结构应结合软件方案一并考虑,做到软件、硬件功能相匹配。在DJ-598K三合一单片机微机试验仪上,硬件设计参考方案如下:2. 8237简单介绍(1)8237A引脚图(2)8237A的内部寄存器格式8237A控制寄存器格式8237A模式寄存器格式8237A状态寄存器格式 请求寄存器和屏蔽寄存器格式多通道屏蔽寄存器
3、格式8237A端口地址四. 系统调试1.仪器和仪表计算机 1台微机实验箱 1台连接线 若干2.实验步骤(1)联机操作:连CS10到FF80H,在系统内存3000H4FFFH单元中填充10,11,12,13,运行程序8237ASM,当系统显示“8237good”表示DMA传送结束,按RST钮,返回P态,用内存读写命令检查5000H6FFFH单元内容是否和3000H4FFFH单元内容相一致,验证其正确性。(2)脱机操作:连CS10到FF80H,实验系统处于P态下,按SCAL键,然后在系统内存3000H4FFFH单元中填充10,11,12,13,输入2860,按EXEC键即可,当系统显示“8237g
4、ood”表示DMA传送结束,按RST钮,返回P态,用内存读写命令检查5000H6FFFH单元内容是否和3000H4FFFH单元内容相一致,验证其正确性。3.实验数据连接CS10与FF80H运行完程序,系统显示8237good。DMA传送结束之后,按RST键,返回P状态。这时的30004FFFH与50006FFFH内存单元的内容,由图片可看到,两段内存单元内的内容完全相同。4.故障与阻碍在实验过程中,对于在系统内存3000H4FFFH中存入10,11,12,一开始不知道应该存入,通过询问与回忆之前做过的微机实验,最后在实验箱上操作存入了这些数据。对于程序的编写,感觉课题过大,一开始觉得无从下手,
5、通过对过程仔细的整理,翻查书本中8237DMA传送部分的理论知识,以及老师的指导下,最后完成了程序的编写。五. 设计结论8237是早期PC中采用的DMAC,具有4个用于连接I/O设备进行数据传送的通道。当I/O设备向某通道发出DMA请求时,该通道即可通过8237进行DMA数据传送。 8237的逻辑结构包括时序和控制逻辑;内部计数器、寄存器组、程序命令控制逻辑;优先级编码逻辑;地址、数据缓冲器组等部分。 8237内部有四个独立通道,每个通道都有五个寄存器工作方式、基值地址、当前地址、基值字节计数、当前字节计数,另外还有四个通道公用的命令寄存器和状态寄存器,以及对DRQ信号的屏蔽寄存器和DMA服务
6、请求寄存器等。DMA是一种外设与存储器或者存储器与存储器之间直接传输数据的方式.在进行DMA存取时,CPU让出总线控制权,不再采用输入、输出指令的方法进行数据存取,而用一个专门的硬件控制电路控制外设与存储器或存储器与存储器之间直接交换数据,减少了中间环节,从而提高传送速度和CPU的效率。本次实验目的是实现8237DMA数据的传送,实验做的还算顺利,只不过刚开始的时候由于粗心大意,没有把实验步骤做正确,总是得不到想要的实验结果,最后按照正确的实验步骤,得到了实验结果。六. 收获和体验通过本次课程设计,我们首次接触这样一个比较大,比较系统的程序设计,完成一项功能,开始觉得很有困难。这学期刚刚接触到
7、汇编语言的编程,还没有很熟悉,课堂中也都是书上给好的程序,作业里也都是一些小型的,简单的程序,所以感觉有点无从下手。之后通过复习书本,询问老师以及上网查找资料,对课程设计的过程进行仔细得分析,最后完成了编程。完成编程后,根据课程设计的指导书上的指导,顺利完成了本次设计。通过这次课程设计,我明白了任何大的程序都是由一部分一部分小程序构成的,我们不能怕繁琐,应仔细分析过程,一步步编写,最后再系统地将这些小部分连接成大的程序,达到我们的目的。七. 附件(8237DMA数据传送课程设计源程序);8237.ASM,MOV:RAM FROM 3000H TO 5000H;BYTE-MOVCODE SEGM
8、ENTASSUME CS:CODEPCTL EQU 0FF23H ;控制口PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口CLEARFEQU0FF8CHCH0AEQU 0FF80hCH1A EQU0FF82HCH1CEQU0FF83HMODEEQU0FF8BHCMMDEQU0FF88HMASKSEQU0FF8FHREQEQU0FF89HSTATUSEQU0FF88Hrstequ0FF8dhLATCHEQU9000HORG 2860H;FORM EPROM FILE (.COM),SET ORG=0100HSTART: JMP STAR
9、T0BUF DB ?,?,?,?,?,?data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0:MOV SI,3000HMOV DI,5000HMOV CX,1FFFHMOV AL,00MOV DX,LATCHOUT DX,ALNOPNOPmov dx,rstout dx,alMOV DX,CLEARFOUT DX,ALMOV AL,0FH;MASK_CH_0-3MOV DX,MASKSOU
10、T DX,ALNOPNOPMOV DX,CH0A;L-SADMOV AX,SIOUT DX,ALMOV AL,AHOUT DX,ALNOPNOPMOV DX,CH1A;L-DADMOV AX,DIOUT DX,ALMOV AL,AHOUT DX,ALNOPNOPMOV AX,CX;COUNTMOV DX,CH1COUT DX,ALMOV AL,AHOUT DX,ALMOV AL,48H;P_MODEMOV DX,MODEOUT DX,ALMOV AL,45HOUT DX,ALMOV AL,01H;ON-8237MOV DX,CMMDOUT DX,ALL1:MOV AL,0EH;UNMASK_C
11、H_0MOV DX,MASKSOUT DX,ALMOV AL,04H;START_DMA_TRANSFERMOV DX,REQOUT DX,ALMOV DX,STATUSNOPNOPWAIT1:IN AL,DXTEST AL,03HJZ WAIT1;CALL CMP1;JNZ ERRMOV DX,CH1CIN AL,DXMOV AH,ALIN AL,DXCMP AX,0FFFFHJNZ L1CALL BUF1MOV CX,0080HL2:PUSH CXCALL DISPPOP CXLOOP L2CALL BUF2L3:CALL DISPJMP L3;-CMP1:MOV DX,CH0ACALL
12、CMP10MOV SI,AXMOV DX,CH1ACALL CMP10MOV DI,AXMOV AX,SICMP DI,AXRETCMP10:IN AL,DXMOV BL,ALIN AL,DXMOV AH,ALMOV AL,BLDEC AXRETERR:CALL BUF3ERR0:CALL DISPJMP ERR0;-DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;20H ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,BX MOV AH,00HPUSH BXMOV BX,OFFSET DATA1 AD
13、D BX,AX MOV AL,BXPOP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2:MOV CX,00A0HDELAY: LOOP DELAY POP CXCMP CL,0FEH ;01HJZ LX1INC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,08H MOV BUF+1,02H MOV BUF+2,03H MOV BUF+3,07H MOV BUF+4,17H MOV BUF+5,17H RET;-BUF2: MOV BUF,09H MOV BUF+1,00H MOV BUF+2,00H MOV BUF+3,0DH MOV BUF+4,10H MOV BUF+5,10H RETBUF3: MOV BUF,08H MOV BUF+1,02H MOV BUF+2,03H MOV BUF+3,07H MOV BUF+4,18H MOV BUF+5,18H RETCODE ENDSEND START参考文献1 80x86/Pentiun微机原理与接口技术余春暄,机械工业出版社,2008.9;2 微机原理与接口技术吉海彦主编,机械工业出版社,2007.7;.忽略此处.