数据存储器的访问控制信号是RD和WR程序存储器的访问控制信号是PSEN。虽然共用了数据总线和地址总线但是访问控制信号鈈同,就不会重叠啊!
你对这个回答的评价是
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手機镜头里或许有别人想知道的答案。
《51单片机访问外部程序存储器原悝及应用》习题答案
微型计算机主要由哪几部分组成各部分有何功能?
答:一台微型计算机由中央处理单元(
等组成相互之间通过三組总线(
由运算器和控制器组成,
运算器能够完成各种算术运算和逻辑运算操作
控制器用于控制计算机进行各种操作。
存储器是计算机系统中的“记忆”装置其功能是存放程序和数据。按其功
与外部设备进行信息交换的部件
接口等相对独立的功能部件连接起来,并传送
什么叫51单片机访问外部程序存储器其主要由哪几部分组成?
接口电路等主要部件集成在一块半导体芯片上的微型计算
在各种系列的51单爿机访问外部程序存储器中
的配置有几种形式?用户应根据什么
适合于定型大批量应用产
,适合于研制产品样机;
写出下列各数的另兩种数制的表达形式(二、十、十六进制)
一、MCS5151单片机访问外部程序存储器基本开发环境
1) 熟悉软件的集成开发环境 2) 掌握51单片机访问外部程序存储器软件设计流程
3) 掌握51单片机访问外部程序存储器存贮器结构及各窗口の间的联系 2. 实验内容:
1) 用三种方法实现将累加器A内容改为20H
方法1--MOV A,#20H 方法2—MOV R0,#20H MOV A,R0 方法3—MOV R0,#20H XCH A,R0 心得:越往下做实验时就越感觉这题根本不能说是题目,但不得鈈说在没接触过编程软件,刚开始学的汇编,第一次做的实验就光这道题都觉得不知道做什么.所以凡是总有开始,不了解情况的多简单的都会觉嘚难.
2) 将58H位单元置为1观察内部RAM中2BH内容的变化 代码:
SETB 2BH.0 JMP $ END 心得:这是关于内部存储中对单元和字节了解,不理解很容易做错.比如开始写的指令为
这是錯误的指令。这就需要认真去了解51单片机访问外部程序存储器中的字节地址与位地址的关系80C51中有位寻址区和字节寻址区。题目中58H为位地址2BH为字节地址,且58H为2B字节的最低位由于58H属于位寻址区,可用位操作指令 SETB 进行置位SETB 2BH.0 执行后,2BH中内容变为01
3) 如果当前状态为有进位、工作寄存器使用区2请用3种方法设置这种状态
心得:以上LAB2写了三段代码,可分别完成题目要求不过实验时只是对代码进行叻错误调试,没有对结果进行检验其中值得注意的是对于布尔(位)操作指令的用法,比如传送指令必须经累加器C如第二段中MOV P0,#01H ; MOV C,P0.0 ,以及對于位寻址的方式(如需用到“.”隔开)的应用
1 4) 编一个小程序将内部RAM中的20H单元的内容送到21H单元并调试
5) 用程序将堆栈指针指向60H,然后在堆棧中依次压入0102,0304,05五个数观察哪些单元内容发生了变化,各变为多少从哪些窗口可以发现这些变化?顺序将堆栈中的五个数放入30H~34H五个单元中编程实现之。
心得:此处需要访问片外存储空间需要借助寄存器DPTR,需注意其为16位的寄存器在使用时若与仈位寄存器进行数据交换时需分为高八位DPH与低八位DPL来用。
2 7) 若要求程序从0010H单元开始运行可用两种方法实现?
3. 选做实验内容:数据传送 目的:
1) 掌握805151单片机访问外部程序存储器内部数据存贮器、外部数据存贮器的数据传送特点和应用 2) 掌握MOVMOVX和MOVC类指令的用法及区别 內容:
1) 将片内RAM数据区20H为首地址的十六个字节传送到30H为首地址的数据区,即:20H~2FH送30H~3FH
第一次做实验主要是熟悉了解了下51单片机访问外部程序存储器编程软件的使用开始接触时在对其软件不是太了解的情况下实验编程做的确实很乱,不清楚该怎样进行比如不知如何进行对指囹的调试,也不清楚该如何观察结果没有一个整体的概念,所以在了解其开发环境上花了不少时间经过一段时间的摸索后也终于了解叻其具体的使用,也能够顺利的对指令的编程运用运行指令时遇到的一些问题需要注意的也在上面各题中做了说明。还有需要注意的是:进入软件仿真时需要对存储空间进行查看的方法是在Address窗口中输入:d:00h 显示内部数据存储器从00h开始的单元; x:1000h 显示外部数据存储器从1000h开始的单え; c:0000H 显示程序存储器内容还有由于伪指令 END 定义的原因,在程序末需加一条死循环调转指令(如 JMP $ )使程序不会进入其他未知空间执行其他指令
1) 正确使用51单片机访问外部程序存储器的加减运算指令
2) 掌握不同指令对于程序状态字的影响及程序状态字的意义、用处 3) 掌握ADD,ADDCSUBB和DA A等指令的用法 4) 学习模块化程序设计方法 2. 实验内容
1) 编写3字节二进制加法子程序,并用主程序调用不同的加数和被加数来检测该子程序的正确性需考虑有进位和无进位情况。程序入口为: 加数:22H21H,20H三字节22H为最高位
被加数:32H,31H30H三字节,32H为最高位
2) 编写三字节二进制减法子程序 入口:被减数: 52H51H,50H, 50H为最低位
出口:差:外部数据存贮器2003H~2000H(2000H为最低位) 用主程序调用多组数据来调试需考虑无借位和有借位两种情況。 例如:
3) 编写10位十进制加法子程序(十进制数采用压缩BCD码存放) 入口: 加数:24H—20H低地址放低字节
被加数:29H—25H,低地址放低字节
出口 和:4005H—4000H低地址放低字节
要求调用多组数据调试,注意观察PSW的变化理解DA A指令的含义。例如:
执行后地址:03 00
班级: 152 专业: 电子科学与技术 姓洺: 子路 学号: 教师:
1、熟悉Keil C5151单片机访问外部程序存储器应用开发系统
1、安装好了Keil软件以后我们打开它。打开以后界面如下:
2、我们先噺建一个工程文件点击“Project->New Project?”菜单,如下图:
3、选择工程文件要存放的路径 ,输入工程文件名 LED, 最后单击保存.
4、在弹出的对话框中选择 CPU 厂商忣型号
6、在接着出现的对话框中选择“是”
8、保存新建的文件,单击SAVE如下图:
9、在出现的对话框中输入保存文件名MAIN.C(注意后缀名必须为.C)再单击“保存”,如下图:
12、在编辑框里输入如下代码:
13、到此我们完成了工程项目的建立以及文件加入工程 , 现在我们开始编译工程洳下图所示 : 我们先单击编译, 如果在错误与警告处看到 0 Error(s) 表示编译通过:
16、打开文件夹‘实验1’查看是否生成了HEX文件。如果没有生成在执荇
一遍步骤10到步骤12,直到生成
三、实验工具(软件、硬件等)
实验二:Proteus软件学习
3、掌握Proteus中实现51单片机访问外部程序存储器系统设计与仿真的步骤与方法
Proteus强大的单方机系统设计与仿真功能,使之成为51单片机访问外部程序存储器系统应用开发和改进手段之一
开发的整个过程都是茬计算机上完成的,其过程一般分为三步: 1) Proteus 电路设计:在ISIS平台上进行51单片机访问外部程序存储器系统电路设计、选择元器件、接插件、连接電路和电气现则检查等
2) Proteus 源程序设计和生成目标代码文件:在ISIS 平台上或借助第三方编译工具进行51单片机访问外部程序存储器系统程序设计、编辑、汇编编译、代码级调试,最后生成目标代码文件(*hex)
3)Proteus仿真:在ISIS平台上将目标代码文件加载到51单片机访问外部程序存储器系统中,由此实现系统实时交互与协同伤真
三、实验工具(软件、硬件等)
1、载有Proteus的计算机一台
1、用Keil软件编写程序并利用开发板仿真
2、学习LED灯工作原理
延时实现LED流水灯效果P2口八个灯作跑马灯。采用了寄存器存中间数
三、实验工具(软件、硬件等) 1.载有Keil软件的计算机一台 2.开发板一套
1、用Keil软件編写程序并利用开发板仿真
2、学习静态显示管工作原理
静态数码管流动显示0~9
二、实验工具(软件、硬件等) 1.载有Keil软件的计算机一台 2.开发板一套
實验五:按键移位动态显示
1、用Keil软件编写程序并利用开发板仿真
2、学习静态显示管工作原理
静态显示管,按键不同显示不同
三、实验工具(軟件、硬件等) 1.载有Keil软件的计算机一台 2.开发板一套
1、用Keil软件编写程序并利用开发板仿真
2、学习中断INT0和INT1的工作原理
试验数码管上显示外部中断計数用51单片机访问外部程序存储器脚直接控制数码管和外部中断使用
三、实验工具(软件、硬件等) 1.载有Keil软件的计算机一台 2.开发板一套
实验┅(1) 顺序结构程序设计
掌握汇编语言设计和调试方法。熟悉KeilC和Protus仿真软件的使用
1、电路如图一所示。将A的内容通过P2口送LED发光二极管显示
2、修改程序,实现跑马灯的显示效果
1、在计算机某个硬盘中建立项目文件夹。例如“shiyan1”或者“ex1”
3、打开主菜单中的“project”下的“new project”建立新嘚项目。按照要求输入项目文件名例如“shiyan1.prj”。注意:项目应该建立在第一部的文件夹中
4、打开主菜单中的“file”下的“new file”,建立新的汇編语言文件录入程序,并将文件命名为“ex1.asm”存入项目文件夹中。
5、将第四步建立的文件加入到项目中
6、编译项目文件,查错
7、启動protus软件,将电路图一输入计算机并存到项目文件夹中。
8、在protus软件中使用鼠标左键双击,将第六步编译后所产生的“shiyan1.hex”文件写入到51单片機访问外部程序存储器中
9、在protus软件中运行程序。
10、将A中的内容修改为“0AAH”重新编译程序,并运行观察结果。
如何用断点方式调试本程序
实验一(2) 循环结构程序设计
熟悉MCS-51指令系统,掌握程序设计方法
编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单え字节无符号的正整数按从小到大的次序重新排列。
⑴在“P.”状态下按“0→EV/UN”装载实验所需的代码程序。 ⑵对片内RAM地址50h~5AH进行不规则置数
⑶在“P.”状态下键入0000,然后按“STEP”或“EXEC”进入实验项目的调试与运行
在与PC联机状态下,编译、连接、下载PH51\se05.asm用连续或单步方式运荇程序。
⑴在单步运行时每走一步可观察其运行结果
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查片内50~5Ah中内容是否按从小到大排列
五、思考:修改程序把50~5Ah中内容按从尛到大排列。
实验一(3) 选择结构程序设计
编写程序根据送入的数据转移运行。
熟悉51单片机访问外部程序存储器中断概念及中断编程方法
编写程序,从P3.3输入脉冲记录输入脉冲个数,并用P1口外部链接的发光二极管显示计数结果
实验三 LED显示实验
利用实验系统提供的显示設备,动态显示一行数据
⑴了解数码管动态显示的原理; ⑵了解用总线方式控制数码管显示。
UN2003芯片是7个带驱动的反相器。8个数码管均為共阴极接法
实验四 A/D转换实验
(1)掌握A/D转换与51单片机访问外部程序存储器接口的方法;(2)了解A/D芯片0809转换性能及编程方法; (3)通过实验了解51单片机訪问外部程序存储器如何进行数据采集。
利用实验系统上的0809做A/D转换器实验系统上的电位器提供模拟量输入,编制程序将模拟量转换成數字,通过数码管显示出来
把0809的零通道INT0用插针接至AINl孔,0809CS位FFE0孔运行程序,数码管显示0809.XX后二位显示当前采集的电压转换的数字量,调节W1该二位将随着电压变化而相应变化。
修改程序用其它通道轮流采样显示。
实验五 电脑时钟(定时器、中断综合实验)
熟悉MCS-51定时器串行口囷中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧
编写程序,从本实验系统键盘上输入时间初值用定时器产生0.1S定時中断,对时钟计数器计数并将数值实时地送数码管显示。
连续运行程序在键盘上输入时间初值,按执行键EXEC执行数码管上实时显示時间值。
(1)电子钟走时精度和程序中那些常数有关?
(2)修改程序使定时器工作方式改变调节有关参数,进一步提高精度
实验六 LCD液晶显示屏实驗
⑴掌握51单片机访问外部程序存储器扩展液晶显示接口的设计与编程。 ⑵利用字符式液晶显示器显示字符
编制程序,在液晶显示器上显礻:
学生所在的院系的汉语拼音字母和学生的名字分两行显示。
;写指令和写数据子程序 .. ;双字节参数指令写入入口
LCALL PR13;写入参数 ;单字节参数指囹写入入口
RET ;初始化子程序
LCALL PR1;双字节参数指令写入入口
;设置光标初始位置是字符行和字符列,第0行第15列
;显示方式设置使用内部字符发生器
MOV COM,#80H;顯示方式设置,逻辑“或”合成
;写数据子程序8*8点阵
;R6中装入显示位置的列数(字符的个数),每行16个字符R7中装入显示位置距左上角的字苻行数
;5FH单元中装入待显示的字符码
实验七 直流电机转速测量与控制实验
1.掌握直流电机的驱动原理。 2.了解直流电机调速的方法
1.用0832 D/A转换电路後的输出经放大后驱动直流电机。
2.编制程序改变0832输出经放大后的方波信号的占空比来控制电机转速本实验中 D/A输出为双极性输出,因此电機可以正反向旋转
clr 20h.1;初始状态时,电机停止转动
实验八 步进电机控制实验
1.了解步进电机控制的基本原理 2.掌握步进电机转动编程方法。
从鍵盘上输入正、反转命令转速参数和转动步数显示在显示器上,CPU再读取显示器上显示的正、反转命令转速级数(16级)和转动步数后执荇。转动步数减为零时停止转动
单片微型计算机原理、应用及接口技术
学生姓名/学号:崔振振
提交时间:2015—2016学年第1学期
51单片机访问外部程序存储器实验1汇编语言程序设计实验
---- 存储器块清零或赋值
1 熟悉存储器的读写方法,熟悉51汇编语言结构 2 熟悉循环结构程序的编写。
3 熟悉編程环境和程序的调试 二.实验内容
指定存储器中某块的起始地址和长度,要求将其内容清零或赋值例如将4000H开始的100个字节内容清零或铨部赋值为33H。 三.实验仪器
微机、WAVE6000编程环境软件(51单片机访问外部程序存储器实验箱) 仿真器--仿真器设置-?
√ 使用伟福软件模拟器 勾上
1、运行WAVE 双击“WAVE”图标,进入仿真调试环境最上行为提示行:伟福6000 软件模拟器(8***) [C:\WAVE\SAMPLES\***.PRJ]- [***- C:\WAVE\SAMPLES\***.ASM],其中,8***为要仿真的芯片后面的.PRJ文件是你要调试的项目,最後一项是录入的源程序(如果有项目文件,请点击菜单 文件-关闭项目)
使用语言设置:点击“仿真器—— 仿真器设置”
仿真器设置:点擊“仿真器—— 仿真器设置——语言”选择“伟福汇编器”“混合
十、十六进制”;点击仿真器设置下的“仿真器”,选择 S51/S、 POD8X5X、8751(或AT89C51);在“使用伟福软件模拟器”选项上打“√”点击“好”。完成软件模拟仿真器环境设置
完成下列程序的录入(SY1.ASM)。(注意:录入源程序必须使用西文输入法) 录入步骤为:点击“文件”——点击“新建文件”则显示器打开源程序录入窗口,文件名默认为NONAME1;将SY1.ASM录入并点击“文件”———点击“保存文件”特别注意:保存文件时必须加上扩展名“.ASM”,并记录保存的文件夹路径
建立项目,点击新建项目选择剛才新建的文件,下一步可不选择然后填写项目名字
4、对录入的源程序SY1.ASM进行编译
编译步骤为:点击“项目———全部编译”
若编译完成,在左下角的“信息窗口”将显示生成两个文件SY1.HEX和SY1.BIN 若源程序在格式上有错误,则在“信息窗口”中出现错误提示请检查源程序,修改後再进行编译直至编译成功。
窗口最下一行显示:执行时间和PC、DPTR、A、PSW、SP的当前值
5、窗口介绍与练习 (1)、左边窗口:为“项目窗口”囷“观察窗口”: Project: 项目窗口;
REG: 工作寄存器和部分特殊功能寄存器窗口。 SFR: 51系列51单片机访问外部程序存储器特殊功能寄存器窗口
另:此窗ロ最右边显示的是某个特殊功能寄存器(点击选中左边的某个寄存器)的位及对应的二进制的值。
(2)、左下角为“信息窗口” (3)、祐下角为CODE(程序存储器)窗口和XDATA(片外数据存储器)窗口。 (4)、点击主菜单的“窗口——CPU窗口”在右部窗口显示PC值、机器码和源程序。 (5)、点击主菜单的“窗口——数据窗口——DATA”:显示片内RAM窗口
点击 “执行—— 复位”:使程序指针指向第一条指令(CPU窗口指向0000H) 点擊 “执行—— 单步”:使程序单步执行。
7、观察寄存器单元中的内容:
点击 窗口—— 数据窗口- CODE: 可以观看程序存储器 0000H —— FFFFH 中的机器码 点击 窗口—— 数据窗口—— XDATA: 可以观看片外RAM 数据 0000H— FFFFH 点击 窗口—— 数据窗口—— DATA: 可以观看RAM 数据00H— FFH 参考程序与流程图
通过实验能够让我更了解51单片机訪问外部程序存储器内部工作的原理,能够更深一层次的帮助我理解各个语句命令的功能
51单片机访问外部程序存储器实验2存储块移动 一.實验目的
1 熟悉51汇编语言程序结构 2 熟悉循环结构程序的编写,进一
3 熟悉编程环境和程序的调试 二.实验内容
将指定源地址(3000H)和长度(100芓节)的存储块移动到目的地址(4000H)。 三.实验步骤
同实验一项目文件建立过程然后录入代码 四.代码内容
试验中当时挺迷惑dph和dpl的,最终查书才知道是dptr的另一种表达方式从这可以看出有时候实验是检验自己学习不足的好方法,从而加深对本质的理解
1了解数据排序的常用算法掌握冒泡算法。
4 2 进一步熟悉编程环境和调试方法 3 熟悉汇编程序设计。 二.实验内容
将 50H开始的10个随机数按从小到大的顺序排列 三.實验仪器微机、WAVE6000编程环境
试验中由于上电后数据都一样,所以需要手动修改50H后10个数据(要排序的数)方法是:窗口---数据窗口---DATA 找到50H开始的10个2位16进制数双击,修改其数值如(62,49,37,15,80)之后编译(下载),单步执行查看排序执行过程
四.实验步骤:同实验一,值嘚注意的地方就是修改数据
; 前小后大, 不交换
; 前大后小, 置交换标志
其实有时候挺疑惑伪代码到底是干什么的因为程序在执行中,不像c语言┅样调用子函数能够让人很理解但究其最终的的过程,还是和c语言是一样的具有同样的思想
51单片机访问外部程序存储器实验4 P1口输入输絀实验
1.熟悉P1 口的功能。
2.熟悉延时子程序或定时中断程序的编写和使用
5 3.初步熟悉51单片机访问外部程序存储器软硬件设计方法。 二.實验内容(两内容分开做)
注意:硬件实验小实验箱的仿真器设置:
选择仿真器选择仿真头选择CPU G6W
1.P1口做输出口接八只发光二极管编写程序,使发光二极管循环亮灭
注意:小实验箱(G2010)的发光二级管LED是低电平亮,高电平灭;
大实验箱(LAB6000)的发光二级管LED是高电平点亮低电平滅。
2.P1.0,P1.1作输入口接两个拨动开关P1.2,P1.3作输出口,接两个发光二极管编写程序读取开关状态,将此状态在发光二极管上显示出来 三.实验儀器
微机,WAVE6000编程环境、实验箱
注意:当P1口用作输入口时必须先对它置”1”。
编程时应注意P1.0,P1.1作为输入时应先置1才能正确读入值。
当进行實验时我一直不明白,为什么可以用OX0000H这样的值赋给dptr51单片机访问外部程序存储器就知道是对P0 P2操作P1能不能这样使用呢,在实验中我们看到對单个引脚操作时是直接进行赋值的但最终还是通过看书得以理解。
1 熟悉计数器的使用方法
7 2 熟悉计数器的硬件电路连接。 3 熟悉计数器嘚软件设计 二.实验内容
注意:硬件实验 小实验箱的仿真器设置:
选择仿真器 选择仿真头 选择CPU G6W POD51 内部定时计数器0,按计数器模式和工作方式1笁作对P3.4(计数器0计数脉冲输入T0)引脚进行计数。将其计数数值按二进制数用P1口驱动LED灯显示出来
以 保 证 电 平在 变 化 之 前 即 被 采 样 。 同 时 這 就 决 定 了 输 入 波 形 的 率 不 能 超 过 机 器 周 期
微机、WAVE6000编程环境,伟福6000实验箱 注意:P3.4接单次脉冲 实验连线如图:
对于程序的过程我没有太多嘚疑问能够更好地理解书中概念性的知识。
1 熟悉外部中断的硬件电路中断技术的基本使用方法。 2 熟悉外部中断的软件设计
注意:硬件實验小实验箱的仿真器设置:
选择仿真器选择仿真头选择CPU G6W
利用实验箱上的单脉冲按键和发光二极管实现:用单次脉冲申请中断,在中断服務程序中对输出信号进行翻转(对每当输出一个单次脉冲时(产生低电平一个脉冲)发光二极管(L0)亮灭变化)。
微机、WAVE6000编程环境实驗箱
INT0连接低电平单次脉冲。 实验电路及连线如下:小实验箱低电平脉冲见上页图示
中断服务程序(ISR)关键:
1 保护进入中断时的现场,并茬退出中断之前恢复现场;中断重入的设置中断相关寄存器的设置:中断寄存器IE,中断触发罚方式的设置本例中保护CPU状态寄存器PSW等。
2 中断程序和子程序的区别中断程序不是程序调用的,中断发生时CPU就执行相应中断服务程序。程序流程图:
刚开始一直在疑惑51单片机访问外蔀程序存储器进入中断是怎样进行的是通过主函数调用还是怎样执行的,以前一直不明白为什么主函数没有调用但是函数执行了通过實验知道对于中断服务子函数是不需要通过主函数调用的。
1、了解MCS-5151单片机访问外部程序存储器的组成、中断原理中断处理过程、外部中斷的中断方式。
2、掌握中断响应及处理的编程方法
MCS-51的中断系统中有5个中断源:外部中断INTO,INT1定时器/计数器TO、T1中断和串口UART中断,它们对应不哃的中断矢量 如表:
IE是中断允许寄存器,其中EXOETO,EX1ET1,ES分别是上述5个中断的允许控制位EA位是中断总允许位,每个中断只有在相应中断尣许且总中断也允许的情况下才能得到中断响应。80XX51的5个中断都可以设为高低2个优先级IP是中断优先级寄存器,其中PXOPTO,PX1PT1,PS位分别对应5個中断的优先级设置置“1”时设为高优先级中断,为“0”时是低优先级中断在有中断嵌套要求时,低优先级中断可被高优先级所中断当同一级的中断同时到来时,先响应中断矢量排在前面的中断
电路原理图如下,所需元件为:AT89C
参照实验电路设计交通灯控制系统。模拟交通信号灯控制:一般情况下正常显示东西-南北交替放行,各方向通行时间为30秒有救护车或警车到达时,两个方向交通信号灯全為红色以便让急救车或警车通过,设通行时间为10秒之后交通恢复正常。用单次脉冲模拟急救车或警车申请外部中断
1、在生成HEX文件后,用Proteus软件对电路图进行计算机仿真;
2、程序下载到51单片机访问外部程序存储器实验板上验证; (实验板数码管的驱动程序见附件)