keil(汇编语言)软件操作
- 格式:docx
- 大小:825.55 KB
- 文档页数:8
keil C语言与汇编语言混合编程之
——在C语言中嵌入汇编语言模块
按以下三步可完成:
1、在C 文件中嵌入汇编代码模块以如下方式加入汇编代码:
#pragma ASM
Asm Code
#pragma ENDASM
2、在Project 窗口中包含汇编代码的C 文件上右键,选择“Options for ...”,
点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;单击确定退出。
3、根据选择的编译模式,把相应的库文件(如Small 模式(默认模式)时,是安装目录中Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件;
此时工程中如右图所示:
4、编译,即可生成目标代码。
以下为我写的流水灯调试程序,我已经在开发板上正常跑过。
#include <reg52.h>
#include<intrins.h>
void Delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=0;j<125;j++)
{;}
}
void main()
{
P1=0xfe;
while(1)
{
#pragma asm
MOV A,P1
RL A
MOV P1,A
#pragma endasm
Delay(1000);
}
}。
keil调试汇编语言首先要介绍一下Keil,Keil是一种专门用于嵌入式系统中的集成开发环境,它可以用来编译,调试和仿真嵌入式系统中的C和汇编程序。
在Keil中调试汇编语言需要掌握几个方面:1. Keil中的窗口在Keil中,有许多窗口可以用来查看或编辑代码,例如Project 窗口、Command窗口、Disassembly窗口等。
其中比较重要的是Debug 窗口,它可以用来监视程序的执行,包括CPU寄存器值、内存地址和指令执行情况等。
同时,它也可以用来设置断点、单步执行程序等调试操作。
2.调试命令在Keil中,有许多调试命令可以用来操作程序的执行。
例如,Step Over可以用来执行当前指令,并移动到下一条指令,Step Into 可以用来进入当前指令所调用的子程序中执行,而Step Out则可以用来退出当前子程序的执行。
除此之外,还有一些命令可以用来设置断点、修改寄存器值等调试操作。
3.汇编指令在调试汇编语言程序时,需要熟悉各种汇编指令的用途和语法。
例如,MOV可以用来将一个值从一个寄存器移动到另一个寄存器中,ADD可以用来将两个值相加并将结果存储到一个寄存器中等等。
同时,还需要了解一些特殊的汇编指令,例如INT可以用来触发中断,JMP可以用来跳转到指定的地址等。
4.内存映像调试汇编语言程序时,可以通过内存映像来查看程序在内存中的执行情况。
在Keil中,可以用Memory窗口来查看各个地址中的值,并根据需要修改它们。
同时,也可以使用Watch窗口来监视某个变量或内存地址的变化,并在程序执行时实时显示它们的值。
总体来说,调试汇编语言程序需要先熟悉Keil中的窗口和调试命令,同时还需要了解汇编指令的语法和用途,并能够使用内存映像来查看程序在内存中的执行情况。
此外,还需要有耐心和细心,仔细观察程序的执行情况,并通过断点和单步执行等操作来排查程序中的问题。
keil C语言与汇编语言混合编程1. C语言中嵌入汇编1、在C 文件中要嵌入汇编代码片以如下方式加入汇编代码:#pragma ASM; Assembler Code Here#pragma ENDASM2、在Project 窗口中包含汇编代码的C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;3、根据选择的编译模式,把相应的库文件(如Small 模式时,是Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件;4、编译,即可生成目标代码。
来个实例吧:#i nclude <reg51.h>{P2=1;#pragma asmMOV R7,#10DEL:MOV R6,#20DJNZ R6,$DJNZ R7,DEL#pragma endasmP2=0;}2 . 无参数传递的函数调用1.无参数传递的函数调用先来个例子:其中example.c和example.a51为项目中的两个文件***********************example.c*********************************************** extern void delay100();main(){delay100;}***********************example.a51*********************************************** ?PR?DELAY100 SEGMENT CODE; // 在程序存储区中定义段PUBLIC DELAY100; //声明函数RSEG ?PR?DELAY100; //函数可被连接器放置在任何地方DELAY100/P>MOV R7,#10DEL:MOV R6,#20DJNZ R6,$DJNZ R7,DELRETEND在example.c文件中,先声明外部函数,然后直接在main中调用即可。
实验一KEIL软件的使用及P1口控制一实验目的1、学习KEIL软件的使用方法及单片机实验平台2、学习P1口的控制方法3、学习延时子程序的编写和单片机延时计算方法二实验原理1、KEIL软件是德国Keil公司开发的基于Windows平台的单片机集成开发环境软件。
KEIL软件包括编译器、连接器、库管理器和仿真调试器,通过集成开发环境(μVision)将这些部分组合在一起。
2、P1口是一个八位的准双向I/O口,其中一位的内部结构如图所示,输出驱动电路有一只场效应管和一个上拉电阻组成。
每一根口线都可以分别定义成输入或输出线。
做输出线时,写入“1”,则Q’为“0”,T1截止,P1.X输出高电平,写入“0”,则Q’为“1”,T1导通,P1.X输出低电平。
做输入线时,必须先向该口线写“1”,使T1截止。
3、程序延时分析方法:延时=指令个数X机器周期机器周期=12÷nMHZ n为单片机时钟频率三实验要求与步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统1模块。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
(并口线与右侧的8个插孔是串联等效的。
)2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、(先接通仿真器电源再开启试验箱电源)打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
注:软件具体操作见附录实验(二):用P1.0、P1.1作输入接两个置位开关,P1.2、P1.3作输出接两个发光二极管。
实验名称 Keil 的使用与汇编语言上机操作指导教师罗志祥专业班级光电1406 姓名段昳晖学号 U2014***** 联系电话 137******一、任务要求1.掌握Keil环境的使用1)字节拆分、合并:调试e421.asm程序,观察相关寄存器和单元的内容。
2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。
2. 编写多个十六位数的加法程序有4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高八位在后。
要求:和存于R3(高八位)和R2(低八位),进位位存于R4.二、设计思路1.掌握Keil环境的使用1)字节拆分、合并利用汇编语言中的XCHD和SWAP两个语句来实现将八位二进制数拆分为两个四位二进制数并分别存储于不同的存储空间的功能,BCD码与30H相或(加上30H)得到ASCII 码。
将两个ASCII码和0FH相与(高四位清零)得到BCD码,利用SWAP语句将高位数放至高四位,将高位数和低位数相或可实现字节的合并。
2)数据块填充将R0用作计数器,DPTR用作片外数据指针,A作为原始数据来源,依顺序在片外的存储单元内容填充数据。
利用循环语句来减少程序长度,并控制填充单元个数为片外100H个。
利用RO的进位实现,当且仅当RO=00H时,结束循环赋值过程,此时R0已经经历了从00H-0FFH的过程,即计数周期为100。
同时赋值循环也历经了一百次,完成了将片外RAM 7000H-70FFH单元按数据依次递增规律的填充。
2.多个十六位数的加法程序以2个十六位无符号数相加为基础,将输入的4个无符号数(以a、b、c、d代表),两两相加,所得的2个和,再作为加数,求和,得到4个数的和。
其中需要注意的是进位的处理。
四数求和进位,不仅有两和数相加产出的进位还要加上产生两和数时的进位。
其中2个十六位无符号数相加的原理为,先对两数低位求和,提取出其进位,加到两数高位和中,并将高位求和进位,即两数求和进位保存下来。
Keil 软件的使用随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语言到逐渐使用高级语言开发,其中主要是以C 语言为主,市场上几种常见的单片机均有其C 语言开发环境。
这里以最为流行的80C51单片机为例来学习单片机的C 语言编程技术。
大家都有C 语言基础,但是编单片机程序,大家还得找专门的书来学习一下。
这里我们只介绍Keil 这种工具软件的用法。
学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。
Keil 软件是目最流行开发80C51系列单片机的软件,Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(µVision )将这些部份组合在一起。
下面我以一个实验举一个例子,一步一步学习Keil 软件的使用。
首先我们看硬件原理图:很明显,要点亮使发光二极管,必须使单片机的I/O 口P1.0输出低电平。
于是我们的任务就是编程序使P1.0输出地电平。
1. 使用Keil 前必须先安装。
安装过程简单,这里不在叙述。
2. 安装好了Keil 软件以后,我们打开它。
打开以后界面如下:3.我们先新建一个工程文件,点击“Project->New Project…”菜单,如下图,:3.选择工程文件要存放的路径,输入工程文件名LED, 最后单击保存.4.在弹出的对话框中选择CPU 厂商及型号5. 选择好Atmel 公司的AT89S52 后, 单击确定1.在接着出现的对话框中选择“是”。
5.新建一个C51 文件, 单击左上角的New File 如下图所示:6.保存新建的文件,单击SA VE如下图:2.在出现的对话框中输入保存文件名MAIN.C(注意后缀名必须为.C),再单击“保存”,如下图;7.保存好后把此文件加入到工程中方法如下: 用鼠标在Source Group1 上单击右键, 然后再单击Add Files to Group …Source Group 1'如下图:8.选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击 Close9.在编辑框里输入如下代码 :10.到此我们完成了工程项目的建立以及文件加入工程 , 现在我们开始编译工程如下图所示 : 我们先单击编译, 如果在错误与警告处看到 0 Error(s) 表示编译通过;11.生成 .hex 烧写文件,先单击Options for Target,如图;12.在下图中,我们单击 Output, 选中 Create HEX F。
Keil软件使用手册(本手册参考keil 4版本)一安装到网上下载一个安装包,里面必须包含以下内容:1:(安装包文件,圈选的文件为安装说明,请务必仔细阅读) 2:(打开安装文件)3:(点击下一步)4:(勾选同意,并点击下一步) 5:(浏览选择到你想安装的地方,然后选择下一步)6:(两个空可以随便打,不重要,填完后点击下一步)7:(正在安装中)8:(点击完成)9:(进入安装的文件夹,点击UV4)10:(打开Keil4的执行文件)11:(点击File,再选择License Management)Pic 12:(复制右上角的ID号)12:(打开注册机文件)13:(将复制的ID号粘贴在此处)14:(点击Generate,在上方会生成一组ID,复制下来)15:(将复制好的ID粘贴在圈选出,并点击Add LIC)16:(当你看见这两组单词,那么恭喜你,注册成功,准备开始你的奇妙程序之旅吧!)二新建工程1.单击Project,选择New Project2.选择保存位置,输入工程的名字3.选择CPU。
紧接着,Keil C51提示您选择CPU器件。
8051内核片机最早是由Intel公司发明的,后来其他厂商如Philips、Atmel、Winbond等先后推出其兼容产品,并在8051的基础上扩展了许多增强功能,根据芯片的实际情况,选择相应的器件(本例程选择Atmel公司下的AT89C52),如图:注:选择8051也可以,8051与8052有一点的差别,可以说8052是8051的升级版,主要有以下不同:1.内部RAM,8051单片机为128Byte(00H—7FH),8052单片机为56 Byte (00H—0FFH)2. 内部ROM,8051单片机为4KB,8052单片机为8KB3. 8051有两个Timer:T0和T1。
8052除了有T0和T1以外,还有一个Timer2 4。
8051有5个中断源8052有6个。
keil uvision5使用手册Keil uVision5使用指南Keil uVision5是一款功能强大且常用的集成开发环境(IDE),用于嵌入式系统的软件开发。
本文将为您提供关于Keil uVision5的使用指南。
1. 下载和安装在开始使用Keil uVision5之前,您需要从官方网站下载并安装该软件。
确保您下载的是最新版本,并根据系统要求进行安装。
2. 创建新项目打开Keil uVision5后,您可以通过选择“File”菜单中的“New Project”选项来创建新的项目。
为项目选择一个合适的名称和存储位置,然后选择您要使用的器件。
您还可以选择包含的启动文件和相关组件。
3. 配置项目设置在项目创建后,您可以通过“Project”菜单中的“Options for Target”选项来配置项目设置。
这将允许您设置编译器选项、调试器设置、优化选项以及目标设备的特定设置等。
4. 编写代码在Keil uVision5的“Workspace”窗口下,您可以创建源文件和头文件,以编写您的嵌入式系统应用程序。
您可以使用C或汇编语言进行开发,并可根据项目需求添加所需的函数和模块。
5. 进行编译和调试一旦您编写了代码,您可以通过单击工具栏上的“Build”按钮对代码进行编译。
如果没有错误和警告,您可以将生成的文件下载到目标设备上进行测试。
通过调试器界面,您可以设置断点、观察变量和内存以及执行单步调试等操作。
6. 仿真和模拟Keil uVision5还提供了仿真和模拟功能,以测试和验证您的代码在虚拟环境中的执行效果。
通过选择“Debug”菜单中的“Start/Stop Simulation”选项,您可以启动仿真,并监视代码的执行和数据的变化。
7. 优化和排错在代码编写和调试阶段,您可能会遇到一些错误和问题。
Keil uVision5提供了一些工具和功能,以帮助您优化代码并排除故障。
例如,您可以使用编译器优化选项来提高代码的效率,并使用内存和性能分析工具来分析代码的资源使用情况。
Keil 的调试命令、在线汇编与断点设置上一讲中我们学习了如何建立工程、汇编、连接工程,并获得目标代码,但是做到这一步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令、利用在线汇编、各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用。
一、常用调试命令 在对工程成功地进行汇编、连接以后,按Ctrl+F5或者使用菜单Debug->Start/Stop DebugSession 即可进入调试状态,Keil 内建了一个仿真CPU 用来模拟执行程序,该仿真CPU 功能强大,可以在没有硬件和仿真机的情况下进行程序的调试,下面将要学的就是该模拟调试功能。
不过在学习之前必须明确,模拟毕竟只是模拟,与真实的硬件执行程序肯定还是有区别的,其中最明显的就是时序,软件模拟是不可能和真实的硬件具有相同的时序的,具体的表现就是程序执行的速度和各人使用的计算机有关,计算机性能越好,运行速度越快。
进入调试状态后,界面与编缉状态相比有明显的变化,Debug 菜单项中原来不能用的命令现在已可以使用了,工具栏会多出一个用于运行和调试的工具条,如图1所示,Debug 菜单上的大部份命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令。
学习程序调试,必须明确两个重要的概念,即单步执行与全速运行。
全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。