请教一个8237初始化的题目?

lglg930 2009-10-27 09:41:58
8086系统,假设利用8237A通道1在存储器的两个区域BUF1和BUF2之间传送100个数据,采用连续传送方式,传送完毕后不进行自动预置,试写出初始化程序。

这个问题主要是不知道两个内存区域的基地址是在哪里写入的,有点迷糊了
希望能给出程序并附程序注释。

非常感谢!
...全文
581 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lglg930 2009-10-27
  • 打赏
  • 举报
回复
先谢谢两位!
书我都看过了,包括一些例题
但已看过的例题都是从外设到内存的传输,
这里提问的是内存的两个存储单元之间的数据传送
一般情况下要写入内存区域的基地址,但这个题目里有两个内存区域
也就是说有两个内存基地址
所以我就不清楚怎么写这两个基地址了
往哪写的问题
非常感谢!
killbug2004 2009-10-27
  • 打赏
  • 举报
回复
把这个看完基本就会了

比较中断与DMA两种传输方式的特点。
答:中断方式下,外设需与主机传输数据时要请求主给予中断服务,中断当前主程序的执行,自动转向对应的中断处理程序,控制数据的传输,过程始终是在处理器所执行的指令控制之下。
直接存储器访问(DMA)方式下,系统中有一个DMA控制器,它是一个可驱动总线的主控部件。当外设与主存储器之间需要传输数据时,外设向DMA控制器发出DMA请求,DMA控制器向中央处理器发出总线请求,取得总线控制权以后,DMA控制器按照总线时序控制外设与存储器间的数据传输而不是通过指令来控制数据传输,传输速度大大高于中断方式。
DMA控制器应具有那些功能?
答:DMA控制器应有DMA请求输入线,接收I/O设备的DMA请求信号;DMA控制器应有向主机发出总线请求的信号线和接收主机响应的信号线;DMA控制器在取得总线控制权以后应能发出内存地址、I/O读写命令及存储器读写命令控制I/O与存储器间的数据传输过程。
8237A只有8位数据线,为什么能完成16位数据的DMA传送?
答:I/O与存储器间在进行DMA传送过程中,数据是通过系统的数据总线传送的,不经过8237A的数据总线,系统数据总线是具有16位数据的传输能力的。
8237A的地址线为什么是双向的?
答:8237A的A0~A3地址线是双向的,当8237A被主机编程或读状态处于从属状态,A0~A3为输入地址信号,以便主机对其内部寄存器进行寻址访问。当8237A取得总线控制权进行DMA传送时,A0~A3输出低4位地址信号供存储器寻址对应单元用,A0~A3必需是双向的。
说明8237A单字节DMA传送数据的全过程。
答:8237A取得总线控制权以后进行单字节的DMA传送,传送完一个字节以后修改字节计数器和地址寄存器,然后就将总线控制权放弃。若I/O的DMA请求信号DREQ继续有效,8237A再次请求总线使用权进行下一字节的传送。
8237A单字节DMA传送与数据块DMA传送有什么不同?
答:单字节传送方式下,8237A每传送完一个字节数据就释放总线,传送下一字节时再请求总线的控制权。块传送方式下8237A必须把整个数据块传送完才释放总线。
8237A什么时候作为主模块工作,什么时候作为从模块工作?在这两种工作模式下,各控制信号处于什么状态,试作说明。
答:8237A取得总线控制权后,开始进行DMA传送过程,此时8237A作为主模块工作。8237A在被处理器编程或读取工作状态时,处于从模块工作状态。
8237A处于从模块时,若CS#=0、HLDA=0说明它正被编程或读取状态,IOR#与IOW#为输入,A0~A3为输入。8237A处于主模块时,输出地址信号A0~A15 (低8位经A0~A7输出,高8位经DB0~DB7输出)。8237A还要输出IOR#、IOW#、MEMR#、MEMW#、AEN、ADSTB等有效信号供DMA传送过程使用。
说明8237A初始化编程的步骤。
答:(1)写屏蔽字,阻止某通道的DMA请求。(2)写命令字(8号地址),确定信号有效电平、优先级方式、通道工作允许等。(3)写模式字(B号地址),确定某通道传送方式、传送类型、地址寄存器变化方式等。(4)置0先/后触发器。(5)设置地址寄存器、字节数寄存器的初值。(6)清除某通道屏蔽位,允许8237A响应其DMA请求。
8237A选择存储器到存储器的传送模式必须具备那些条件?
答:必须使用8237A内部的暂存器作为数据传送的缓冲器。8237A通道0的地址寄存器存放存储器的源地址、通道1的地址寄存器存放存储器的目的地地址、字节计数器存放传送的字节数,建立通道0的软件DMA请求来启动这一传输过程。
利用8237A的通道2,由一个输入设备输入一个32KB的数据块至内存,内存的首地址为34000H,采用增量、块传送方式,传送完不自动初始化,输入设备的DREQ和DACK都是高电平有效。请编写初始化程序,8237A的首地址用标号DMA表示。
答:设存储器页面寄存器内容已被置为3。8237A初始化程序如下:
MOV AL, 06H ;屏蔽通道2
MOV DX, DMA+0AH ;
OUT DX, AL ;
MOV AL, 80H ;写通道2命令字:DREQ、
MOV DX, DMA+08H ;DACK高电平有效,正常
DUT DX, AL ;时序、固定优先级、允许8237A工作等。
MOV AL, 86H ;写通道2模式字:块传
MOV DX,DMA+0BH ;输、写传输、地址增、
OUT DX, AL ;禁止自动预置等。
MOV DX,DMA+0CH ;置0先/后触发器
OUT DX,AL ;
MOV AL,00H ;设通道2基地址为4000H
MOV DX,DMA+04H ;
OUT DX,AL ;
MOV AL, 40H ;
OUT DX, AL ;
MOV AL, 0FFH ;设通道2基字节数为
MOV DX, DMA+05H ;7FFFH (32767D)
OUT DX, AL ;
MOV AL, 7FH ;
OUT DX, AL ;
MOV AL,02H ;清除通道2屏蔽。
MOV DX, DMA+0AH ;
OUT DX, AL ;
MOV AL, 06H ;通道2发DMA请求
MOV DX,DMA+09H ;
OUT DX,AL ;
BAYNPU 2009-10-27
  • 打赏
  • 举报
