单片机实验二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名学号

时间 2014.11.24

实验题目单片机对外部RAM读写实验

一、实验目的与要求

实验目的:学习扩展存储器62256的读、写操作和用法。

实验要求:①向62256里连续写入1、2、3……100,然后再连续读出并求和,结果送P1口显示。

②将62256里0000H-7FFFH内容全部清零;

③将编写程序表TAB为首地址的6个单元(1,3,5,7,11,13共6个奇数)

内容写入62256里以1000H为首地址的单元内;并累计相乘,将16位计算

结果的送62256里的2000H单元;高八位通过LED闪烁(0.5s亮,0.5s灭)

显示。

二、实验环境(硬件环境、软件环境)

硬件环境:TMD-2模块化单片机实验仪

RAM:62256(32K X8)地址范围:0000H~7FFFH

I/O口输入输出设备:8个拨动开关,8个LED灯

数据显示设备:1个共阴极数码管,1个两行16字符的液晶显示器

逻辑笔

输出时钟频率(YCLK):1MHz

系统电源:+5V/2A ,+12V/0.5A ,-12V/0.5A

软件环境:系统编程软件Flash Magic ,汇编语言程序编辑软件Keil,串行口调试助手

三、实验电路

说明:74LS245(U22)用作数据总线双向驱动。74LS373(U21)用于低8

位地址锁存。62256(U16)是32K字节的数据存储器。它有8条数据线

(D0~D7),15条地址线(A0~A14)。通过读、写线(/RD,/WR)控制CPU

与62256之间数据传送的方向。

A15用作62256的片选线。A15=0时,选中62256,可对它进行读、写操作。

62256的地址空间范围:0000H~7FFFH。

A15=1时,选中外部接口芯片:8000H~8FFFH。

四、程序流程图

①向62256里连续写入1、2、3……100,然后再连续读出并求和,结果送P1口显示。

②将62256里0000H-7FFFH内容全部清零;

③将编写程序表TAB为首地址的6个单元(1,3,5,7,11,13共6个奇数)内容写入62256里以1000H为首地址的单元内;并累计相乘,将16位计算结果的送62256里的2000H 单元;高八位通过LED闪烁(0.5s亮,0.5s灭)显示。

五、程序测试报告:(调试输入数据、结果数据或状态。)

①向62256里连续写入1、2、3……100,然后再连续读出并求和,结果送P1口显示。答:运行程序后,LED指示灯显示的数值大小为“BA”,即八个灯的亮灭状态为“亮灭亮亮亮灭亮灭”。

②将62256里0000H-7FFFH内容全部清零;

答:运行程序后,可通过软件检测0000H-7FFFH所存储的数据均为“0”。

③将编写程序表TAB为首地址的6个单元(1,3,5,7,11,13共6个奇数)内容写入62256里以1000H为首地址的单元内;并累计相乘,将16位计算结果的送62256里的2000H 单元;高八位通过LED闪烁(0.5s亮,0.5s灭)显示。

答:运行程序后,可通过软件检测1000H-1005H六个单元中存储的内容分别为“01H,03H,05H,07H,0BH,0DH”。LED指示灯显示的数值大小为“3A”,即八个灯状态为“灭灭亮亮亮灭亮灭”与全灭状态交替,各为0.5s。

六、体会:(碰到的问题、如何解决、有何体会)

通过本次实验,我们学会了扩展存储器62256的读、写操作和用法。通过实验书中的例子,我们了解到向扩展存储器中写数的一种方法,就是要设置一个数据数量来控制数据是否完全写入。可是当数据数量大于255时便不能再用这一方法来控制数据是否完全写入,这时候我们可以通过判断DPH或DPL的数值是否达到要求来控制。

通过最后一个思考题的练习,综合了向扩展存储器中写数、读数以及实现数据的处理这些内容,难度较大。写数利用了查表法,读数则与例题类似,但是在数据的处理上,思考题增加了难度为数据的相乘,这时候就应该注意“MUL AB”语句的使用,相乘后得到的数据高八位存储在B中,低八位存储在A中。对于思考题的数据我们可以注意到,前四个数据相乘后仍然是<255,后两个数据相乘后是<255,因此我们可以分别计算前四位相乘、后两位相乘的数据,然后这两个数据再相乘,便可以得到最终我们需要的六个数相乘的结果,此时高八位存储在B中,低八位存储在A 中。然后便可以存储结果,并将高八位输出到P1口。利用延时程序,完成整个程序的设计。

设计程序的过程中遇到过一些困难,经过多次检查、修改、调试后最终得到想要的结果。总之,原理是易懂的,但是会灵活运用确实有点困难的,说明我们还需要加强练习。

七、源程序代码

①向62256里连续写入1、2、3……100,然后再连续读出并求和,结果送P1口显示。

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV SP,#60H

MOV DPTR,#0000H

MOV R7,#100

MOV A,#1

INPUT:MOVX @DPTR,A

INC A

INC DPTR

DJNZ R7,INPUT

MOV 20H,#0

MOV R7,#100

MOV DPTR,#0000H

OUTPUT:MOVX A,@DPTR

ADD A,20H

MOV 20H,A

INC DPTR

DJNZ R7,OUTPUT

MOV P1,20H

LOOP: SJMP LOOP

END

②将62256里0000H-7FFFH内容全部清零;

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV SP,#60H

MOV DPTR,#0000H

MOV A,#00H

INPUT:MOVX @DPTR,A

INC DPTR

MOV R7,DPH

CJNE R7,#7FH,INPUT

MOVX @DPTR,A

INPUT1:INC DPTR

MOVX @DPTR,A

MOV R7,DPL

CJNE R7,#0FFH,INPUT1

HERE: SJMP HERE

相关文档
最新文档