实验一KEIL 51软件实验实验目的:1、掌握KEIL集成开发环境的使用2、掌握算术运算程序实验设备:计算机、KEIL51软件实验容:编程实现把片人RAM30H单元和40H单元两个16字节数相加,结果放于30H单元开始的位置处。
在KEIL51编译、连接、仿真调试。
实验步骤:一、运行KEIL51软件,出现图1所示KEIL 51主界面。
图1 KEIL 51主界面首先用Project菜单下的New Project命令建立项目文件,过程如下。
(1) 选择Project菜单下的New Project命令,弹出如图2所示的Create new Project对话框。
图2 Create New Project对话框(2) 在Create New Project对话框中选择新建项目文件的位置(最好一个项目建立一个文件夹如E:\project),输入新建项目文件的名称,例如,项目文件名为example,单击【保存】按钮将弹出如图3所示的Select Device for Target ‘Target 1’对话框,用户可以根据使用情况选择单片机型号。
KeiluVision2 IDE几乎支持所有的51核心的单片机,并以列表的形式给出。
选中芯片后,在右边的描述框中将同时显示选中的芯片的相关信息以供用户参考。
图3 Select Device for Target ‘Target 1’对话框(3) 这里选择atmel公司的AT89c51。
单击【确定】按钮,这时弹出如图4所示的Copy Standard 8051 StartupCode to Project Folder and Add File to Project确认框,C语言开发选择【是】,汇编语言开发选择【否】。
单击后,项目文件就创建好了。
项目文件创建后,在主界面的左侧的项目窗口可以看到项目文件的容。
这时只有一个框架,紧接着需向项目文件中添加程序文件容。
图4 Copy Standard 8051 Startup Code to ProjectFolder and Add File to Project确认框二、给项目添加程序文件当项目文件建立好后,就可以给项目文件加入程序文件了,Keil uVision2支持C语言程序,也支持汇编语言程序。
这些程序文件可以是已经建立好了的程序文件,也可以是新建的程序文件,这里我们新建的汇编程序文件后再添加。
(1) 选择文件菜单上的new命令,出现新建文本窗口,如图5所示。
图5 新建文本窗口在文本编辑窗口中输入加法程序。
存盘,假设文件名为add16.asm。
注意汇编程序文件扩展名为.asm,这时默认路径为工程文件夹。
参考程序如下:ORG 0000HLJMP MAINORG 1000HMAIN:MOV R0,#30HMOV R1,#40HMOV R2,#16CLR CLOOP: MOV A,R0ADDC A, R1MOV R0,AINC R0INC R1DJNZ R2,LOOPSJMP $END(2) 添加文件到项目中。
在项目管理器窗口中,展开Target1项,可以看到Source Group1子项。
右击SourceGroup1,在出现菜单中选择Add Files to Group ‘Source Group1’命令。
出现添加文件的窗口,加程序add16.asm如到项目中。
如图6所示。
注意文件类型要选择为*.a*。
图5 添加程序文件到项目三、编译、连接项目,形成目标文件当把程序文件添加到项目文件中,并且程序文件已经建立好存盘后,就可以进行编译、连接,形成HEX目标文件(只在keil 51中软件仿真可以不形成目标文件)(1)选择Project菜单下的Built Target命令(或快捷键F7) 编译、连接当前项目,编译、连接时,如果程序有错,则编译不成功,并在下面的信息窗口给出相应的出错提示信息,以便用户进行修改,修改后再编译、连接,这个过程可能会重复多次。
如果没有错误,则编译、连接成功,并且在信息窗口给出提示信息。
如图6所示。
图6 编译、连接后的显示图(2)如果要做硬件下载可硬件仿真,则要形成HEX目标文件,须先对输出选项进行相应的设置,设置后再进行编译连接。
方法如下:右击项目管理器窗口的Target1项,在右键菜单中选择下面的Options for Target ‘Target 1’命令,在Options for Target ‘Target 1’对话框选择Output选项卡,在该选项卡选中Create HEX File选项,选择生成HEX文件。
如图7所示。
图7 Options for Target ‘Target 1’对话框四、运行调试观察结果当项目编译、连接成功后,就可以运行它来观察结果,运行调试过程如下。
先用Debug菜单下的Start/Stop Debug Session命令(快捷键Ctrl+F5)启动调试过程,启动后可用Debug菜单下Go连续运行命令、Step单步运行、Stop running停止运行命令等运行程序观察结果。
本实验中进入启动调试后,先用View菜单下的memory window打开存储器窗口,在address框输入d:0x30,在存储器窗口中显示片数据存储器30h单元开始的数据。
如图8所示。
Memory window窗口图8 启动调试过程结果图在片数据存储器窗口中右击30h单元,在右键菜单中选择modify memory at D:0x30,从30h单元开始修改数据,在弹出的窗口中输入30h~3fh单元的数据,如图9和图10所示。
图9 修改片数据存储器的容图10 输入30h~3fh单元的数据用相同的方法修改40h~4fh单元的数据。
修改后选择run命令运行,运行后在存储器窗口可看到该程序运行的结果。
在存储器窗口的address框中还可输入c:0x地址显示程序存储器,x:0x地址显示片外数据存储器。
另外,可用View菜单下的symbols window命令查看特殊功能寄存器,用peripherals菜单下面的命令来查看并口、串口、定时/计数器和中断的相关容。
实验结论与问题:简要介绍KEIL 51使用过程。
实验二存块移动实验目的:1、掌握KEIL集成开发环境的使用2、掌握数据块移动程序实验设备:计算机、KEIL51软件实验容:编程实现将存数据块移动,在KEIL51编译、连接、仿真调试汇编语言源程序:ORG 00HSTART: MOV R0, #30HMOV R1, #00H ;设置源地址MOV R2, #40HMOV R3, #00H ;设置目标地址MOV R7, #0 ;设置计数值LOOP: MOV D PH, R0MOV DPL, R1 ;将源地址(3000H)赋DPTRMOVX A, DPTR ;取源地址中的数据MOV DPH, R2MOV DPL, R3 ;将目标地址(4000H)赋DPTRMOVX DPTR, A ;将源地址中的数据送到目标地址INC R1 ;源地址加1INC R3 ;目标地址加1DJNZ R7, LOOPLJMP $END输入源程序,编译无误后,用单步执行的方法,观察各个相应存储单元和寄存器中容的变化。
实验三乘法运算实验实验目的:1、掌握KEIL集成开发环境的使用2、掌握多字节乘法运算程序实验设备:计算机、KEIL51软件实验容:编程实现把R2R1(R2为高字节,R1为低字节)和R0中的无符号数相乘,结果放于R7R6R5(R7为最高位)。
在KEIL51编译、连接、仿真调试实验步骤:ORG 0000HLJMP MAINORG 0030HMAIN: MOV R1,#0FFHMOV R2,#0FFHMOV R0,#11HMOV A,R1MOV B,R0MUL ABMOV R6,BMOV R5,ACLR CMOV A,R2MOV B,R0MUL ABMOV R7,BADDC A,R6MOV R6,AMOV A,R7ADDC A,#00HMOV R7,ASJMP $END实验结论及问题:给R2R1和R0赋值方法有哪些?MOV Rn,AMOV Rn,01H 立即数寻址MOV Rn,#01H 直接赋值。
三种情况实验四并行接口实验实验目的:1、掌握KEIL集成开发环境的使用2、掌握Proteus仿真软件的使用3、学会使用Proteus和KEIL软件进行系统仿真调试4、掌握单片机并行接口的结构与使用实验设备:计算机、KEIL51软件、PROTEUS软件实验容:在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。
在KEIL 51中编程序,形成HEX文件,在PROTEUS中设计硬件,下载程序,运行看结果。
实验步骤:一、打开PROTEUS的ISIS软件,如图10所示。
新建电路图文件,设文件保存到e:\projectio下面,文件基本名为io,扩展名默认。
选择元件图10 ISIS窗口图二、在component mode模式下单击选择元件按钮P,打开元件选择对话框,如图11所示。
图11 元件选择窗口在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图10的device列表栏。
在这里依次添加元件单片机80c51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED。
如图12所示。
图12 添加元件的device列表栏三、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作。
电源与地在工具按钮的Terminals mode中选取。
如图13所示。
图13 放置元件图四、连接导线,如图14所示。
连接后存盘。
图14 连接元件图五、在keil 51中设计软件程序,形成HEX文件。
保存软件项目到电路文件相同的文件夹e:\projectio。
设计软件程序如容一,过程略。
参考程序如下:ORG 0000HLJMP MAINORG 0100HMAIN:MOV A,#01HLOOP:MOV P2,ALCALL DELAYRL ASJMP LOOPSJMP $DELAY:MOV R2,#10HDELAY1:MOV R3,#0FFHDJNZ R3,$DJNZ R2,DELAY1RETEND六、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的program file框中选择下载到80C51芯片中的程序。
这里是同一个文件夹下面的io.hex文件。
如图14所示。
图14 下载程序到单片机七、单击仿真运行按钮play,运行程序。