回复
单片机课程设计报告书 题目:电机测速系统 "院系名称 ": "自动化学院 " "学生姓名 ": " " "专业名称 ": "自动化 " "班 级 ": "自动XXXX班 " "时间 ": "20XX年X月X日 至 X月XX日 " 电机测速系统 1. 设计目的 随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片 机的应用则起到了举足轻重的作用。在工程实践中,经常会遇到各种需要测量转速的场 合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或 连续测量、显示其转速及瞬时速度。为了能精确地测量转速,还要保证测量的实时性, 要求能测得瞬时转速。因此设计一种较为理想的电机测速控制系统是非常有价值的。 2. 设计要求 1.用按键控制电机起停; 2.电机有两种速度,通过按键来改变速度; 3.通过数码管显示每分钟或每秒的转速。 三、设计器材 " 器件名称 " 数量 " "STC89C52单片机 " 1 " "ST151光电传感器 " 1 " "四位一体数码管 " 1 " "电阻 "各种阻值若干 " "电容 "10uf 1个 30pf 2个 " "晶振12MHz " 1 " "按键 " 1 " "单排排阻 " 2 " "开关 "1 " "直流电机 "1 " 四、设计方案及分析(包含设计电路图) 1. STC89C52单片机介绍 STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失 存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 (1)单片机最小系统 单片机最小系统电路如图所示,由主控器STC89C52、时钟电路和复位电路三部分组成 。单片机STC89C52作为核心控制器控制着整个系统的工作,而时钟电路负责产生单片机 工作所必需的时钟信号,复位电路使得单片机能够正常、有序、稳定地工作。 图 单片机最小系统 (2)晶振电路 (3)复位电路 复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单 元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使 系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。 2. ST151 光电转速传感器是根据光敏二极管工作原理制造的一种感应接收光强度变化的电子器 件,当它发出的光被目标反射或阻断时,则接收器感应出相应的电信号。它包含调制光 源,由光敏元件等组成的光学系统、放大器、开关或模拟量输出装置。光电式传感器由 独立且相对放置的光发射器和收光器组成。当目标通过光发射器和收光器之间并阻断光 线时,传感器输出信号。由于叶轮的旋转,当叶轮扇叶进入凹槽遮挡着发光二极管时, 光敏三极管没接收光,输出为零;当叶轮扇叶通过光电传感器时,光敏三极管接收光在 ST151电路输出为频率信号。 3. 设计思路 通过ST151光电传感器接收电机扇叶转动切割的次数获得脉冲,从而通过单片机T1口 接收高低电平,计数器在定时器的定时范围内记录脉冲个数,通过计算将转速送给数码 管并进行显示。 4. 程序框图 五. 程序 参见附录一。 六.系统仿真 参见附录二。 七、设计体会与收获(小组成员每人一份) XXX 本次课程设计我主要负责电路板的焊接,电路板的焊接需要先了解整个电路的各个硬 件的组成,并清楚它们各自的所在功能区域,然后要做的就是在电路板上为各硬件做一 个整体的规划,合适的规划很重要,既要考虑到整体看上去的美观,还要考虑到对以后 的调试和调整方便的地方,本人具体是先在电路板上划分开具体的功能区域,比如单片 机在左边占一块适当的位置,它的左端还要留有晶振电路和复位电路,依此做好其他模 块的分配。关于电路的具体焊接,感觉只要按照电路仿真图按一定的次序焊接,本人焊 接时速度较慢,但是基本比较顺利,没有出现很大问题。 XX 本次课程设计我主要负责程序的编写以及调试。编写程序的主要是利用中断来产生P WM,利用中断统计ST151产生的频率信号。 才拿到题目时面临的一个问题是如何利用程序来改变点击的速度,请教同学后知道一种 方法叫 PWM,通过改变一个周期的电信号的占空比来实现。当然,在写程序时还是遇到了不少问 题,比方按键怎么判断、改变 PWM 怎么实现、怎么再继续产生等。 程序的第二重点则是利用中断来统计电机转动后由ST151产生的频率信号。这个问题前前 后后想了几种方法,如用计数器统计再读取计数值、通过计数定时时间的频率再凑成1秒 等。但是由于方法不当,结果做出来的效果很差。最终选定,定时时间直接1秒再来统计 频率,这

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