- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 集成开发环境keil c51的使用与调试
Keil C51 u Vision2 是德国Keil公司开发的基于Windows环境的8051软件开发平台,它集项目管理、源程序编辑、程序调试于一体,是一个强大的集成开发环境。
u Vision2 支持Keil的各种8051工具,包括:C编译器,宏汇编译器、连接/定位器及Object-hex转换程序,可以帮助用户快速有效的实现嵌入式系统的设计与调试。
硬件安装
1、连接51CPU板,在实验箱右下角有三个插座:J1、J2、J3,用来连接51CPU板,在51CPU板上有一个小拨码开关:J18,是单片机的EA脚,是用来选择读片内还是片外ROM的,拨向左边为读片内ROM;拨向右边为读片外ROM。
2、KEIL仿真器与实验箱的连接:将KEIL仿真器40芯的排线连到51CPU板的40芯插座上,仿真器的USB连接线连到微机的USB口。
3、八段数码管右上角的两个拨码小开关是用来设置工作模式的,将两个拨码小开关同时拨向右边是选择51单片机工作模式,此时应拨向右边。
新建一个项目文件
首先点击 Keil uVision2 ,进入uVision2界面。点击工具栏Project选项中的New Project,准备开始建立自己的项目。
输入工程文件名称,并选择保存工程文件的目录。
为项目文件选择一个目标器件(如ATMEL89C51),如图所示。
用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择“为目标‘目标1’设置选项”如下图所示。
在“为目标‘目标1’设置选项”中,点击“调试”菜单,在此菜单中可选择是使用硬件仿真,还是软件仿真,连接实验箱做实验时选择硬件仿真,点击硬件仿真选项后面的[设置]选项,在此对对话框中选择串口和波特率,串口根据所连电脑来决定。波特率为38400。。
选择串口选择波特率硬件仿真软件仿真
选择串口
选择波特率
硬件仿真
软件仿真
点击“文件/新建”创建源程序文件并输入程序代码。
在文本框中输入原程序,如下图所示
点击“文件/保存“对程序进行保存
用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择添加文件到原代码组,如下图所示
在弹出的添加文件框中,选择需要添加到项目中的文件
点击编译连接的图标,对项目文件进行编译
点击“调试/启动/停止调试”进入调试界面
在调试界面中可以对程序进行单步或者全速运行的调试
连机/停止单步全速运行
连机/停止
单步
全速运行
若要查看内存中的数据,点击“视图/存储器窗口”
在此地址框中,输入不同的指令查看内部数据
如果需要查看一些内部数据,在菜单栏点击[视图/存储窗口]。
C:0X地址 显示程序存储区数据
X:0X地址 显示数据存储区中数据
D:0X地址 显示CPU内部存储区中数据
注意:仿真器使用者使用时应注意:
Keil C仿真器用户程序在全速运行时,如果需暂停运行,请按实验仪键盘“RST”,此时仿真器存储器数据清零。如果您要再次运行您所编写的程序,就必须重新装载运行。
1.3 实验指导使用说明
点击“帮助/使用手册”打开“HK系列实验指导”
选择“软件实验”右边的下三角可选择实验类别或者芯片查询
点击实验目的、实验电路、实验连线、实验程序可查看关于实验的具体介绍
在芯片查询中,可查看常用芯片的管脚定义
实验二 程序设计实验
C51中进行绝对地址访问:
在头文件中加入 #include absacc.h
可以使用 CBYTE XBYTE PWORD DBYTE CWORE XWORD PBYTE DWORD 指向内存空间的绝对地址。(具体看课本Page 71~72)
使用指针进行绝对地址访问(具体看课本Page68~71,课后用指针对下面实验程序进行修改)
例如:
#define ADDR XBYTE[0x8000]
定义ADDR为 片外RAM地址0x8000的内容
Segment = CBYTE[0x0002]
将程序存储器的0002H地址的内容赋值给Segment
Segment = XBYTE[0x0002]
将向片外RAM的0002H地址的内容赋值给Segment
XBYTE[0x0002]=57
将57赋值给片外RAM0002H绝对地址
实验1:将片外8000H中的内容拆开,高位送8001H地址低位,低位送8002H的地址低位,8001H和8002H地址单元的高位清零。
#include reg51.h
#include absacc.h
#define a0 XBYTE[0x8000]
#define a1 XBYTE[0x8001]
#define a2 XBYTE[0x8002]
void main()
{
a0 = 0xab;
a1 = a0 0x0
文档评论(0)